可能这与在 Firefox 扩展中使用由 Firebreath 生成的插件有关?; 但是,我的问题可能更具体,所以这里......
我正在使用 Linux (Ubuntu 11.04),并且使用 FireBreath 构建了一个 Mozilla/Firefox (Firefox 7) 插件。这个平台上生成的插件是一个“ npXXX.so
”文件,我在~/.mozilla/plugins
. 然后,我编写了一个使用该插件的扩展程序——除了符号链接,似乎不需要其他任何东西——一切似乎都可以正常工作:)
所以,知道“ firefox 支持通过 XPI 安装你的插件。FireBreath 团队不建议这样做”,现在我仍然想将扩展和插件打包成一个 XPI 文件。所以,我正在阅读一些关于可安装包的结构 - MDN的内容,我可以看到这两种可能性:
/components/* XPCOM components (*.js, *.dll), and interface files from *.xpt (>=1.7)
...
/plugins/* NPAPI Plugins (>=1.8)
...
binary-component components/linux/mycomponent.so ABI=Linux_x86-gcc3
现在,它说:“不应该使用旧的基于 XPCOM 和 LiveConnect 的插件 API。 ”,所以我猜不/components
应该使用“ ”目录(即使它在上面的页面中作为示例给出)。而且我在任何地方都找不到明确的说明,但我猜 FireBreath 构建了 NPAPI 插件 - 所以大概“ ”是要走的路。(也提到了“ ”,但它清楚地表明它已被 Firefox > 3.6 弃用)。/plugins
/platform
好的,到目前为止一切顺利......所以我尝试将插件文件复制到plugins/linux
扩展目录中:
cp -L ~/.mozilla/plugins/npXXX.so plugins/linux/
...然后将以下内容插入chrome.manifest
:
binary-component plugins/linux/npXXX.so ABI=Linux_x86-gcc4
...然后我将整个扩展目录(包括插件)压缩为 .xpi,尝试将其安装在另一台计算机上。在那里,.xpi 成功安装,.so 文件确实在配置文件的extensions/XXX/plugins/linux/
目录下解压缩 - 并且扩展的每个跨平台(javascript)代码都可以正常工作;除了找不到插件。
现在,当然,用户可以自己将扩展符号链接.so
到~/.mozilla/plugins/
; 但是,我想饶恕那个用户:)
我将如何处理这种包装 - 有推荐的方法吗?
非常感谢您的任何答案,
干杯!
编辑:发现将插件作为工具包捆绑发布 - MDN仅声明install.rdf
,并且plugins/obj.so
需要 a;然后我发现Running Quake Live in Firefox 4, 5 and 6 on Linux [fixes inside],指的是QuakeLivePlugin_433-modded_ff10.xpi,并且确实遵循如此简单的结构。如果我安装它,我会得到一个Quake 扩展和 Quake 插件(即使错误控制台抱怨“无法读取 chrome 清单文件 '/path/to/extensions/quakeliveplugin@idsoftware.com/chrome.manifest'。 ”)....但是如果我尝试我的 FireBreath 插件也是如此(例如,只是一个 install.rdf 和插件/plugins
),只显示扩展 - 没有插件(也没有合理的错误消息)。这可能是 FireBreath 的问题吗?