Редактирование существующего дополнения Firefox - PullRequest
3 голосов
/ 16 сентября 2011

Для одного из проектов, над которым я работаю, мне нужно использовать DOM Inspector для отладки расширения Firefox.

Проблема с DOM инспектором состоит в том, что он показывает только браузер под кодом, естьнет способа отсоединить браузер или раздел кода или браузер рядом.

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

Поэтому я решил изменить сам DOM Inspector, чтобы разместить браузер рядом с редактором кода.

Вот шаги, которые я предпринял:

  1. Взял существующий файл xpi из каталога профиля.
  2. Изменил его на zip.
  3. Зашел внутрь и извлек inspector.jar используя jar -xf <filename>
  4. Пошел на inspectorOverlay.xul и изменил <vbox id="bxInspectorMain"> на hbox.(Этого должно быть достаточно, чтобы расположить эти два окна по горизонтали.)
  5. Затем я пересоздал файл jar, используя jar cf.
  6. Архивировал каталог, убедившись, что имя совпадает, и изменил расширение обратно.к xpi.

Однако, когда я пытаюсь запустить его, я получаю следующие предупреждения:

Warning: WARN addons.xpi: Add-on is invalid: [Exception... "Component returned failure code: 0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST) [nsIZipReader.getInputStream]"  nsresult: "0x80520006 (NS_ERROR_FILE_TARGET_DOES_NOT_EXIST)"  location: "JS frame :: resource://gre/modules/XPIProvider.jsm :: loadManifestFromZipReader :: line 740"  data: no]
Source File: resource://gre/modules/XPIProvider.jsm
Line: 740

Warning: WARN addons.xpi: Could not uninstall invalid item from locked install location
Source File: resource://gre/modules/XPIProvider.jsm
Line: 2042

Мой вопрос - какие другие изменения мне обычно нужно сделать дляxpi правильно интерпретировать?

Ответы [ 2 ]

6 голосов
/ 16 сентября 2011

Заархивировал каталог, убедившись, что имя совпадает, и изменил расширение обратно на xpi.

Полагаю, что вы сделали что-то не так на этом шаге.Глядя на исходный код , сообщение приходит от метода updateMetadata() - Firefox заметил, что файл изменился, и пытается снова прочитать install.rdf.Этот файл должен находиться на верхнем уровне файла XPI, но в вашем случае он не может быть найден.Возможно, install.rdf больше не находится на верхнем уровне после перепаковки файла.Вы можете проверить его с помощью команды unzip:

unzip -l inspector@mozilla.org.xpi

Он должен отображать содержимое файла XPI, включая install.rdf и chrome.manifest - без какого-либо имени каталога.

3 голосов
/ 16 сентября 2011

@ Лука, я думаю, что Владимир Палант прав. Чтобы избежать ошибок при модификации исходного кода существующего проекта, я бы предложил вам работать в рабочей среде.

Предлагаемый способ редактирования исходного кода:

  1. Установить Eclipse
  2. Установить бустер Xul ( проект / документы )
  3. Извлеките свой кислый код из профиля FF.
  4. Проверьте имя основной папки и подпапки в точности так, как указано в извлеченном вами файле .Zippy (расширение FF).
  5. Создайте новый проект в Eclipse в среде бустера XUL: используйте одно и то же имя основной папки и подпапки расширения FF.
  6. Затем скопируйте извлеченные файлы в проект XUL в Eclipse.
  7. Измените код и извлеките его в файл .XPi и установите в браузер FF.

Таким образом, вы можете избежать любых ошибок, потому что все будет классифицировано автоматически (папка Chrome, манифест, install.rdf, did die и т.д.).

Примечание. Существует расширенный способ изменения исходного кода, и браузер FF обнаружит изменение исходного кода автоматически, установив среду в папке профиля расширения FF.

  1. Создайте файл bat, найдите путь к папке вашего проекта и введите свой идентификатор расширения в папке профиля расширения FF. ( руководство )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...