在Firefox扩展中包含XPCOM

时间:2010-08-08 15:08:58

标签: xul firefox-addon xpcom

我对Firefox扩展开发的经验非常有限(阅读XUL School,写了几个非常简单的扩展)。

我现在需要一些Firefox XPCOM对象无法使用的功能,即运行外部进程并读取其标准输出。似乎可以使用Protozilla完成此操作。所以我的问题现在变成了在我的XPI中包含这个外部XPCOM对象,以便它可以用于我的扩展。

我应该明确我的问题不是如何构建一个XPCOM对象,因为我已经有了他们的构建,如果我需要改变一些我已经有他们的makefile。我的问题是:我现在该怎么办?我的扩展树看起来像

  

/
   - >铬/
   - > - >内容
   - &GT - → - →; browserOverlay.js
   - > - > - > ...
   - > - >语言环境
   - > - > - > EN-US
   - &GT - → - → - →; browserOverlay.dtd
   - &GT - → - → - →; browserOverlay.properties
   - > - > - > ...
   - > - >皮肤
   - > - > - > ...
   - >默认/
   - > - >偏好/
   - &GT - → - →; my_extension.js
   - >模块/
   - > - > common.js
   - > chrome.manifest用于
   - > install.rdf

我应该在哪里包含XPCOM文件?我是否需要做一些事情来告诉Firefox新的XPCOM对象可用?

3 个答案:

答案 0 :(得分:4)

来自Mozilla开发者中心,

  

XPCOM组件

     

Firefox支持XPCOM组件   扩展。你可以创建自己的   组件很容易在JavaScript或中   C ++(使用Gecko SDK)。

     

将所有.js或.dll文件放入   components/目录 - 它们是   自动注册第一个   时间Firefox在您的扩展后运行   已安装。

https://developer.mozilla.org/en/building_an_extension

答案 1 :(得分:0)

您可以使用nsIProcess启动进程,将其写入已知位置,然后使用nsIFile从该文件中读取。

答案 2 :(得分:0)

Protozilla派生于此:http://mozilla-enigmail.org/ipc/你可以在那里找到xulrunner启用的二进制文件,它应该允许你调用外部进程。

代码已包含在Mozilla代码库中(10年后,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=68702http://hg.mozilla.org/ipccode/),但据我所知,它在Firefox 4中不可用。