インストーラの作成
今までは作成したXULアプリケーションのために手書きでinstalled-chrome.txtを編集していたが,エンドユーザにこの作業を強いるのは厳しい.そこで,インストーラを作成してみた.
いきなりfirefox拡張機能を作成したかったのだが,作業の区切りがよさそうなので,この頁ではXULアプリケーションを自動でchromeシステムに導入するためのインストーラを作成する.
つまり,インストーラはxpiという拡張子をもつのだが,そのxpiファイルをfirefox上で選択することによって,そのxpiファイル内のXULアプリケーションがchromeシステムに組み込まれるようになる.
このxpiファイルを使用したmozillaへのインストールの仕組みはXPInstallと呼ばれている.
XPInstallはプラグイン,パッケージ,コンポーネントのmozillaへのインストールに使用される.
この頁の作業では,メニューバーのツール-には現われない.
つまりXULアプリケーションはfirefox拡張機能として扱われず,起動には今まで通りchromeURLoを指定する必要があるが,この頁ではまずそこまでを目標とする.
xpiファイルはzipファイルである.
xpiファイルにはインストールに必要なあらゆるファイルを配置できる.
xpiファイルには必ずinstall.jsファイルが必要である(※).
今回作成するサンプルの構成を以下に示す.
- install.js
- インストール手順が記述されたJavaScriptファイル.インストーラ作成作業のメインはこのファイルの作成である.
- chrome
- この下にXULアプリケーションを置く.今回は今まで作成してきたjarファイルをそのまま置く.
$> jar tvf mycalculator.xpi
0 Thu Mar 17 22:39:56 JST 2005 chrome/
11451 Thu Mar 17 22:39:50 JST 2005 chrome/mycalculator.jar
2511 Wed Mar 16 23:04:22 JST 2005 install.js
chrome/mycalculator.jarは今まで作成してきたサンプルのjarファイルである.
今回はさらに上記の構成でinstall.jsとともにjarしたわけである.
モノによってはchromeと同列にcomponentなどのディレクトリを作成して,とにかくXULアプリケーションで使用する全てのファイルを一つのxpiファイルに格納できるらしい.
このサンプルをブラウザから開こうとすると,インストールが始まる.
ただしHTTPで落とす場合はWebサーバが対応していないとインストールは始まらない.
そういった場合は一旦ディスクに落としてそれを読み込むようにする.
※ これは古い使用である.
実はFirefox0.9以降ではinstall.jsではなくinstall.rdfによるインストールシステムとなっている.
install.rdfについては次頁にて記述する.
インストールが完了すると,chromeURLにより,今まで通りサンプルのXULアプリケーションが起動できる.
今までとの違いは,XULアプリケーション導入過程にてinstalled-chrome.txtを記述する必要がなくなったということである.
もう一点の違いは,install.jsの記述内容によるものなのだが,mycalculator.jarが
~/.mozilla/firefox/プロファイル名/chrome/に配置される点である(※). 削除するには,単にjarファイルを削除する.
※ インストール時のダイアログに対する回答次第では今まで通りの場所に格納される.
以下にサンプルのinstall.jsを示す.
これはWeb Developerのinstaller.jsを修正したものである(※).
以下をサンプルのために修正した.
- author
- 作者名.
- displayName
- (アプリケーション)パッケージの表示名.
- name
- (アプリケーション)パッケージの名前.
- jarName
- (アプリケーション)パッケージのjarファイルの名前
- version
- (アプリケーション)パッケージのバージョン.
- registerChrome(contentFlag, folder, "content/" + name + "/");
- (アプリケーション)パッケージのcontentのchromeURL.これがinstalled-chrome.txtに記述される.
- registerChrome(localeFlag, folder, "locale/en-US/" + name + "/");とregisterChrome(localeFlag, folder, "locale/ja-JP/" + name + "/");
- (アプリケーション)パッケージのlocaleのchromeURL.これがinstalled-chrome.txtに記述される.
- registerChrome(skinFlag, folder, "skin/classic/" + name + "/");
- (アプリケーション)パッケージのskinのchromeURL.これがinstalled-chrome.txtに記述される.
※ firefoxのextentionをチラッと見たところ,install.jsにはいくつかのパターン(変数設定以外ほぼ同じな仲間)があるようだ.
これはそのうちの一つである.

