首页 文章

将附加栏添加到自定义XULRunner应用程序

提问于
浏览
1

MDN上,引入了短语"Add-on Manager-enabled XUL application" .

通过拖动包含附加组件并将其放入FireFox窗口的XPI文件,插件的小部件将安装在FireFox的附加栏中 .

我还可以通过指定命令行选项“-app application.ini”来使用Firefox来运行XUL应用程序 .

由于MDN让我认为两者并不相互排斥,我正在寻找一个简单的4步过程,其中步骤1和2分别创建XUL应用程序和XPI,步骤3描述了如何更改XUL应用程序或XPI准备步骤4,步骤4是最终整合 .

我将从第1步和第2步开始,然后在第3步或第4步中提出一些需要完成的事情 .

第1步:按照https://addons.mozilla.org/en-US/developers/docs/sdk/1.3/dev-guide/addon-development/implementing-simple-addon.html上的教程构建XPI

第2步:按照https://developer.mozilla.org/en/Getting_started_with_XULRunner上的教程构建XUL应用程序

现在对于步骤3和4.它们应该包括通过添加代码来修改在步骤2中构建的application.ini:

[XRE]
EnableExtensionManager=1

它们还应包括向prefs.js添加行以支持扩展管理器 . 并且他们可能需要adding addon bar window element to XUL添加类似于以下的代码:

<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton 
    id="xfox-statusbarpanel" class="toolbarbutton-1 chromeclass-toolbar-additional"
    label="&name;"
    tooltiptext="&name;"
    oncommand="toggleSidebar('xfox-sidebar');"
    context="xfox-contextmenu">
</toolbarbutton>
</toolbarpalette>

我成功地使"Add-on Manager-enabled XUL application"(又名 <TestApp >)接受XPI(又名 <wikipanel >)并尝试安装它,但它失败并显示错误消息:“ <wikipanel >无法安装,因为它与 <TestApp version 1.0 不兼容> “

[编辑]我编辑了INSTALL.RDF(对于我的XPI)并添加了以下内容:

<em:targetApplication>
   <Description>
     <em:id>testapp@sample.xul</em:id>
     <em:minVers‌​ion>0.0</em:minVersion>
     <em:maxVersion>9.*</em:maxVersion>
   </Description>
 </em:targe‌​tApplication>.

扩展现在安装,但我在jsconsole中收到以下错误:

错误:窗口小部件模块目前仅支持Firefox . 将来它将支持其他应用程序 . 有关更多信息,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=560716 .

2 回答

  • 1

    你在这里搞混合了 . -app 命令行标志用于运行XULRunner applications ,而不是浏览器扩展 . 对于Add-on SDK,它没有XUL支持,只有HTML . 有一个支持XUL的fork of the Add-on SDK但它看起来有些过时,我不确定它是否能够创建独立的窗口(这是你要问的?) .

    当然有classic extensions . 它们允许您执行任何操作,包括创建新的XUL窗口或使用附加栏 . 但是写起来要复杂得多 .

  • 1

    我找到了答案,但它有点破解,需要从addon-kit javascript源中删除以下代码行:

    if (!require("api-utils/xul-app").is("Firefox")) {
        throw new Error([
          "The widget module currently supports only Firefox.  In the future ",
          "it will support other applications. Please see ",
          "https://bugzilla.mozilla.org/show_bug.cgi?id=560716 for more information."
        ].join(""));
    }
    

    由于上述代码专门设计用于防止在除了真正的Firefox之外的任何东西中使用插件套件,因此这种途径不值得进一步追求 . 但是,如果有办法以符合Firefox的方式构建xul-app,那么我将重新审视这个问题 .

    毕竟Firefox是chrome://browser/content/browser.xul .

相关问题