Подтвердить что ты не робот

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

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

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

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

Может ли кто-нибудь помочь мне сделать это?

4b9b3361

Ответ 1

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

  • Выберите содержимое расширения (помните, не выбирайте внешнюю папку).
  • Щелкните правой кнопкой мыши
  • Отправить
  • Сжатая (сжатая) папка

Затем просто замените .zip на .xpi в имени файла

Похоже, ваша проблема заключается в правильном завершении пункта 1. Выберите только содержимое расширения. Не содержащая его папка.

Итак, в основном ваш zip файл должен иметь следующую структуру:

my_extension.zip
  |- install.rdf
  |- chrome.manifest
  |- <chrome>

и НЕ эта структура:

my_extension.zip
  |- <my_extension>
       |- install.rdf
       |- chrome.manifest
       |- <chrome>

Ответ 2

Сегодня у меня возникли те же проблемы, и я обнаружил, что ошибка заключается в том, что надстройка явно не была подписана Mozilla, в результате чего Firefox отказался от установки. До недавнего времени эту проверку безопасности можно было обойти, установив xpinstall.signatures.required на false в about:config. Однако, с Firefox 46, подписание является обязательным, и обход не предоставляется больше, см. https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/ Это означает, что нужно либо перейти на предыдущую версию или использовать версию без релиза для проверки одного дополнения: (

Ответ 3

Кроме того, здесь, как я упаковываю расширение для 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" для обновления содержимого архива)

Ответ 4

Два метода с использованием GUI 7zFM.exe или командной строки или командного файла.

1.0) GUI-метод. Предполагая, что 7-Zip установлен с интеграцией с оболочкой, поэтому вы видите 7-Zip в контекстном меню (щелчок правой кнопкой мыши по выбранным файлам) проводника Windows.

1.a) Зайдите в папку вашего дополнения.

1.b) Выберите все файлы и папки, которые вы хотите включить в .xpi. Предполагая, что у вас нет файлов, которые вы хотите игнорировать в любых подпапках. Если вы это сделаете, вы можете использовать опцию командной строки.

1.c) Щелкните правой кнопкой мыши по списку выбранных файлов, найдите значок 7z, выберите параметр Add to archive....

1.d) Появится диалоговое окно. Измените местоположение и имя zip файла, измените на .zip на .xpi и т.д.

1.e) Обратите внимание, что если вы создаете .xpi в той же папке, не переархивируйте его в будущем, так как ваше дополнение будет неудачно. Вы никогда не хотите, чтобы .xpi случайно попал в ваш .xpi. Обычно я просто создаю его в родительской папке, добавив ..\ в начало имени файла, например. ..\addon-1.2.3-fx.xpi

1.f) 7-Zip имеет множество мощных параметров сжатия, не все из которых может обрабатывать Firefox. Выберите настройки, которые Firefox может обрабатывать. См. Изображение.

7-Zip Настройки для создания XPI

2.0) Метод командной строки. Предполагая, что вы находитесь в Windows, и знаете, как открыть командную строку, измените диски и каталоги (папки a.k.a.).

2.a) CD в ваш дополнительный каталог.

2.b) Используйте самую основную командную строку 7-Zip.

"C:\Program Files\7-Zip\7z.exe" a -tzip addon-1.2.3-fx.xpi *

2.c) Вы можете получить файл меньшего размера, найдя точные параметры командной строки, которые соответствуют приведенному выше графическому интерфейсу, а именно:

"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=9 -mm=Deflate -mfb=258 -mmt=8 "addon-1.2.3-fx.xpi" *

Обратите внимание, что при использовании метода сжатия Deflate нет параметра Dictionary size = 32kb. В противном случае параметры в порядке и соответствуют графическому интерфейсу.

|-----------------------|---------|--------------|
| 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  |         | [email protected]{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\7-Zip\7z.exe" a -tzip -mx9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "addon-1.2.3-fx.xpi" * [email protected]

2.e) Расширенная тема # 2: пакетный файл (Windows CMD.EXE), предполагающий довольно недавние окна, т.е. с 21-го века. Это может быть простым и жестким, или сложным и гибким, как вы хотите это сделать. Общий баланс состоит в том, чтобы предположить, что вы будете в Command Prompt, в каталоге верхнего уровня надстройки, над которой работаете, и что вы разумно назвали этот каталог тем же базовым именем файла .xpi, например. D:\dev\addon-1.2.3-fx для расширения 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\7-Zip\7z.exe" a -tzip -r -mx=9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "%XPI%.xpi" * [email protected]
REM - Cleanup the environment variable.
SET XPI=

Ответ 5

Когда расширение пакета с использованием 7z, сжимайте в .zip, а затем переименуйте в .xpi, не сжимайте i

Ответ 6

Выполняйте следующие действия при использовании 7z Выберите только внутреннее содержимое, а не внешнюю папку. Введите имя файла как filename.xpi и выберите формат архива как zip в приглашении, которое появляется во время zipping. Вы найдете действительный файл xpi. Используйте созданный xpi для установки расширения на firefox. Он работает!

Ответ 7

Просто закройте все файлы и папки внутри папки my_extension и измените полученное расширение zipped на my_extension.xpi

/my_extension
  |- defaults/
  |- locale/
  |- resources/
  |- install.rdf
  |- ... (other files and folders)

Установка xpi файла, созданного из zip файла папки my_extension, приведет к ошибке как "Это дополнение не может быть установлено, потому что оно кажется поврежденным". ошибка

Ответ 8

Я пытаюсь создать почтовый индекс несколькими способами, потому что я был убежден, что я что-то не так делаю, потому что все, что я получил, - это "поврежденные пакеты". ну.. больше нет, и мне даже не нужно загружать его из временного надстройки "Загрузить" (теперь я перетаскиваю xpi файл с рабочего стола через Waterfox и устанавливаю его как легальный xpi файл! Как я это делаю? Я сам пробую материал github, который я загружаю вначале во временную надстройку Load (url: about: debugging # addons) xpi файла, используя метод, используемый user314159 с методом .bat file, использующим 7zip.

после загрузки вы должны прочитать что-то похожее на:

Внутренний номер 86257e65ca311ee368ffcee50598ce25733a049b @временный аддон

тогда все, что вам нужно сделать, это добавить внутрь manifest.json, модифицируя "приложения":

"applications": {
    "gecko": {
      "strict_min_version": "54.0a1",
      "id": "[email protected]"
    }
  },

после этого нажмите " Удалить", чтобы удалить временное дополнение, затем вам нужно снова собрать xpi, как вы делали раньше, теперь это обычный xpi файл, ПОДПИСАННЫЙ на то, что вы можете установить обычным! (здесь работает без изменения чего-либо еще)

Я использую Waterfox x64, мне кажется, проблемы с Firefox

ответ заключается в том, что вы должны загрузить свое расширение в концентратор, а затем использовать API для подписи Mozilla https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Distribution

Ответ 9

  1. Создать файл config.js
  2. Вставьте код в config.js
//
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
}
catch(ex) {}
  1. Переместите config.js в рабочую папку приложения, например: C:\Program Files\Mozilla Firefox\

  2. Создайте config-prefs.js и напишите код в:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
  1. Поместите config-pres.js в C:\Program Files\Mozilla Firefox\defaults\pref\

  2. Перезапустите Firefox

  3. Смотри результат

enter image description here