2007年09月20日

firefox拡張機能のxpiファイル化の簡略

開発中のfirefoxの拡張機能をXPI形式にする場合、chrome.manifestファイルの修正が必要だったりと手間がかかります。そこで、antを使用してXPIファイルの作成を簡略化します。

まず、antではbuild.xmlファイルが必要なので、これを開発中の拡張機能のトップディレクトリ(install.rdf等が有る場所)に作成します。
<?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>
注. <property name="extension_name" value="extname" />
のvalueの値、"extname"は目的の拡張機能の名前に変更します。

次にファイル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[ディレクトリ]
・install.rdf
・chrome.manifest
・xpi_chrome.manifest
・build.xml
・xpi.bat
注. この例ではchromeディレクトリの下にcontent、locale等のディレクトリを置いています。

XPIファイルを作成したい場合、エクスプローラ等からxpi.batを実行します。そうするとbuild.xmlファイルと同じディレクトリにXPIファイルが作成されます。
posted by jun1 at 23:03| Comment(0) | TrackBack(0) | firefox
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/5520559

この記事へのトラックバック