Переупаковка и/или изменение существующего расширения Firefox XPI

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

Я знаю, что его можно открыть любой утилитой zip. Но это не работает, когда я что-то там меняю. Он хранит файл .js в папке CONTENT. Существует функция вывода в файл, и я хочу немного отформатировать строку, которая сохраняется в файл.

Можно не упоминать начало вопроса, но есть основная цель и вопрос: Как перекомпилировать или внести изменения в файлы .js в установленных расширениях .xpi? Любые способы их обновления.

Дополнения:

урл-логгер

https://addons.mozilla.org/ru/firefox/addon/http-request-logger/


person TarasPro    schedule 15.05.2014    source источник


Ответы (1)


По сути, вы просто снова заархивируете материал (надстройки, не относящиеся к SDK). И те надстройки, которые вы связали, не являются надстройками SDK.

Однако есть некоторые подводные камни:

  • Расширение могло иметь цифровую подпись, на что указывает наличие папки META-INF. Изменение материала, конечно, сделает подпись недействительной. Просто удалите папку, чтобы (измененное) расширение снова стало неподписанным.
  • Довольно часто люди заархивируют внешнюю папку. т.е. полученный почтовый индекс (.xpi) затем содержит /some-addon-folder/install.rdf вместо только /install.rdf. Не заархивируйте внешнюю папку, а только файлы и подпапки внутри.
  • Некоторые zip-инструменты создают zip-файлы, которые по существу повреждены; достаточно сломан, чтобы его отклонил Firefox, но недостаточно сломан, чтобы другие утилиты zip не сломались. Убедитесь, что почтовый индекс действителен, и, если есть сомнения, переключите используемую утилиту zip.
  • Также не забывайте использовать ZIP, а не 7zip, rar, tar.gz или что-то еще. ;)

Это правильно заархивировано:

$ unzip -l http_request_logger-0.1-fx.xpi 
Archive:  http_request_logger-0.1-fx.xpi
  Length     Date   Time    Name
 --------    ----   ----    ----
      240  07-29-11 11:45   chrome.manifest
        0  07-29-11 11:42   components/
     1558  07-29-11 11:47   components/httpRequestLogger.js
     1021  07-30-11 12:39   install.rdf
 --------                   -------
     2819                   4 files

Это неправильно заархивировано (создано с помощью пункта меню сжатия OSX):

$ unzip -l http_request_logger-0.1-fx.zip 
Archive:  http_request_logger-0.1-fx.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  05-16-14 01:54   http_request_logger-0.1-fx/
      240  07-29-11 11:45   http_request_logger-0.1-fx/chrome.manifest
        0  05-16-14 01:54   __MACOSX/
        0  05-16-14 01:54   __MACOSX/http_request_logger-0.1-fx/
      187  07-29-11 11:45   __MACOSX/http_request_logger-0.1-fx/._chrome.manifest
        0  07-29-11 11:42   http_request_logger-0.1-fx/components/
     1558  07-29-11 11:47   http_request_logger-0.1-fx/components/httpRequestLogger.js
        0  05-16-14 01:54   __MACOSX/http_request_logger-0.1-fx/components/
      187  07-29-11 11:47   __MACOSX/http_request_logger-0.1-fx/components/._httpRequestLogger.js
     1021  07-30-11 12:39   http_request_logger-0.1-fx/install.rdf
      187  07-30-11 12:39   __MACOSX/http_request_logger-0.1-fx/._install.rdf
      187  05-16-14 01:54   __MACOSX/._http_request_logger-0.1-fx
 --------                   -------
     3567                   12 files

(Помимо __MACOSX дерьма, сейчас http_request_logger-0.1-fx/install.rdf)

Я рекомендую вам также прочитать Настройка среды разработки расширений, в частности немного о прокси-файле. ;)

Когда дело доходит до надстроек SDK (на что указывает наличие файла harness-options.json), повторное архивирование может работать или не работать. Возможно, было бы лучше просто воспроизвести package.json и структуру каталогов на основе содержимого .xpi и использовать инструмент SDK cfx для создания нового XPI.

person nmaier    schedule 15.05.2014