今日公開されたFireFox3をインストールしたところ、これまで使えていた自作の拡張機能(アドオン)が使えなくなった、そんなとき。
FireFox3になって拡張機能(アドオン)の安全性をチェックする仕組みが厳しくなったためです。
基本的な 対処方法はこちらのページに詳しく書かれています。
こちらで紹介されている方法で、当然できると思うのですが、必須であるMcCoyというプログラムが、コマンドラインに対応していないのがどうにも気に入りません。
拡張機能(アドオン)のバージョンアップのたびにGUIを立ち上げなければいけないこと、バージョンアップ作業をするマシンと拡張機能(アドオン)を配布しているサーバとでファイルをやりとりしなければいけないこと、この2つの操作が煩雑になってしまうと、今後更新が面倒になるのが目に見えるようです。
いろいろと調べて試行錯誤を行って、リモートからコマンドラインで簡単に拡張機能(アドオン)を配布できるようにしました。
結論からいうと、次のような作業を行いました。
まず、FireFox3にインストール可能な拡張機能(アドオン)の作成方法です。
- McCoyをダウンロードする(普段使っているWindowsマシン)
- McCoyを使って鍵を作成する(Windowsマシンで行った)
パスワードは設定しないこと(これは別のプログラムから使えるようにするためです)。 - 拡張機能(アドオン)のinstall.rdfに公開鍵を登録する
<em:updateKey>公開鍵</em:updateKey>
このinstall.rdfを含むxpiファイルを作成すれば、FireFox3にインストールできるようになります。
次に、 FireFox3で更新可能な拡張機能(アドオン)の作成方法です。
- McCoyを使って作成した鍵データ(key3.db)を、拡張機能を配布するマシンにコピーする(Debian Etch)
例えば、key3.dbはC:\Documents and Settings\ユーザ名\Application Data\Mozilla\McCoy\Profiles\謎の文字列.default\ にあります
key3.dbを、例えば、~/.mozilla/mccoy/謎の文字列.default/ にコピーします - spockをダウンロードする。spockを展開する
wget http://repo.hyperstruct.net/spock/spock.tar.gz
tar zxvf spock.tar.gz - spockに必要なパッケージを入れる。
debian etchの場合
aptitude install libxml libxml-ruby libxslt libxslt-ruby
aptitude install libnss3-0d libnss3-dev libnspr4-0d libnspr4-dev - spockにパッチをあてる
パッチをあてていないと、xpiファイルのハッシュを計算できません(*)。
適用例
wget http://repo.hyperstruct.net/spock/spock.tar.gz
tar zxvf spock.tar.gz
cd spock
wget http://unicus.jp/pub/spock.debian-etch.patch
patch < spock.debian-etch.patch - あとは実際にやってみましょう!
利用例
./spock [署名なしのupdate.rdf]\
-i urn:mozilla:extension:[拡張機能の名前]\
-d ~/.mozilla/mccoy/[謎の文字列].default/\
-f [xpiファイル] > [署名済みのupdate.rdf]
ぼくのところではこうして作った更新用のRDFファイルでFireFox3から更新できました。
ちなみに、 xpiファイルのハッシュを計算するところでこんなエラーが出ます。
そのまま実行すると、
./spock:62: uninitialized constant Digest::SHA256 (NameError)
require ‘digest’ を require ‘digest/sha2′ に書き換えてから実行すると、
./spock:62: undefined method `file’ for Digest::SHA256:Class (NoMethodError)