我开发了一个在 Firefox 下运行良好的二进制扩展,但无法在 XULRunner/GeckoFX 中部署它。该扩展没有 UI,只是为我们的主应用程序(在 .NET 中)提供了一个 API。
我能找到的所有教程都解释了如何将它们安装到 XULRunner 应用程序中。但是通过使用 GeckoFX,XULRunner 在我的项目中嵌入运行,所以我没有 XULRunner 应用程序。
我已经尝试将已安装扩展的目录从 Firefox 的配置文件目录复制到 XULRunner 的配置文件,并且还尝试将 FF 配置文件目录用于 GeckoFX,但均无济于事。
我目前的怀疑是 targetApplication
中扩展的 install.rdf
需要针对 GeckoFX 进行调整,但正确的 id 是多少?
由于我们在我们的项目中部署了 GeckoFX/XULRunner,我不需要扩展管理器,静态部署就足够了。
最佳答案
我终于设法让它工作。这是我所做的:
首先,使用 Xpcom.ComponentRegistrar.AutoRegister()
添加部署扩展的位置:
void RegisterExtensionDir(string dir)
{
Console.WriteLine("Registering binary extension directory: " + dir);
var chromeDir = (nsIFile)Xpcom.NewNativeLocalFile(dir);
var chromeFile = chromeDir.Clone();
chromeFile.Append(new nsAString("chrome.manifest"));
Xpcom.ComponentRegistrar.AutoRegister(chromeFile);
}
其次,不要 而不是 在扩展的
chrome.manifest
中使用 ABI 标志。所以代替binary-component components/GeckoScraper.dll ABI=WINNT_x86-msvc
我用了
binary-component components/GeckoScraper.dll
我认为这是 GeckoFX 29 的一个错误,并为此创建了一个 issue。
关于xulrunner - 如何在 XULRunner/GeckoFX 中部署 Firefox 扩展?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27817445/