Добавление панели надстроек в пользовательское приложение XULRunner

StackOverflow https://stackoverflow.com/questions/8334415

Вопрос

Вкл . MDN, вводится фраза "Приложение XUL с поддержкой Add-on Manager".

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

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

Поскольку MDN заставляет меня думать, что они не являются взаимоисключающими, я ищу простой 4-шаговый процесс, в котором шаги 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 для поддержки менеджера расширений.И они могут потребовать добавление элемента addon bar window в 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

Я нашел ответ, но это немного взлом и требует удаления следующих строк кода из исходного кода javascript addon-kit:

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(""));
}

Поскольку приведенный выше код специально разработан для предотвращения использования addon kit во всем, кроме добросовестного Firefox, этот путь не стоит продолжать.Однако, если есть способ создать xul-приложение таким образом, чтобы оно соответствовало Firefox, тогда я вернусь к этому вопросу.

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top