我开发了一个在Firefox下运行良好的二进制扩展,但无法管理在XULRunner / GeckoFX中部署它。扩展程序没有UI,只是为我们的主应用程序(在.NET中)提供API。
我能找到的所有教程都解释了如何将它们安装到XULRunner 应用程序中。但是通过使用GeckoFX,XULRunner在我的项目中运行嵌入式,因此我没有XULRunner应用程序。
我已经尝试将已安装的扩展程序目录从Firefox的配置文件目录复制到XULRunner的配置文件,并且还使用了FF配置文件目录的GeckoFX,两者都无济于事
我目前的怀疑是targetApplication
中install.rdf
的扩展程序需要针对GeckoFX进行调整,但正确的ID是什么?
由于我们正在部署嵌入在我们项目中的GeckoFX / XULRunner,因此我不需要扩展管理器,静态部署就足够了。
答案 0 :(得分:3)
我终于设法让它发挥作用。这就是我的所作所为:
首先,使用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。