Добавление панели надстроек в пользовательское приложение XULRunner - PullRequest
1 голос
/ 01 декабря 2011

На MDN введена фраза «Приложение XUL с поддержкой Add-on Manager».

Перетаскивая файл XPI, содержащий надстройку, и помещая его в окно FireFox, виджеты надстройки будут установлены в панели надстроек FireFox.

Я также могу использовать Firefox для запуска приложения XUL, указав параметр командной строки «-app application.ini».

Поскольку MDN заставляет меня думать, что они не являются взаимоисключающими, я ищу простой четырехэтапный процесс, в котором на шагах 1 и 2 независимо друг от друга создаются приложение XUL и XPI, на шаге 3 описывается, как изменить приложение XUL. или XPI при подготовке к шагу 4, и шаг 4 является окончательной интеграцией.

Я начну с шагов 1 и 2, а затем предложу некоторые вещи, которые необходимо выполнить в шагах 3 или 4.

Шаг 1. Создайте XPI, следуя инструкциям по https://addons.mozilla.org/en-US/developers/docs/sdk/1.3/dev-guide/addon-development/implementing-simple-addon.html

Шаг 2. Создайте приложение XUL, следуя инструкциям по https://developer.mozilla.org/en/Getting_started_with_XULRunner

Теперь для шагов 3 и 4. Они должны включать изменение файла application.ini, встроенного в шаг 2, путем добавления кода:

[XRE]
EnableExtensionManager=1

Они также должны включать добавление строк в prefs.js для поддержки менеджера расширений. И они могут потребовать добавления элемента окна аддона в 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>) принять 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 голос
/ 07 декабря 2011

Я нашел ответ, но это немного хакерский и требует удаления следующих строк кода из источника 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, этот путь не стоит продолжать.Тем не менее, если есть способ создать приложение xul таким образом, чтобы оно соответствовало Firefox, тогда я еще вернусь к этой проблеме.

Firefox - это chrome: //browser/content/browser.xul в конце концов.

1 голос
/ 04 декабря 2011

Вы смешиваете вещи здесь. Флаг командной строки -app используется для запуска приложений XULRunner , а не расширений браузера. Что касается Add-on SDK, он не имеет поддержки XUL, только HTML. Существует ветвь надстройки SDK с поддержкой XUL, но она выглядит несколько устаревшей, и я не уверен, что она способна создавать автономные окна (это то, о чем вы спрашиваете?).

Есть, конечно, классические расширения . Они позволяют вам делать что угодно, включая создание новых окон XUL или использование панели надстроек. Но их немного сложнее написать.

...