vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Problem mit *.chm unter Vista 
Autor: VbWilli
Datum: 10.03.09 10:26

Hallo FZelle,

danke für den Hinweis. Ich habe den Fehler mittlerweile gefunden, nachdem ich ich an allen relevanten Stellen temporär Meldungen eingebaut hatte, um die Environment-Variablen anzeigen zu lassen. Beim Debuggen kommt man ja nicht dahinter, da es nur in der kompilierten Version im Programmordner auftritt.

Es hat auch was mit dem Ordner Program Files und dem fiktiven Ordner Programme zu tun, den es ja gar nicht gibt, sondern der ja nur ein Zeiger auf Program Files ist.

Es liegt tatsächlich an zwei Fehlern, einmal im Hilfebrowser von Vista und einmal im .NET Framework in allen Versionen:

1.) Kann der Hilfebrowser von Vista nichts mit dem Ordnernamen Programme anfangen, er ist also nicht ausreichend genug ins System eingebunden, so dass er nicht weiß, dass dies nur ein Zeiger auf Program Files ist. Und das sollte er eigentlich, da er zum System gehört. Er sucht die CHM tatsächlich unter Programme\... und macht dann gar nichts. Unter XP startet er wenigstens und zeigt an, dass er die Hilfedatei nicht anzeigen kann.

2.) Gibt es einen "gemeinen" Fehler im .NET Framework. Man ermittelt ja im Prog über die Environment-Variablen des Systems, in welchem Ordner das Prog gerade ausgeführt wird. Wurde das Prog über eine extern (also hier vom Setup) erstellte Verknüpfung gestartet, liefert das Framework den Ordnernamen Programme\... zurück (dies passiert auch, wenn man eine Verknüpfung manuell erstellt, also nicht per Drag&Drop). Startet man das Prog direkt in seinem Ordner per Doppelklick auf die exe oder zieht direkt von der exe eine Verknüpfung per Drag&Drop auf den Desktop, liefert das Framework zur Laufzeit den tatsächlichen Ordner Program Files\... zurück, mit dem der Hilfebrowser auch was anfangen kann. Daher funktionierte der Hilfeaufruf mal und mal nicht, je nachdem, wie das Prog gestartet wurde.


Abhilfe schafft hier wiederrum leider nur eine Krücke, da man sich auf den von der Environment-Variablen zurück gelieferten Path nicht verlassen kann: In der Sub, die zentral die Hilfeaufrufe steuert, frage ich nun erst mal ab, ob meine Hilfedatei unter Program Files\... existiert. Wenn ja, lass ich "Programme" ersetzen:

        'In der Load-Prozedur der Applikation
 
        ....
 
        'Beide Varianten liefern die unterschiedlichen Egebnisse
        'Über My.Namespace:
        AppSettings.AppPath = My.Application.Info.DirectoryPath
        'oder über Sytem.Reflection
        Dim fi As New IO.FileInfo( _
          System.Reflection.Assembly.GetExecutingAssembly.Location)
        AppSettings.AppPath = fi.DirectoryName
 
        ....
 
 
        'In der Sub, die die Hilfeaufrufe steuert
 
        ....
 
        Dim helpfile As String = AppSettings.AppPath & "\GTA.chm"
 
        If File.Exists(helpfile.Replace("Programme", "Program Files")) = True _
          Then
             helpfile = helpfile.Replace("Programme", "Program Files")
        End If
 
        ....
Ist nicht wirklich schön, aber läuft sicher.

Gruß
VbWilli
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit *.chm unter Vista1.202VbWilli09.03.09 15:18
Re: Problem mit *.chm unter Vista759ModeratorFZelle10.03.09 09:28
Re: Problem mit *.chm unter Vista826VbWilli10.03.09 10:26

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel