我正在使用" GeckoFx-29.0-0.6"在Windows窗体应用程序中使用firefox Web浏览器控件。
当我运行具有GeckoFX浏览器控件的Windows窗体应用程序时,每个工作都正常。
我在我的应用程序中使用以下代码,
Gecko.Xpcom.Initialize("xulrunner/");
我使用xcopy加载带有xulrunner文件夹的bin文件夹。所以在这种情况下,xul runner是从找到应用程序.exe的同一个loaction中加载的。
当我对应用程序进行wix设置时,我正在执行相同的过程,我将xulrunner文件夹放在与应用程序.exe相同的位置。但是应用程序无法调用Windows窗体。它显示消息"无法加载DLL' xul'"。
我通过更改设置来解决此问题,以便将xulrunner文件夹复制到c:/ windows / system32文件夹位置。当我这样做时,应用程序在某些机器上成功运行,但在其他机器中不起作用。
有什么方法可以解决这个问题吗?这样我就不需要将xulrunner放在system32文件夹中了?
答案 0 :(得分:2)
您可以尝试提供xulrunner目录的完整路径。做类似的事情:
var programDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
Gecko.XpCom.Initialize(Path.Combine(programDirectory, "xulrunner");
这将在安装应用程序时起作用,并且如果您已将xulrunner放在输出目录中。如果您不想在那里复制它,那么您将需要使上述代码更加智能,以便当您从Visual Studio运行时,它可以找到您放置它的xulrunner
我们在多个条件下智能查找文件的类FileLocator是开源的,您可以抓取并使用它。
答案 1 :(得分:1)
我浪费了很多时间来解决问题并发现错误是由于geckofix和xulruneer版本不匹配造成的。它们都应该是一样的。查看此链接以了解更多https://bitbucket.org/geckofx/geckofx/wiki/Version_lists
答案 2 :(得分:1)
如果在使用Xpcom.Initialize("Firefox64");
之前忘记运行行GeckoWebBrowser
,则会收到该错误。
答案 3 :(得分:0)
抬起头,我知道这则帖子很旧,但是我发现了一些东西。如果您使用Visual Studio(在撰写本文时,我拥有的版本是2019),并且您通过NuGet添加了Geckofx45.64,则还有一个Geckofx45.64.Windows软件包。当您从Visual Studio NuGet Manager阅读此程序包的说明时,它说:
这仅应用于构建Geckofx ...请勿使用 如果您只想在您的应用程序中包含Geckofx,则将其打包。
好吧,我还是下载了它,并检查了此软件包的内容,并注意到它具有Geckofx.45在运行时抱怨缺少的所有文件(初始化)。因此,我添加了该软件包,Geckofx现在完全按照其指示的方式工作。
可将壁虎嵌入C#应用程序中的库。
示例用法:
[STAThread]
static void Main(string[] args)
{
Xpcom.Initialize("Firefox64");
var geckoWebBrowser = new GeckoWebBrowser {Dock = DockStyle.Fill};
Form f = new Form();
f.Controls.Add(geckoWebBrowser);
geckoWebBrowser.Navigate("www.google.com");
Application.Run(f);
}
希望这会有所帮助。这个让我转了一圈。