在使用GeckoFX浏览器控件时未发现错误
本文关键字:未发现 错误 控件 浏览器 GeckoFX | 更新日期: 2023-09-27 18:06:06
我使用"GeckoFx-29.0-0.6"来控制Windows窗体应用程序中的firefox web浏览器。
当我运行有GeckoFX浏览器控制的Windows窗体应用程序时,一切都很好。
我在我的应用程序中使用以下代码,
Gecko.Xpcom.Initialize("xulrunner/");
和我使用xcopy加载bin文件夹与xulrunner文件夹。因此,在这种情况下,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运行时,它就可以找到你放置它的地方。
我们的类FileLocator可以在许多条件下智能地查找文件,它是开源的,您可以获取并使用它
我浪费了很多时间试图修复这个问题,发现这个错误是由于geckofix和xulruneer版本不匹配。它们应该是一样的。点击此链接了解更多https://bitbucket.org/geckofx/geckofx/wiki/Version_lists
提醒一下,我知道这篇文章很老了,但我发现了一些东西。如果您使用Visual Studio(2019年是我的版本,在这篇文章发表时),并且您通过NuGet添加了Geckofx45.64,那么还有一个Geckofx45.64。Windows软件包。当你从Visual Studio NuGet Manager中阅读这个包的描述时,它说:
这应该只用于构建Geckofx…不要使用这个
如果你只是想在你的应用程序中包含Geckofx。
好吧,我还是下载了它,并检查了这个包的内容,并注意到它包含了Geckofx.45在运行时(init)抱怨丢失的所有文件。因此,我添加了这个包,现在Geckofx完全按照它所指示的方式工作了。
允许在c#应用中嵌入gecko的库。
使用例子:
[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);
}
希望这对你有帮助。
当您在使用GeckoWebBrowser
之前忘记运行Xpcom.Initialize("Firefox64");
行时,您将得到该错误。
Gecko.Xpcom.Initialize(Environment.CurrentDirectory + "''xulrunner");