XPI ファイル形式とは?
拡張子 .xpi を持つファイルには、Mozilla ソフトウェアをインストールするためのデータアーカイブが含まれています。このインストールパッケージは deflate 方式で圧縮された ZIP アーカイブ であり、標準の ZIP ファイルと同じ PK マジックバイト(50 4B 03 04)を共有しています。.xpi という拡張子名は Cross-Platform Install - XPInstall の略称で、これは元のインストールプロセスで使用されていた技術の名前です。
.xpi パッケージは、以下のようなアプリケーションの機能をインストールおよび拡張するために使用されます:
- Firefox
- SeaMonkey
- Thunderbird
.xpi パッケージファイルには、プラグイン、拡張機能、テーマ、または辞書を含めることができます。また、ファイルにはインストールのメタデータも保存されています。 レガシーな XPInstall 形式では、これはスクリプトファイル install.js とマニフェストファイル install.rdf を意味していましたが、モダンな WebExtension パッケージ(2017年の Firefox 57 で導入)では、JavaScript、HTML、CSS、アイコンアセットとともに manifest.json を使用します。この形式は JAR アーカイブと密接に関連しており、どちらも特定の内部レイアウトを持つ ZIP コンテナです。
addons.mozilla.org を通じて配布される署名済み .xpi ファイルには、Mozilla の暗号署名を含む META-INF/ ディレクトリが含まれています。標準の Firefox インストールでは、Mozilla によってデジタル署名された .xpi ファイルのみが受け入れられます。Mozilla によって認定されていないサードパーティのパッケージをインストールするには、ユーザーは Firefox の Developer Edition を使用し、about:config ページでオプション xpinstall.signatures.required を false に設定する必要があります。パッケージは、.xpi ファイルをブラウザウィンドウにドラッグアンドドロップすることでインストールできます。.xpi パッケージの内容は、ファイルの拡張子を .zip に変更し、任意のアーカイブツールで解凍することで閲覧できます。
セキュリティと安全性
リスク: MEDIUMXPI は、要求された権限でブラウザ内部を動作するコードをインストールします。悪意のある拡張機能は、ページの読み取り、フォームデータの取得、ブラウジングの乗っ取りを行う可能性があります。そのため、Mozilla は署名を義務付けています。リリース版 Firefox は Mozilla がレビューおよび署名したアドオンのみをインストールするため、ほとんどのマルウェアをブロックできます。署名をバイパスする場合(Developer/Nightly エディション、about:debugging)や、AMO 以外から .xpi をインストールする場合はリスクが高まります。信頼できるアドオンのみをインストールし、インストール時に要求される権限を確認してください。ZIP 形式であるため、インストール前に 7-Zip などで manifest.json(およびその «permissions» リスト)を検査できます。ダウンロードフォルダにある心当たりのない .xpi ファイルは、削除しても安全な使い捨てのインストーラーです。
形式の詳細
概要XPI ファイルを開くプログラム
技術的詳細
詳細仕様| MIME タイプ | application/x-xpinstall |
| コンテナ形式 | ZIP アーカイブ。オフセット 0 にマジックバイト 50 4B 03 04(«PK»)があり、標準の ZIP ローカルファイルヘッダーと同一 |
| モダンな内部マニフェスト | 2017年の Firefox 57 (Quantum) で導入された WebExtension API に準拠した manifest.json |
| レガシーな内部マニフェスト | WebExtension 以前の XPInstall システムで使用されていた install.rdf (RDF メタデータ) および install.js (インストールスクリプト) |
| 暗号署名 | Mozilla が発行した署名ファイルを保持する META-INF/ ディレクトリ。addons.mozilla.org を通じて配布されるすべてのパッケージに必須 |
| 署名の要件 | リリースチャネルの Firefox は未署名の .xpi ファイルを拒否します。未署名のインストールを許可するには、Developer Edition を使用し、about:config で xpinstall.signatures.required=false を設定します |
| サポートされているコンテンツタイプ | ブラウザ拡張機能、テーマ、辞書、言語パック、検索プラグイン |
| 圧縮 | deflate (標準の ZIP 圧縮)。個々のエントリはアーカイブ内に非圧縮で保存されることもあります |
| クロスブラウザ互換性 | WebExtension API は Chrome の .crx や Edge の拡張機能と共有されています。manifest.json を使用する拡張機能は、ブラウザ間で高い移植性があります |
| 関連形式 | .crx (Chromium/Chrome 拡張機能) は同様の ZIP ベースのレイアウトを使用しますが、ZIP データの前に独自の CRX ヘッダーを付加します |
| 検査方法 | 拡張子を .zip に変更し、任意のアーカイブマネージャー(7-Zip、WinRAR など)で開くことで、特別なツールなしで内部ファイルを閲覧できます |
| ホストアプリケーション | Mozilla Firefox (主要)、Mozilla Thunderbird (メールアドオン)、SeaMonkey |
| 配布チャネル | addons.mozilla.org (AMO) - 公開配布されるすべてのパッケージのホスティング、レビュー、コード署名を管理 |
| ビルドおよびパッケージングツール | web-ext CLI - .xpi ファイルのビルド、リンティング、実行、署名を行うための Mozilla 公式コマンドラインユーティリティ |
| プラットフォームのサポート | クロスプラットフォーム:Windows、macOS、Linux。また Firefox for Android (Fenix) を介した Android |
| リリース日 | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | extensionworkshop.com |