Как создать xpi файл с 7Zip?
Я хотел бы упаковать мое расширение firefox как файл xpi. Я попытался добавить его в архив и назвать его именем файла.xpi
но когда я пытаюсь установить его на firefox, я получаю сообщение "пакет поврежден". Есть ли способ создать допустимый файл xpi ?
Я установил cygwin и попытался выполнить команду zip для создания xpi-файла. Но got zip не является ошибкой команды.
может кто-нибудь наставит меня, чтобы сделать это ?
7 ответов
Если вы находитесь в windows (для установки cygwin это выглядит так), вы можете использовать встроенный инструмент windows:
- выберите содержимое расширения (помните, Не выбирайте внешнюю папку).
- Щелкните Правой Кнопкой Мыши
- отправить
- сжатая zip-папка ()
затем просто замените .zip для .xpi в имени файла
похоже, ваша проблема заключается в завершении пункта 1. правильно. Выберите только содержание расширения. Не папка, в которой он находится.
таким образом, в основном ваш zip-файл должен иметь следующую структуру:
my_extension.zip
|- install.rdf
|- chrome.manifest
|- <chrome>
а не эта структура:
my_extension.zip
|- <my_extension>
|- install.rdf
|- chrome.manifest
|- <chrome>
Я испытал те же проблемы сегодня и обнаружил, что ошибка заключается в том, что надстройка явно не была подписана Mozilla, в результате чего Firefox отказался от установки. До недавнего времени можно было обойти эту проверку безопасности, установив xpinstall.signatures.required
false в about:config
. Однако, начиная с Firefox 46, подписание является обязательным, и больше не предоставляется байпас, см. https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/ это значит что одно должно или понизить к предыдущая версия или используйте версию канала без выпуска для тестирования своих аддонов : (
кроме того, вот как я пакую расширение для Firefox с командная строка С 7z:
cd /the/extension/folder/
7z a ../<extension_name>.xpi * -r
(где "a" означает "добавить/создать" и "- r " для рекурсивного)
или обновить расширение с помощью файла(ов) мы только что отредактировали:
cd /the/extension/folder/
7z u ../<extension_name>.xpi * -r
("U" для обновления содержимого архива)
два метода, используя GUI 7zFM.exe, или командная строка или пакетный файл.
1.0) метод GUI. Предполагая, что 7-Zip установлен с интеграцией оболочки, вы видите, что 7-Zip отображается в контекстном меню (щелкните правой кнопкой мыши выбранные файлы) Проводника Windows.
1.a)перейдите в папку надстройки.
1.б) выбрать все файлы и папки, которые вы хотите включить в .xpi. Предполагая, что у вас нет файлов, которые вы хотите игнорировать в любые подпапки. Если вы это сделаете, вы можете использовать параметр командной строки.
1.c) щелкните правой кнопкой мыши на списке выбранных файлов, найдите выберите .
1.d) появляется диалоговое окно. Измените местоположение и имя zip-файла, изменение .zip to .xpi и др.
1.е) обратите внимание, если вы создаете .xpi в той же папке, не повторно архивировать его в будущем, как ваше дополнение будет терпеть неудачу ужасно. Ты никогда не хочешь .xpi в конечном итоге внутри вашего .XPI на несчастный случай. Обычно я просто создаю его в родительской папке, добавив ..\
к началу имени файла, например ..\addon-1.2.3-fx.xpi
1.f) 7-Zip имеет множество мощных опций сжатия, не все из которых Firefox может обрабатывать. Выберите настройки, которые Firefox может обрабатывать. Обратитесь к изображению.
2.0) Командная строка. Предполагая, что вы находитесь в Windows, и знаете, как открыть командную строку, изменить диски и каталоги (a.к. a. папки).
2.а) CD
в каталог надстройки.
2.b) Используйте самую базовую 7-Zip командную строку.
"C:\Program Files-Zipz.exe" a -tzip addon-1.2.3-fx.xpi *
2.c) вы можете получить меньший файл, найдя точные параметры командной строки, которые соответствуют приведенному выше GUI, а именно:
"C:\Program Files-Zipz.exe" a -tzip -mx=9 -mm=Deflate -mfb=258 -mmt=8 "addon-1.2.3-fx.xpi" *
обратите внимание, что при использовании метода сжатия Deflate нет опции Dictionary size = 32kb. В противном случае параметры в порядок и соответствуют GUI.
|-----------------------|---------|--------------|
| Option / Parameter | GUI | Command line |
|-----------------------|---------|--------------|
| Archive format | zip | -tzip |
| Compression level | Ultra | -mx=9 |
| Compression method | Deflate | -mm=Deflate |
| Dictionary size | 32 KB | (none) |
| Word size | 258 | -mfb=258 |
| Number of CPU threads | 8 | -mmt=8 |
|-----------------------|---------|--------------|
| Additional Parameters | | |
|-----------------------|---------|--------------|
| Recurse into Folders | (none) | -r |
| Multiple passes | (none) | -mpass=15 |
| Preserve Timestamps | (none) | -mtc=on |
| Ignore files in list | | -x@{ignore} |
|-----------------------|---------|--------------|
Примечания:
i) многопоточный вариант (-mmt=8) специфичен для моей системы, которая имеет 8 ядер. Вам нужно будет снизить до 6 или 4 или 2 или 1 (т. е. удалить) если у вас меньше ядер, и т. д., или увеличить, если у вас больше. В любом случае, это не будет иметь большого значения для небольшого расширения.
ii) опция рекурсии в папку может быть или не быть по умолчанию, поэтому указание этой опции должно обеспечить правильное рекурсия.
iii) возможность preserve windows timestamps
(создание, доступ, модификация) по умолчанию on
в любом случае, так что может быть и не нужен.
IV) О ignore files in list
опция любой файл, который имеет список файлов и подстановочные знаки файлов, которые вы хотите исключить.
2.d) продвинутая тема #1: игнорировать список файлов (примеры)
|----------------|------------------------------------|
| What to Ignore | Why to Ignore |
|----------------|------------------------------------|
| TODO.txt | Informal reminders of code to fix. |
| *.xpi | In case you forget warning above! |
| .ignore | Ignore the ignore file list. |
| ignore.txt | Same thing, if you used this name. |
|----------------|------------------------------------|
"C:\Program Files-Zipz.exe" a -tzip -mx9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "addon-1.2.3-fx.xpi" * -x@ignore.txt
2.e) продвинутая Тема #2: пакетный файл (Windows CMD.ИСПОЛНЯЕМЫЙ), предполагая довольно недавние окна, то есть из 21-го века. Это может быть просто и жестко, или сложно и гибко, как вы заботитесь, чтобы сделать его. Общий баланс должен предполагать, что вы будете в Command Prompt
, в каталоге верхнего уровня надстройки, над которой вы работаете, и что вы разумно назвали этот каталог, чтобы иметь то же самое базовое имя .XPI файл, например, на addon-1.2.3-fx.xpi
надстройка xpi. Этот пакетный файл делает это предположение и динамически вычисляет правильное базовое имя для .xpi.
@ECHO OFF
REM - xpi.bat - batch file to create Mozilla add-on xpi using 7-Zip
REM - This finds the folder name, and discards the rest of the full path, saves in an environment variable.
FOR %%* IN (.) DO SET XPI=%%~nx*
REM - Uncomment the DEL line, or delete .xpi file manually, if it gets corrupted or includes some other junk by accident.
REM DEL "%XPI%.xpi"
REM - Command line which does everything the GUI does, but also lets you run several passes for the smallest .xpi possible.
"C:\Program Files-Zipz.exe" a -tzip -r -mx=9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "%XPI%.xpi" * -x@ignore.txt
REM - Cleanup the environment variable.
SET XPI=
сделайте согласно следующему пока использующ 7z Выберите только внутреннее содержимое, а не внешнюю папку. Введите имя файла как имя файла.xpi и выбрать формат архива, как zip в приглашении, которое появляется во время молнии. Вы найдете правильный файл xpi создан. Используйте созданный xpi для установки расширения в firefox. Работает!
просто zip все файлы и папки внутри папки my_extension и изменить расширение результирующего файла zipped в my_extension.xpi
/my_extension
|- defaults/
|- locale/
|- resources/
|- install.rdf
|- ... (other files and folders)
установка xpi-файла, созданного из zipped-файла папки my_extension, приведет к ошибке
"Это дополнение не может быть установлено, потому что оно кажется поврежденным.- ошибка!--2-->