xul.dll nicht gefunden Fehler bei der Verwendung von GeckoFX Browser-Steuerelement - c #, wix, xulrunner, geckofx

Ich benutze "GeckoFx-29.0-0.6" für eine Firefox-Browsersteuerung in Windows Form-Anwendung.

Wenn ich meine Windows-Formular-Anwendung, die GeckoFX-Browser-Kontrolle haben, alles funktioniert funktioniert gut.

Ich verwende den folgenden Code in meiner Anwendung,

Gecko.Xpcom.Initialize("xulrunner/");

und ich benutze xcopy, um den bin-Ordner mit xulrunner-Ordner zu laden. In diesem Fall wird der Xul-Runner von der gleichen Stelle geladen, in der die Anwendung .exe gefunden wurde.

Wenn ich wix Setup meiner Anwendung mache, bin ichden gleichen Prozess, habe ich xulrunner Ordner am selben Ort wie Anwendung .exe. Aber die Anwendung kann das Windows-Formular nicht aufrufen. Es zeigt die Meldung "Kann DLL nicht laden" xul "".

Ich habe dieses Problem gelöst, indem ich mein Setup geändert habeDer Ordner xulrunner wird in den Ordner c: / windows / system32 kopiert. Wenn ich dies tue, funktioniert die Anwendung in einigen Maschinen erfolgreich, funktioniert aber nicht in anderen.

Gibt es eine Möglichkeit, dies zu lösen? so dass ich den xulrunner nicht in den Ordner system32 legen muss?

Antworten:

2 für die Antwort № 1

Sie können versuchen, den vollständigen Pfad zum xulrunner-Verzeichnis anzugeben. Mach etwas wie:

var programDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Gecko.XpCom.Initialize(Path.Combine(programDirectory, "xulrunner");

Das funktioniert, wenn die App installiert ist und wennSie haben xulrunner in Ihr Ausgabeverzeichnis gelegt. Wenn Sie nicht möchten, dass Sie es dort hineinkopieren, dann sollten Sie den obigen Code ein wenig schlauer machen, damit er, wenn Sie nur von Visual Studio aus laufen, ihn finden kann Xulrunner, wo Sie es platziert haben.

Unsere Klasse für das intelligente Finden von Dateien unter einer Reihe von Bedingungen, FileLocator, ist Open Source, Sie können es greifen und verwenden.


1 für die Antwort № 2

Ich habe viel Zeit verschwendet, um das Problem zu beheben, und habe festgestellt, dass der Fehler auf die Nichtübereinstimmung von Geckofx und Xulrunner zurückzuführen ist. sie sollten beide gleich sein. Überprüfe diesen Link, um mehr zu verstehen https://bitbucket.org/geckofx/geckofx/wiki/Version_lists


0 für die Antwort № 3

Das funktioniert auch

Gecko.Xpcom.Initialize(Environment.CurrentDirectory + "\xulrunner");