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

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

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

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

Дополнения:

URL-регистратор

HTTP-запрос-регистратор

1 ответ

Решение

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

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

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

$ 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.

Другие вопросы по тегам