XULRunner アプリケーション, 拡張機能, および テーマ のすべてが共通のディレクトリ構造を共有しており、いくつかのケースでは同じ bundle をインストールできるアプリケーション拡張だけではなく単体のXULRunner アプリケーションにも使っています。bundleの基本構造は、次のファイルを含むことができます:
/install.rdf拡張機能/テーマの Install Manifest /application.iniアプリケーション起動 Manifest /components/*Component and XPT Files (>=1.7) /defaults/preferences/*.jsDefault Preferences (>=1.7) /plugins/*NPAPI Plugins (>=1.8) /chrome.manifestChrome Registration Manifest (>=1.8) /chrome/icons/default/*Window Icons (>=1.8)
もちろん、拡張機能はこれらのすべてのディレクトリを持っている必要はありません。(普通は持っていません) テーマにはセキュリティ上の制限があり、通常テーマおよびJARファイルを登録するためのchrome.manifestだけが備えられます。
プラットフォーム特定のサブディレクトリ
いくつかの場合、単一の拡張またはアプリケーションに複数プラットフォームのバイナリコンポーネントやプラグインを含めたいことや、テーマ作者が複数プラットフォームに別のJARファイルを含めたいことがあるかもしれません。最初のケースを促進するために、拡張/アプリのローダはプラットフォーム特有のファイルのための特別のサブディレクトリを持っています (Toolkit/Gecko 1.8、Firefox/Thunderbird 1.5 から)。platform string は toolkit のビルドの過程において決定され、OS・プロセッサーアーキテクチャ・コンパイラの組み合わせからなるユニークな値になります。platform string のフォーマットは以下のとおり:
{OS_TARGET}_{TARGET_XPCOM_ABI}
もし以下のようなサブディレクトリが存在した場合、mainな拡張のディレクトリからロードされる全てのファイルはそこからロードされます。
/platform/{platform string}
たとえば、プラグイン作者がそのプラグインを Linux, Macintosh, Windows のいずれが走っているコンピュータでも使えるようにしたいとき、以下のようなファイルを提供することになります。
/platform/Linux_x86-gcc3/plugins/libMyPlugin.so /platform/WINNT_x86-msvc/plugins/MyPlugin.dll /platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
XPT ファイルはプラットフォーム依存ではないため、関連付けられた全ての XPT ファイルは汎用のディレクトリに配置されます。
/components/MyPlugin.xpt
もし拡張がバイナリではないプラットフォーム特有のコード (たとえば、Windows のレジストリをスクリプトから利用するようなコード) を含む場合も、OS名のみを冠したプラットフォーム・サブディレクトリを使用することができます。
/platform/WINNT/components/registerDoctype.js
プラットフォーム依存の JAR ファイルが使用されるとき、それぞれのプラットフォームディレトクリは個別に chrome.manifest
ファイルを持つ必要があります。
chrome.manifest chrome/mytheme-base.jar platform/Darwin/chrome.manifest platform/Darwin/chrome/mytheme-mac.jar platform/WINNT/chrome.manifest platform/WINNT/chrome/mytheme-win.jar
アプリケーションローダ/拡張ローダはまず基底ディレクトリを処理し、次に利用可能なプラットフォームディレクトリ(まず /{OS_TARGET}/、それから /{OS_TARGET}_{TARGET_XPCOM_ABI}/)を処理します。もしデフォルトの設定が複数のディレクトリで定義されていた場合、ローダは後に読み込んだもので先に読み込んだものを上書きします。
Application-specific Extension Files
上で述べた拡張ファイルに加えて、アプリケーションは拡張からさらに別のファイルを読み込むことができます。たとえば、Firefox 1.5以降は、Sherlock search plugins を以下のファイルから読み込みます。
/searchplugins/*.src
Firefox 2以降は、それに加えてMozSearch and OpenSearch plugins を以下のファイルから読み込み、
/searchplugins/*.xml
Myspell辞書を以下のファイルから読み込みます。
/dictionaries/*.{aff|dic}
Official References for Toolkit API
- Structure of an Installable Bundle: describes the common structure of installable bundles, including extensions, themes, and XULRunner applications
- Extension Packaging: specific information about how to package extensions
- Theme Packaging: specific information about how to package themes
- Multiple-item Extension Packaging: specific information about multiple-item extension XPIs
- XUL Application Packaging: specific information about how to package XULRunner applications
- Chrome Registration