Как минимум, вам потребуется создать install.rdf em> и файл chrome.manifest < / a> файл. Пройдя по этим ссылкам, вам нужно будет сделать выбор (например, как называть свой добавочный номер, <em:id>
и т. Д.).
Кроме того, похоже, что вы добавляете bootstrap / restartless -on и должен вызывать файл, содержащий код, который вы включили в вопрос: bootstrap.js
Файлы .xpi
, которые используются в качестве контейнеров для расширений Mozilla (Firefox, Thunderbird и т. Д.), Представляют собой просто сжатые архивы с расширением zip, расширение которых изменено на .xpi
. Файлы начинаются в корневом каталоге сжатого zip-архива (т. Е. Существует каталог первого уровня, в котором хранятся файлы). Файлы должны быть либо несжатыми, либо сжатыми с использованием алгоритма «Deflate». Использование других алгоритмов сжатия приведет к тому, что ваш .xpi
файл не загрузится и появится всплывающее окно, указывающее, что надстройка повреждена.
Содержимое архива может быть от нескольких файлов до любого количества файлов. Как минимум, у вас есть install.rdf < / a> и файл chrome.manifest . Почти всегда будет хотя бы один дополнительный файл (если не много дополнительных файлов).
Мое очень простое расширение Bootstrap / Restartless, Print Button is Print (изменяет кнопку печати для печати вместо предварительного просмотра), имеет следующую структуру:
Archive contains:
bootstrap.js
chrome/
chrome/content/
chrome/content/options.xul
chrome/skin/
chrome/skin/printer-typeC128.png
chrome/skin/printer-typeC32.png
chrome/skin/printer-typeC48.png
chrome/skin/printer-typeC64.png
chrome.manifest
install.rdf
license.txt
Total 12 entries (42360 bytes)
- Есть требуемые install.rdf и файлы chrome.manifest.
- Требуется файл bootstrap.js для расширений Bootstrap / Restartless. Он содержит код, который запускается при установке, удалении, включении, отключении расширения или при запуске или завершении работы Firefox. Это расширение достаточно простое, поэтому весь код JavaScript содержится в bootstrap.js.
- Существует файл chrome / content / options.xul, который является XUL-определением диалоговое окно настроек.
- license.txt просто объясняет, что расширение было выпущено под Mozilla Public License, v2. .0.
- Файлы
.png
являются значком этого расширения в различных разрешениях.
Файл install.rdf для кнопки печати имеет значение Print is (все экземпляры PrintButtonIsPrint
должны быть изменены на что-то для вашего расширения, которое вы определяете в своем файле chrome.manifest; все их вы можете просто удалить из файла instal.rdf, если хотите, поскольку у вас нет диалогового окна параметров или определенных значков (пока).):
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id> <!-- MUST be unique to your extension. -->
<em:version>1.0.1</em:version>
<em:type>2</em:type>
<em:name>Print Button is Print</em:name> <!-- Should be unique to your extension. -->
<em:bootstrap>true</em:bootstrap> <!-- Indicate that the extension is restartless -->
<em:unpack>false</em:unpack>
<em:description>Makes the Print Button print the page instead of presenting a print preview. Adds the option of using shift-left-click and/or ctrl-left-click for Print Preview (both enabled by default).</em:description>
<em:creator>Makyen</em:creator>
<!-- No about.
<em:aboutURL>chrome://PrintButtonIsPrint/content/about.xul</em:aboutURL>
-->
<em:optionsURL>chrome://PrintButtonIsPrint/content/options.xul</em:optionsURL>
<em:iconURL>chrome://PrintButtonIsPrint/skin/printer-typeC48.png</em:iconURL>
<em:icon64URL>chrome://PrintButtonIsPrint/skin/printer-typeC64.png</em:icon64URL>
<!--Firefox-->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>29.0</em:minVersion>
<em:maxVersion>37.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
chrome.manifest (оба экземпляра PrintButtonIsPrint
следует заменить на что-то для вашего расширения):
content PrintButtonIsPrint chrome/content/
skin PrintButtonIsPrint classic/1.0 chrome/skin/
Для создания файла .xpi
я использую пакетный файл, в котором используется комбинация DOS и Unix / Linux (на самом деле Cygwin) команды:
mkxpi.bat:
rm -f [email protected]
zip -1 -r [email protected] * [email protected]
pause
Это удалит все старые версии файла .xpi
. Затем он создает новый .xpi
файл, используя -1
минимальное сжатие (скорость доступа важнее экономии места) и содержащий все файлы и подкаталоги *
*, но игнорируя все файлы в тексте xpi.ignore файл [email protected]
. Игнорирование файлов используется, потому что у меня есть другие вещи в каталоге (например, .git
каталог, .bak
файлы, автоматически созданные из редактора, и т. Д.). После создания .xpi
файла сценарий выполняет pause
, чтобы я мог проверить, какие файлы были включены, что не было ошибок и т. Д., Вместо того, чтобы просто закрыть окно и предположить, что все в порядке.
Мой файл xpi.ignore немного длинноват, поскольку в нем накапливается мусор из различных проектов, и его редко удаляют:
*.com
*.class
*.dll
*.exe
*.o
*.so
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.log
*.sql
*.sqlite
*.svg
*/.DS_Store
*/.DS_Store?
*/._*
._*
*/.Spotlight-V100
.Spotlight-V100
*/.Trashes
.Trashes
*/ehthumbs.db
*/Thumbs.db
*.ORIG
*.bak
*OLD*
OLD/*
*/OLD/*
*.OLD
*.OLD[0-9]
*/OLD/*
*/OLD[0-9]/*
*.unknown
*.unknown[0-9]
*.updated
*.updated[0-9]
*/Copy *
*/OLD
*/OLD*
*/OLD[0-9]
*/OLD[0-9][0-9]
*/test/*
*/not in xpi/*
*/tmp
*.tmp
*/foo
*.foo
*checkpoint
.git
*/.git
.gitignore
*/.gitignore
xpi.ignore
mkclean.bat
mkclean.bat.DONTRUN
mkxpi.bat
*.xpi
*/devtools-toolbox-window.ico
*/devtools-webconsole.ico
*/JSConsoleWindow.ico
*/main-window.ico
*/places.ico
*/viewSource.ico
Что касается установки расширений (т.е. файла .xpi
), это может быть просто перетащите его в окно Firefox, в котором запущен профиль, в котором вы хотите его установить. Для разработки / тестирования вы можете разместить расширение в каталоге на локальном диске. с помощью прокси-файла расширения Firefox (создайте файл с именем в качестве <em:id>
расширения в каталоге extensions профиля, содержащего одну строку с полным путем к каталогу, содержащему файлы расширения). В зависимости от вашей цели (один профиль, все профили, все пользователи, какая ОС и т. Д.) Существуют другие варианты того, как установить расширения.
Этот ответ в основном скопирован из моего ответа здесь.
person
Makyen♦
schedule
25.06.2015