在使用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文件夹中了?

在使用GeckoFX浏览器控件时未发现错误

您可以尝试提供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");