Erreur xul.dll introuvable lors de l'utilisation du contrôle de navigateur GeckoFX - c #, wix, xulrunner, geckofx

J'utilise "GeckoFx-29.0-0.6" pour avoir un contrôle de navigateur Web firefox dans l'application Windows Form.

Quand je cours mon application de forme de Windows qui a le contrôle de navigateur de GeckoFX tout fonctionne bien.

J'utilise le code suivant dans mon application,

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

et j'utilise xcopy pour charger le dossier bin avec le dossier xulrunner. Donc, dans ce scénario, le coureur xul est chargé à partir de la même loaction où l'application .exe est trouvée.

Quand je fais la configuration wix de ma demande, je suisfaire le même processus, j'ai dossier xulrunner au même endroit que l'application .exe. Mais l'application n'est pas capable d'invoquer le formulaire Windows. Son montrant le message "impossible de charger la DLL" xul "".

J'ai résolu ce problème en changeant ma configurationque le dossier xulrunner est copié dans l'emplacement du dossier c: / windows / system32. Quand je le fais, l'application fonctionne avec succès sur certaines machines mais ne fonctionne pas chez d'autres.

Y-a-t-il une façon de résoudre ceci? de sorte que je n'ai pas besoin de mettre le xulrunner dans le dossier system32?

Réponses:

2 pour la réponse № 1

Vous pouvez essayer de donner le chemin complet du répertoire xulrunner. Faites quelque chose comme:

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

Cela fonctionnera lorsque l'application est installée, et siVous avez placé xulrunner dans votre répertoire de sortie Si vous ne voulez pas le copier, alors vous voudrez rendre le code ci-dessus un peu plus intelligent pour que lorsque vous êtes en train de tourner à partir de Visual Studio, il peut localiser xulrunner où vous l'avez placé.

Notre classe pour trouver intelligemment des fichiers dans un certain nombre de conditions, FileLocator, est open source, vous pouvez le saisir et l'utiliser.


1 pour la réponse № 2

J'ai perdu beaucoup de temps à essayer de résoudre le problème et j'ai constaté que l'erreur était due à la non-concordance de la version de geckofx et de xulrunner. ils devraient tous les deux être identiques. checkout ce lien pour comprendre plus https://bitbucket.org/geckofx/geckofx/wiki/Version_lists


0 pour la réponse № 3

Cela fonctionne aussi

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

Menu