Nano Hash - криптовалюты, майнинг, программирование

Структура файла расширения Firefox .xpi: описание, содержимое, создание и установка

Я вложил много сил в поиск простого способа разработки расширения для Firefox, но не могу создать расширение. Пожалуйста, расскажите мне файловую структуру расширений Firefox и простой способ установки расширения.


  • Это зависит. Легкое (без перезапуска) или тяжелое (XUL) расширение? И что именно он должен делать? Внедрять JS на каждую страницу? Изменить интерфейс? Как бы то ни было, ваш вопрос слишком широк. 16.06.2015
  • На самом деле мне нужно ввести несколько js на определенный сайт. Я создал расширение Chrome, в котором требуются только два основных файла (manifest.json и background.js), с помощью этого файла я могу внедрить свой сценарий background.js на свой сайт. И теперь я ищу этот вид инъекции в Firefox. Спасибо 16.06.2015
  • Если вы хотите сделать это как в Chrome, очень просто, тогда addon sdk — это то, что вам нужно. Вы должны использовать page-worker: разработчик .mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/ (давай, Салман Кхан!) 16.06.2015
  • Тем не менее я не могу понять, как сделать файл .xpi для загрузки расширения. Не могли бы вы подробно описать процесс создания файла .xpi, а также необходимый файл и его структуру. Спасибо за сотрудничество. 16.06.2015
  • возможный дубликат Какой самый простой способ разработать расширение Firefox?< /а> 16.06.2015
  • @rouhankumarSingh присоединяйтесь к irc, и я могу провести вас через это. Я на канале extdev, вот ссылка на mibbit: client00.chat.mibbit.com/ там меня зовут noida 17.06.2015
  • Но вот базовая структура аддона начальной загрузки, она также включает в себя файл .xpi: gist.github .com/Noitidart/9025999, а комментарий к сути похож на файл readme, он полезен. 17.06.2015

Ответы:


1

.xpi формат файла (Упаковка расширения)

Файлы .xpi, которые используются в качестве контейнеров для расширений Mozilla (Firefox, Thunderbird и т. д.), представляют собой просто zip-архивы, в которых расширение файла было изменено на .xpi, а файлы добавлены в архив либо с использованием сжатия deflate, либо без сжатия. Если вы используете любой другой тип сжатия, кроме дефляции или сохранения (несжатого), вы получите сообщение об ошибке, например:

This add-on cannot be installed because it appears to be corrupted

Файлы начинаются в корневом каталоге сжатого zip-архива (т. е. существует не пустой каталог первого уровня, который затем содержит файлы).

Содержимое архива может быть от нескольких файлов до любого количества файлов. Файлы, которые должны быть включены, зависят от типа надстройки, которую вы упаковываете. Если вы планируете использовать SDK дополнений, вам вероятно, не нужно знать формат этих файлов, так как большая их часть абстрагируется с помощью инструмента jpm. Если вы понятия не имеете, о чем я говорю, вы можете прочитать на различные типы дополнения для Firefox (WebExtensions, Дополнительный SDK, Bootstrap/Restartless и Overlay/Legacy/XUL).

Веб-расширения:

Как минимум, у вас будет файл manifest.json с описанием расширения. Почти наверняка у вас будут дополнительные файлы. Файлы chrome.manifest, install.rdf и package.json, используемые в надстройках других типов, не используются< /em> в надстройках WebExtension. У вас не должно быть не этих файлов.

Дополнительный SDK:

Файл .xpi для расширения Firefox Add-on SDK должен быть создан путем выполнения jpm xpi. Дополнительные расширения SDK описаны в файле package.json. Когда вы запускаете jpm xpi, ваша надстройка преобразуется в надстройку Bootstrap/Restartless. Это делается путем преобразования файла package.json в файл install.rdf, создания файла chrome.manifest и добавления некоторых оболочек в код JavaScript. . Вы не должны пытаться выполнить этот процесс самостоятельно, за исключением случаев, когда это необходимо для работы надстройки (что бывает довольно редко).

Bootstrap/Restartless и Overlay/legacy:

Как минимум, у вас есть install.rdf и файлы chrome.manifest. Дополнения Bootstrap/Restartless также будут иметь файл bootstrap.js. Почти всегда будут дополнительные файлы. Эти типы надстроек не используют ни package.json, ни manifest.json.

Мое очень простое расширение Bootstrap/Restartless, Кнопка «Печать» — это «Печать» (заменяет кнопку печати на печать вместо предварительного просмотра), имеет следующую структуру:

Archive contains:
  bootstrap.js
  chrome/
  chrome/content/
  chrome/content/options.xul
  chrome/skin/
  chrome/skin/printer-typeC128.png
  chrome/skin/printer-typeC32.png
  chrome/skin/printer-typeC48.png
  chrome/skin/printer-typeC64.png
  chrome.manifest
  install.rdf
  license.txt
Total 12 entries (42360 bytes)

Создание файла .xpi

