Что такое формат файла XPI?
Файл с расширением .xpi содержит архив данных для установки дополнительного программного обеспечения Mozilla. Установочный пакет представляет собой ZIP-архив, сжатый методом deflate - он имеет те же магические байты PK (50 4B 03 04), что и стандартный ZIP-файл. Название расширения .xpi является сокращением от Cross-Platform Install - XPInstall, так называлась технология, использовавшаяся в оригинальном процессе установки.
Пакеты .xpi используются для установки и расширения функциональности таких приложений, как:
- Firefox,
- SeaMonkey,
- Thunderbird.
Файлы пакетов .xpi могут содержать плагины, расширения, темы или словари. Файл также хранит метаданные установки. В устаревшем формате XPInstall это были файл скрипта install.js и файл манифеста install.rdf; современные пакеты WebExtension (представленные в Firefox 57 в 2017 году) используют manifest.json вместе с JavaScript, HTML, CSS и иконками. Формат тесно связан с архивами JAR - оба являются ZIP-контейнерами со специфической внутренней структурой.
Подписанные файлы .xpi, распространяемые через addons.mozilla.org, содержат каталог META-INF/ с криптографической подписью Mozilla. Стандартные установки Firefox принимают только файлы .xpi, имеющие цифровую подпись Mozilla. Чтобы установить сторонние пакеты, не сертифицированные Mozilla, пользователи должны использовать Developer Edition версии Firefox и установить параметр xpinstall.signatures.required в значение false на странице about:config. Пакет можно установить, перетащив файл .xpi в окно браузера. Содержимое пакета .xpi можно просмотреть, изменив расширение файла на .zip и распаковав его любым архиватором.
Безопасность и защита
РИСК: MEDIUMXPI устанавливает код, который запускается внутри вашего браузера с запрашиваемыми разрешениями - вредоносное расширение может читать страницы, перехватывать данные форм или подменять результаты поиска. Именно поэтому Mozilla требует подписи: релизный Firefox устанавливает только те дополнения, которые Mozilla проверила и подписала, что блокирует большинство обычных вредоносных программ. Риск возрастает, когда вы обходите подпись (версии Developer/Nightly, about:debugging) или устанавливаете .xpi не из AMO - делайте это только для дополнений, которым доверяете, и читайте запрашиваемые разрешения при установке. Поскольку это ZIP, вы можете изучить manifest.json (и его список «permissions») с помощью 7-Zip перед установкой. Неожиданные файлы .xpi в папке «Загрузки» можно безопасно удалять; это временные установщики.
Детали формата
в двух словахПрограммы, открывающие файлы XPI
Технические подробности
глубокая спецификация| MIME-тип | application/x-xpinstall |
| Формат контейнера | ZIP-архив; магические байты 50 4B 03 04 («PK») со смещением 0, идентично локальному заголовку файла стандартного ZIP |
| Современный внутренний манифест | manifest.json, соответствующий WebExtension API, представленному в Firefox 57 (Quantum) в 2017 году |
| Устаревший внутренний манифест | install.rdf (метаданные RDF) и install.js (скрипт установки), использовавшиеся в системе XPInstall до WebExtension |
| Криптографическая подпись | Каталог META-INF/, содержащий файлы подписи, выданные Mozilla; требуется для всех пакетов, распространяемых через addons.mozilla.org |
| Требование подписи | Firefox стабильного канала отклоняет неподписанные файлы .xpi; чтобы разрешить установку неподписанных файлов, используйте Developer Edition и установите xpinstall.signatures.required=false в about:config |
| Поддерживаемые типы контента | Расширения браузера, темы, словари, языковые пакеты и поисковые плагины |
| Сжатие | deflate (стандартное сжатие ZIP); отдельные записи также могут храниться в архиве без сжатия |
| Межбраузерная совместимость | WebExtension API является общим с расширениями Chrome .crx и Edge; расширение с manifest.json в значительной степени переносимо между браузерами |
| Похожий формат | .crx (расширение Chromium/Chrome) использует аналогичную структуру на основе ZIP, но добавляет проприетарный заголовок CRX перед данными ZIP |
| Метод проверки | Переименуйте в .zip и откройте любым менеджером архивов (7-Zip, WinRAR и т. д.) для просмотра внутренних файлов без специальных инструментов |
| Хост-приложения | Mozilla Firefox (основное), Mozilla Thunderbird (почтовые дополнения), SeaMonkey |
| Канал распространения | addons.mozilla.org (AMO) - обеспечивает хостинг, проверку и подписание кода всех публично распространяемых пакетов |
| Инструмент сборки и упаковки | web-ext CLI - официальная утилита командной строки Mozilla для сборки, линтинга, запуска и подписания файлов .xpi |
| Поддержка платформ | Кроссплатформенность: Windows, macOS, Linux; также Android через Firefox for Android (Fenix) |
| Выпущен | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Открыть стандартное | Да · без роялти |
| Спецификация | extensionworkshop.com |