c# - 使用 GeckoFX 浏览器控件时找不到 xul.dll 错误

标签 c# wix xulrunner geckofx

我正在使用“GeckoFx-29.0-0.6”在 Windows 窗体应用程序中使用 firefox web 浏览器控件。

当我运行具有 GeckoFX 浏览器控件的 Windows 窗体应用程序时,一切正常。

我在我的应用程序中使用以下代码,

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

并且我使用 xcopy 加载包含 xulrunner 文件夹的 bin 文件夹。因此,在这种情况下,xul 运行器是从找到应用程序 .exe 的同一位置加载的。

当我对我的应用程序进行 wix 设置时,我正在执行相同的过程,我在与应用程序 .exe 相同的位置有 xulrunner 文件夹。但是应用程序无法调用 Windows 窗体。它显示消息“无法加载 DLL 'xul'”。

我通过更改我的设置解决了这个问题,这样 xulrunner 文件夹被复制到 c:/windows/system32 文件夹位置。当我这样做时,该应用程序在某些机器上成功运行,但在其他机器上无法运行。

有什么办法可以解决吗?这样我就不需要将 xulrunner 放在 system32 文件夹中了?

最佳答案

您可以尝试提供 xulrunner 目录的完整路径。做这样的事情:

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

如果您已将 xulrunner 放置在输出目录中,那么在安装应用程序时,这将起作用。如果您不想费心将它复制到那里,那么您需要使上面的代码更智能一些,以便当您刚从 Visual Studio 运行时,它可以在您放置它的位置找到 xulrunner。

我们在多种条件下智能查找文件的类,FileLocator , 是开源的,您可以获取并使用它。

关于c# - 使用 GeckoFX 浏览器控件时找不到 xul.dll 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23951477/

相关文章:

c# - 仅匹配不以零开头的数字的正则表达式

c# - 每次单击按钮时如何在不同列的一行中添加数据

wix - 在WiX中静默安装根证书

c - 什么 API 取代了 gtkembedmoz?

javascript - 在 XULRunner 中禁用 window.onbeforeunload 和 window.onunload

c++ - Firefox XULRunner 还是 TriXul?

c# - C#中的音频描述符MFCC

c# - 从 Java 到 C++ 或 C#

checkbox - Burn:如何将复选框值存储在变量中

WIX 安装 Windows 服务