最終更新日: 2008年 2月 12日
開発中のfirefoxの拡張機能をXPI形式にする場合、chrome.manifestファイルの修正が必要だったりと手間がかかります。 そこで、antを使用してXPIファイルの作成を簡略化します。
Antではbuild.xmlファイルが必要なので、これを開発中の拡張機能のトップディレクトリ(install.rdf等が有る場所)に作成します。
下記のサンプルでは、<property name="extension_name" value="extname" />のvalueの値を拡張機能の名前に変更します。 この場合、作成される拡張機能ファイルは extname.xpi となります。
<?xml version="1.0" ?> <project default="xpi"> <property name="extension_name" value="extname" /> <property name="desdir" location="." /> <property name="chromefile" value="chrome/${extension_name}.jar" /> <target name="jar"> <delete file="${chromefile}" /> <zip destfile="${chromefile}" basedir="chrome" /> </target> <target name="xpi" depends="jar"> <copy file="chrome.manifest" tofile="chrome.manifest.tmp" /> <copy file="xpi_chrome.manifest" tofile="chrome.manifest" overwrite="true" /> <zip destfile="${desdir}/${extension_name}.xpi" update="false" basedir="${desdir}" includes="${chromefile}, chrome.manifest, install.rdf" /> <copy file="chrome.manifest.tmp" tofile="chrome.manifest" overwrite="true" /> <delete file="chrome.manifest.tmp" /> <delete file="${chromefile}" /> </target> </project>
ファイルchrome.manifestのXPI用を作成します。 chrome.manifestは開発用とXPIファイル用で内容が異なりますので、XPI専用のchrome.manifestファイルをファイル名を"xpi_chrome.manifest"として作成します。
注. 上記のbuild.xmlではXPIファイルを作成する場合、XPIファイルの作成前にchome.manifestファイルの複製ファイル chrome.manifest.tmpを作成し、chrome.manifestを xpi_chrome.manifestで上書きします。その後、 XPIファイルを作成、chrome.manifestをchrome.manifest.tmpで上書きして元に戻します。
続いて、antを簡単に実行できるようバッチファイルを作成します。 Windows用バッチファイル名はxpi.batとでもして、中身は以下のようにします。
cmd.exe /K antただし、この例では環境変数にJavaやantのパスをデフォルトで設定しておく必要があります。 設定していない場合は、必要なパスを[マイコンピュータのプロパティ] -> [詳細] -> [環境変数] で設定します。
その結果、開発中の拡張機能のディレクトリには以下のようになります。
注. この例ではchromeディレクトリの下にcontent、locale等のディレクトリを置いています。
XPIファイルを作成したい場合、エクスプローラ等からxpi.batを実行します。 そうするとbuild.xmlファイルと同じディレクトリにXPIファイルが作成されます。
作成したXPIファイルを配布する場合、XPIファイルへのリンクだけでは通常のダウンロードで処理されます。 Firefoxに拡張機能として認識させたい場合、HTTPサーバのMIMEタイプの設定が必要となります。
Apacheの場合は、httpd.conf または、 .htaccessに以下の設定をします。
AddType application/x-xpinstall .xpi上記の設定がApacheに反映された場合、拡張子が.xpiのファイルをダウンロードすると以下のようなダイアログが表示されます。