概要
cfx xpi コマンドの「--update-url」オプションと「--update-link」オプションを使うことで、 Jetpack 拡張を Firefox の更新チェック機能に対応させることができる。
更新チェックの仕組み
Jetpack 拡張の更新チェックの仕組みは、従来の拡張と全く変わらない。 拡張に含まれる install.rdf の設定に従って配布サイトに問い合わせ、 もし新しいバージョンがリリースされていればダウンロードするようになっている。 install.rdf に配布サイトの指定がない場合は Mozilla 公式の配布サイトである AMO (addons.mozilla.org) に対して問い合わせが行われる。 また、開発者のホームページで更新を配布する場合、 サイトが HTTPS (SSL による暗号化通信) に対応している場合と対応していない場合で制約条件が異なり、 HTTPS に対応しない場合は別途更新ファイルの安全性を保証する必要がある。
配布サイト
自作の拡張を更新チェックに対応させる場合、まずは配布サイトを決定しなければならない。 選択肢としては、「AMO を使う」「HTTPS サイトを使う」「HTTP サイトを使う」の 3 つが存在する。以下、それぞれの特徴を挙げる。
- AMO (addons.mozilla.org) を使う
- 公式サイトであり、ユーザの安心感が高くフィードバックも得られやすい。
- mimetype など、サーバの設定に関して悩む必要がない。
- レビューに時間がかかり、最新版がすぐに反映されない場合がある。
- HTTPS サイトを使う
- 手軽に拡張を配布できる。
- 正当な証明書で認証された HTTPS サイトが必要。
- HTTP サイトを使う
- HTTP サイトさえあれば拡張を配布できる。
- 定義ファイルへの署名やハッシュ文字列の埋め込みが必要。
- Add-on SDK では対応していないため、手作業で定義ファイルの修正が必要。
AMO を使う場合
AMO (addons.mozilla.org) を使う場合の方法は従来の拡張と同じである。 「cfx xpi」で拡張を作成して AMO にアップロードすればよい。 Add-on Builder を使っている場合は「Download」ボタンから XPI ファイルをダウンロードし、 AMO にアップロードする。 将来的には、Add-on Builder と AMO が連携することで、 より簡単に拡張を更新できる仕組みが整えられるものと期待される。
HTTPS サイトを使う場合
開発者のホームページで更新を配布する場合、update.rdf (更新情報ファイル) の URL と拡張自身の配布 URL という 2 つの URL を決定する必要がある(このページの最初の図を参照)。 この 2 つの URL は、自分の管理するサイトの中で適切なものを用意する。 ここでは、例として update.rdf の URL を「https://example.com/myaddon.update.rdf」、 拡張の配布 URL を「https://example.com/myaddon.xpi」とする。 拡張を作成したら、次のように「cfx xpi」コマンドに「--update-url」オプションと 「--update-link」オプションを渡して 2 つのファイルを作成する。
(D:\jetpack) D:\jetpack\packages\myaddon>cfx xpi --update-url=https://example.com/myaddon.update.rdf --update-link=https://example.com/myaddon.xpi
Exporting update description to myaddon.update.rdf.
Exporting extension to myaddon.xpi.
(D:\jetpack) D:\jetpack\packages\myaddon>
ここで、生成されるファイル名はアドオン名を元につけられるもので、URL とは無関係である。 ファイル名を変更したくないのであれば、 「アドオン名.update.rdf」および「アドオン名.xpi」という URL にすればよい。 生成されたファイルを確認すると、 myaddon.update.rdf 内に 「<em:updateLink>https://example.com/myaddon.xpi</em:updateLink>」 という情報が、 myaddon.xpi を ZIP 形式として展開した中の install.rdf 内に 「<em:updateURL>https://example.com/myaddon.update.rdf</em:updateURL>」 という情報が入っていることがわかる。
ファイルが生成できたら、入力した URL に従ってファイルを配置する。 ただし、update.rdf ファイルは、mimetype を text/rdf もしくは text/xml として送信しなければならない。 Apache であれば .htaccess ファイルなどで指定する。
AddType text/rdf .rdf
拡張更新時に同じ URL の update.rdf を更新すれば、既存のユーザに通知される。
なお、SDK 0.9 までは「--update-url」「--update-link」の代わりに 「-u」「-l」という短い形式のオプションを使うことができたが、 SDK 1.0b1 で廃止された (Bug 614129)。
HTTP サイトを使う場合
HTTP サイトを使う場合、上記 HTTPS サイト向けの手順に加え、 update.rdf の署名および XPI ファイルのハッシュの明記が必要となる。 cfx コマンドのオプションでは実行できないため、 手作業で update.rdf および install.rdf を編集する。 編集方法は関連リンク参照。
関連リンク
- Extension Versioning, Update and Compatibility - MDC
- Install Manifests - MDC
- https://jetpack.mozillalabs.com/sdk/latest/docs/#guide/cfx-tool
- Firefox 3ではじめる拡張機能開発:第8回 電子署名済みアップデートマニフェストを用いた拡張機能の配布|gihyo.jp … 技術評論社
- Bug 614129 - change cfx options based on usage expectations
更新履歴
- 2010/12/19: -u オプションと -l オプションは廃止されたため記述を修正。
- 2010/09/25: 初版作成。