Как создать xpi файл с 7Zip?

Я хотел бы упаковать мое расширение firefox как файл xpi. Я попытался добавить его в архив и назвать его именем файла.xpi

но когда я пытаюсь установить его на firefox, я получаю сообщение "пакет поврежден". Есть ли способ создать допустимый файл xpi ?

Я установил cygwin и попытался выполнить команду zip для создания xpi-файла. Но got zip не является ошибкой команды.

может кто-нибудь наставит меня, чтобы сделать это ?

7 ответов


Если вы находитесь в windows (для установки cygwin это выглядит так), вы можете использовать встроенный инструмент windows:

  1. выберите содержимое расширения (помните, Не выбирайте внешнюю папку).
  2. Щелкните Правой Кнопкой Мыши
  3. отправить
  4. сжатая 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 может обрабатывать. Обратитесь к изображению.

7-Zip Settings for XPI Creation

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, обжимает В.zip, а затем переименовать .xpi, не сжимайте i


сделайте согласно следующему пока использующ 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-->