在MDN上,引入了“加载项管理器启用的XUL应用程序”这一短语。
通过拖动包含附加组件的XPI文件并将其放到FireFox窗口上,插件的小部件将安装在FireFox的附加栏中。
我也可以使用Firefox通过指定命令行选项“-app application.ini”来运行XUL应用程序。
由于MDN让我认为两者并不相互排斥,我正在寻找一个简单的4步过程,其中步骤1和2分别创建XUL应用程序和XPI,步骤3描述了如何更改XUL应用程序或者XPI准备第4步,第4步是最终整合。
我将从第1步和第2步开始,然后在第3步或第4步中提出一些需要完成的事情。
中的教程构建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>
我成功地使“加载项管理器启用的XUL应用程序”(又名<TestApp
&gt;)接受了XPI(又名<wikipanel
&gt;)并尝试安装它,但是它失败并显示错误消息:“<wikipanel
&gt;无法安装,因为它与<TestApp version 1.0
&gt;”
[edit]我编辑了INSTALL.RDF(对于我的XPI)并添加了以下内容:
<em:targetApplication>
<Description>
<em:id>testapp@sample.xul</em:id>
<em:minVersion>0.0</em:minVersion>
<em:maxVersion>9.*</em:maxVersion>
</Description>
</em:targetApplication>.
扩展程序现在安装,但我在jsconsole中收到以下错误:
错误:窗口小部件模块目前仅支持Firefox。将来它将支持其他应用程序。有关详细信息,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=560716。
答案 0 :(得分:1)
你在这里混合了什么。 -app
命令行标志用于运行XULRunner 应用程序,而不是浏览器扩展。对于附加SDK,它没有XUL支持,只有HTML。有一个fork of the Add-on SDK支持XUL,但它看起来有些过时,我不确定它是否能够创建独立窗口(这就是你要问的问题吗?)。
当然有classic extensions。它们允许您执行任何操作,包括创建新的XUL窗口或使用附加栏。但是写作起来要复杂得多。
答案 1 :(得分: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。