Переупаковка и / или модификация существующего расширения Firefox XPI
Я опытный пользователь и обладаю некоторыми навыками программиста, но я установил некоторое дополнение к Firefox, и я хотел бы добавить дополнительную строку кода в исходный код. Но у меня есть только файл .xpi.
Я знаю, что это может быть открыто любой утилитой почтового индекса. Но это не работает, когда я что-то там меняю. Он хранит файл .js в папке CONTENT. Есть функция вывода в файл, и я хочу немного отформатировать строку, которая сохраняется в файл.
Вы можете не упомянуть начало вопроса, но есть главная цель и вопрос: как перекомпилировать или применить какие-либо изменения к файлам .js в установленных расширениях .xpi? Любые способы их обновить.
Дополнения:
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.