我正在尝试将 npapi 打包到我正在编写的 firefox 插件中。如果我将插件安装到 ~/Library/Internet Plug-ins/ 它一切正常,但我不能让它与 xpi 一起安装。我在插件目录的根级别有插件,但我不知道如何告诉 firefox 用 xpi 安装它。
有小费吗?
我正在尝试将 npapi 打包到我正在编写的 firefox 插件中。如果我将插件安装到 ~/Library/Internet Plug-ins/ 它一切正常,但我不能让它与 xpi 一起安装。我在插件目录的根级别有插件,但我不知道如何告诉 firefox 用 xpi 安装它。
有小费吗?
将插件作为或类似的方式放入您的 XPI 包中plugins/plugin.dylib
正是您需要做的。Firefox 不会做任何特别的事情来安装这个插件,它会留在扩展目录中——但它应该在那里被拾取。您可以打开about:plugins
页面(或插件管理器的插件选项卡)查看插件是否真的安装。
另一件事很重要:您的安装清单(install.rdf
) 需要包含以下行:
<em:unpack>true</em:unpack>
这建议 Firefox 在安装时解压缩您的 XPI 包。默认情况下,它将作为单个压缩文件而不是目录安装 - 但是不能从压缩文件加载插件。
有关更多详细信息,请参阅文档。
遗憾的是,新的 firefox SDK 不允许自动安装 npapi 插件。“可引导”的附加组件不是有效的插件源。据我所知,bootstrapable 意味着它们只是从将元素动态注入浏览器的脚本中加载的。您需要使用旧的叠加方法,您只需定义叠加或其他内容,但老实说,我从未使用过旧方法。
如果您想将插件添加到 SDK 插件中,恐怕这是不可能的,正如 msfeldstein 指出的那样。即使您创建插件目录并在 中设置,如果设置 <em:unpack>true</em:unpack>
了install.rdf
,firefox 也不会加载插件<em:bootstrap>true</em:bootstrap>
。
作为一种解决方法,您可以按照此处所述制作一个捆绑 xpi,其中包含您的插件和另一个仅作为插件容器的 xpi。这样您就可以同时安装 sdk 插件和插件。
我使用本指南:http ://devilsworkshop.org/shortest-tutorial-for-firefox-extensiontoolbar-development/ ,使用插件示例http://pub.rtcamp.com/firefox/extensions/googbar.zip(更改压缩到 xpi)。对于 npPlugin.dll 创建文件夹 plugins 并将您的插件库放在那里。