【问题标题】:How to deploy a Firefox extension in XULRunner/GeckoFX?如何在 XULRunner/GeckoFX 中部署 Firefox 扩展?
【发布时间】:2015-01-07 10:34:46
【问题描述】:

我开发了一个二进制扩展,可以在 Firefox 下正常工作,但无法在 XULRunner/GeckoFX 中部署它。该扩展没有 UI,只是为我们的主应用程序(在 .NET 中)提供了一个 API。

我能找到的所有教程都解释了如何将它们安装到 XULRunner 应用程序中。但是通过使用 GeckoFX,XULRunner 嵌入在我的项目中运行,所以我没有 XULRunner 应用程序。

我已经尝试将已安装扩展的目录从 Firefox 的配置文件目录复制到 XULRunner 的配置文件,并为 GeckoFX 使用 FF 配置文件目录,但均无济于事。

我目前的怀疑是install.rdf 中的扩展名targetApplication 需要针对 GeckoFX 进行调整,但正确的 id 是什么?

由于我们正在部署嵌入在我们项目中的 GeckoFX/XULRunner,我不需要扩展管理器,静态部署就足够了。

【问题讨论】:

    标签: xulrunner geckofx


    【解决方案1】:

    我终于设法让它工作了。这是我所做的:

    首先,使用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

    【讨论】:

    • dir 是 .xpi 文件的路径吗?我正在寻找将附加组件安装到GeckoFX 的方法,但找不到方法。
    • 来自 bitbuchet 的另一个复制粘贴答案不起作用。你找到解决办法了吗?
    • 有人找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多