Вы можете использовать любой метод для создания файла .zip, который будет переименован в .xpi. Имейте в виду, что единственным поддерживаемым методом сжатия является deflate, но файлы также могут быть добавлены в архив в несжатом виде. Ваши файлы верхнего уровня (например, любые файлы manifest.json (WebExtensions) или все остальное: chrome.manifest и install.rdf) должен находиться в корневом каталоге архива, а не в подкаталоге.

Для создания файла .xpi я использую пакетный файл, в котором используется комбинация DOS и Unix/Linux (фактически Cygwin) команды:

mkxpi.bat:

rm -f [email protected]
zip -1 -r [email protected] * [email protected]
pause

Это удалит любую старую версию файла .xpi. Затем он создает новый .xpi файл, используя, -1, минимальное сжатие (скорость доступа важнее, чем экономия места), что заставляет сохранять только несжатые файлы или использовать дефляцию. Новый .xpi будет содержать все файлы и подкаталоги *, но игнорирует все файлы в текстовом файле xpi.ignore ([email protected]). Игнорирование файлов используется, потому что у меня есть другие вещи в каталоге (например, каталог .git, файлы .bak, автоматически созданные из редактора и т. д.). Как только файл .xpi создан, скрипт выполняет pause, чтобы я мог проверить, какие файлы были включены, не было ли ошибок и т. д., вместо того, чтобы просто закрыть окно и предположить, что все в порядке.

Мой файл xpi.ignore немного длинноват, так как в нем накапливается хлам из разных проектов, и его редко удаляют:

*.com
*.class
*.dll
*.exe
*.o
*.so
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.log
*.sql
*.sqlite
*.svg
*/.DS_Store
*/.DS_Store?
*/._*
._*
*/.Spotlight-V100
.Spotlight-V100
*/.Trashes
.Trashes
*/ehthumbs.db
*/Thumbs.db
*.ORIG
*.bak
*OLD*
OLD/*
*/OLD/*
*.OLD
*.OLD[0-9]
*/OLD/*
*/OLD[0-9]/*
*.unknown
*.unknown[0-9]
*.updated
*.updated[0-9]
*/Copy *
*/OLD
*/OLD*
*/OLD[0-9]
*/OLD[0-9][0-9]
*/test/*
*/not in xpi/*
*/tmp
*.tmp
*/foo
*.foo
*checkpoint
.git
*/.git
.gitignore
*/.gitignore
xpi.ignore
mkclean.bat
mkclean.bat.DONTRUN
mkxpi.bat
*.xpi
*/devtools-toolbox-window.ico
*/devtools-webconsole.ico
*/JSConsoleWindow.ico
*/main-window.ico
*/places.ico
*/viewSource.ico

Установка расширений

Как обычные расширения:
Чтобы установить расширение как обычное дополнение в фирменную выпускную или бета-версию Firefox, оно должно быть подписан Mozilla. Это можно сделать, отправив его в AMO. Вы можете установить неподписанные расширения как обычные надстройки в другие версии Firefox (например, Firefox Developer Версия, Firefox Nightly, Бета-версия без торговой марки или выпуск без торговой марки), установив xpinstall.signatures.required на false в about:config.

При желании в конкретной установке Firefox вы можете полностью отключить требование подписи дополнений. Для получения дополнительной информации вы можете увидеть мой ответ: Как отключить проверку подписи для надстроек Firefox?

Установка расширения (например, файла .xpi) может быть простой задачей перетащите его в окно Firefox с профилем, в котором вы хотите его установить. Для разработки/тестирования расширение может находиться в каталоге на локальном диске. с помощью прокси-файла расширения Firefox (создайте файл с именем как <em:id> расширения (в install.rdf для Bootstrap/Restartless и Overlay/Legacy) в каталоге extensions профиля, содержащем одну строку с полным путем к каталогу, содержащему расширение файлы). В зависимости от вашей цели (один профиль, все профили, все пользователи, какая ОС и т. д.) существуют другие варианты того, как установить расширения.

В качестве временных надстроек:
Единственным типом расширения, которое нельзя установить в качестве временного дополнения, является Overlay/Legacy. Такие расширения требуют перезапуска браузера после установки, прежде чем они начнут работать. Как таковые, они не могут быть временными.

Чтобы установить расширение как временное, перейдите к about:debugging. На этой странице нажмите «Загрузить временную надстройку», затем перейдите во всплывающем окне к соответствующей папке и выберите файл .xpi или любой файл в каталоге. Если вы выберете файл, отличный от файла .xpi, предполагается, что каталог содержит распакованные файлы дополнений, которые будут автоматически идентифицированы.

25.06.2015
  • Этот ответ устарел и содержит мертвые ссылки. extensionworkshop.com/documentation/develop/ 11.03.2021

  • 2

    Создайте подписанный .xpi

    1. Установите web-ext с помощью NPM, возможно, вам понадобятся привилегии root: npm install --global web-ext
    2. Перейдите по адресу https://addons.mozilla.org/es/developers/addon/api/key/ и создайте новый КЛЮЧ API.
    3. Перейдите в папку расширения, откройте терминал и выполните: web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET где $AMO_JWT_IUSSER и $AMO_JWT_SECRET — это ключи, сгенерированные на предыдущем шаге.
    21.08.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование