Добавление панели надстроек в пользовательское приложение XULRunner
-
26-10-2019 - |
Вопрос
Вкл . 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:minVersion>0.0</em:minVersion>
<em:maxVersion>9.*</em:maxVersion>
</Description>
</em:targetApplication>.
Теперь расширение устанавливается, но я получаю следующую ошибку в 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 или использование панели надстроек.Но написать их немного сложнее.