Firefox野良アドオンに自動更新機能を実装する方法

昔は簡単にできたらしいが、今はそういうわけにいかない。
SSLを使わない場合の方法。


行う作業

  1. インストールマニフェスト( install.rdf )の編集
  2. サーバーに置くアップデートマニフェスト( .rdf )の作成
  3. McCoyのセットアップ
  4. McCoyによるキーとシグネチャーのインストール
  5. アップデートマニフェストの修正とシグネチャーの再インストール


1、インストールマニフェスト( install.rdf )の編集
どのアドオンでも install.rdf は必須なので既に存在はしているだろうが、ここにアップデート情報を得るURL(アップデートマニフェストを置くURL)とキーのタグを記述する。

http://www.sample.com/addons/update.rdf

キーはまだないのでタグだけ書いておく。



2、サーバーに置くアップデートマニフェスト(.rdf)の作成
https://developer.mozilla.org/en/Extension_Versioning%2c_Update_and_Compatibility#Update_RDF_Format などを参考に作成する。
.xpi のハッシュを


タグに書く点に注意。
形式はsha1、sha256、sha386、sha512が使えるようだが、386と512は問題があるらしいので、1か256を使う*1 *2
上記サイトで最後に


とあるが、この段階ではまだシグネチャーは分からないのでタグだけ書いておけばいい。



3、McCoyのセットアップ
McCoyとはつまりMozillaアドオン専用キージェネレータであり、これを使ってインストールマニフェストとアップデートマニフェストにキーとシグネチャーを追加する。
https://developer.mozilla.org/en/McCoy でもらってきてインストール。
セットアップについては今これを読んでいる人に説明は必要無いだろう。
スターパスワードは必ず設定しておく。不慮の事故防止。



4、McCoyによるキーとシグネチャーのインストール
インストールマニフェストとアップデートマニフェストの2つのファイルはこの作業でがっつり書き換えられてしまうので、この先に進む前にバックアップをコピーしておいた方がいいと思う。

キーを作成したらそれを選択し、"Install"でインストールマニフェストにキーを、"Sign"でアップデートマニフェストシグネチャーを書き込む。
"Verify"でシグネチャーがきちんとキーに対応したものになっているか確認できる。
一度使い始めたキーはその後ずっと使いつづけることになり、またアップデートの度に新しいシグネチャーを生成する必要があるので、上記McCoyのページにもあるようにすぐにバックアップをとっておくべき。


なんだか作業は終わった雰囲気になるだろうが、このままでは機能しない。



5、アップデートマニフェストの修正とシグネチャーの再インストール
アップデートマニフェストの内容は次のような感じに4つのパートになっているはず。


  


  


  


ここでは便宜上こういう順番で書いているが、実際には違う順序なはず。
このファイルは行の順序を入れ替えてはいけない。行の順序もシグネチャーの対応要件になっていて、入れ替えるとそのシグネチャーは不正となる。シグネチャーを生成すると都度4つのパートはランダムに入れ替わる。
#$1FA0Z9 とか #$5FA0Z9 の下何桁かはランダムに決まる模様。


これを以下のように書き換える。


  


   ←修正

    ←追加
  


さらに、ハッシュを、キーをインストールした install.rdf を入れた .xpi のハッシュに書き換え。
その後McCoyで再度Sign。
今度は2ヶ所にそれぞれ違うシグネチャーが書き込まれている。2つ必要。


できあがったキー入り .xpi とアップデートマニフェストをアップロードすれば、自動更新機能を組み込んだアドオンから利用できるようになる、はず。


実際の動作の確認は、

  • about:configextensions.logging.enabledtrue にし、
  • Firefoxをコンソールから -console オプションを付けて起動し、
  • アドオンマネージャからアドオン一つだけを選んで更新の確認をし、
  • 表示されるログをチェックする。

*1:どういう問題だったかきちんと確認・記録していなかった。勘違いだったかもしれない。

*2:2007年当時一時期バグがあって使えなかったらしい。修正済み。