xul.dll nie znaleziono błędu podczas korzystania z kontrolki przeglądarki GeckoFX - c #, wix, xulrunner, geckofx

Używam "GeckoFx-29.0-0.6" do kontroli przeglądarki Firefox w aplikacji Windows Form.

Kiedy uruchamiam moją aplikację do tworzenia formularzy Windows, która ma kontrolę przeglądarki GeckoFX, wszystko działa poprawnie.

Używam następującego kodu w mojej aplikacji,

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

i używam xcopy do załadowania folderu bin z folderem xulrunner. Tak więc w tym scenariuszu Xul Runner jest ładowany z tej samej lokalizacji, w której znajduje się plik .exe aplikacji.

Kiedy robię konfigurację wix mojej aplikacji, jestemwykonując ten sam proces, mam folder xulrunner w tej samej lokalizacji co aplikacja .exe. Ale aplikacja nie może wywołać formularza okna. Pokazuje komunikat "nie można załadować biblioteki DLL" xul "".

Rozwiązałem ten problem, zmieniając moją konfiguracjęże folder xulrunner jest kopiowany do lokalizacji folderu c: / windows / system32. Kiedy to zrobię, aplikacja działa z powodzeniem na niektórych komputerach, ale nie działa w inny sposób.

Czy istnieje sposób, aby rozwiązać ten problem? tak, że nie muszę umieszczać xulrunnera w folderze system32?

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz spróbować podać pełną ścieżkę do katalogu xulrunner. Zrób coś takiego:

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

To zadziała, gdy aplikacja zostanie zainstalowana i jeśliumieściłeś xulrunner w twoim katalogu wyjściowym. Jeśli nie chcesz przeszkadzać w kopiowaniu tam, będziesz chciał uczynić powyższy kod trochę mądrzejszym, tak aby po uruchomieniu z Visual Studio mógł zlokalizować xulrunner, w którym umieściłeś go.

Nasza klasa do inteligentnego znajdowania plików w różnych warunkach, FileLocator, jest open source, możesz go pobrać i używać.


1 dla odpowiedzi nr 2

Zmarnowałem dużo czasu, próbując naprawić problem i odkryłem, że błąd wynika z niedopasowania wersji geckofix i xulruneer. obaj powinni być tacy sami. Zapłać ten link, aby zrozumieć więcej https://bitbucket.org/geckofx/geckofx/wiki/Version_lists


0 dla odpowiedzi № 3

To też działa

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

Menu