Repackaging Firefox

Firefox は、例えば社員やクライアントといった、特定のユーザグループのニーズに合わせてカスタマイズできます。また、開発当初から柔軟性やカスタマイズ性を考慮して設計されているので、カスタマイズの手順は単純で管理も容易です。

大切な法的留意事項

作業に取りかかる前に、大切なこととして、Firefox の配布に関する法的な事項を理解し遵守してください。Firefox の改変版を配布するにあたっては、Mozilla からの書面による認可が必要です。認可を得るためには、licensing@mozilla.com にご連絡ください。

まずはじめに

では、技術的な詳細に移ります。下の図は、手順および関係する部品の概要です。

画像:Repackaging overview graph-1.jpg

作業をはじめるにあたって、次のものが必要になります。

  • Macintosh コンピュータ (Windows または Linux のみを対象にしている場合でも必要です);PowerPC であるか Intel ベースであるかは問いません。
  • 再パッケージ用ツール. 現在、リンク先のページは Firefox 1.5.x にしか言及していませんが、Firefox 2 にも適用できます。
  • 必要なロケールに対応した素の Firefox 2 インストーラファイル (Windows .exe, Mac .dmg, または Linux .tar.gz)。この資料の執筆時点での最新ビルドは、 こちら にあります。
  • 必要に応じた変更を施すための「distro extension」。

これらすべてをインストールしたら、カスタム手順はかなり簡単です。

  1. Firefox インストーラをダウンロードします。
  2. 他の Mac アプリケーションと同じように再パッケージ用ツールをインストールします。起動して、GUI が表示されるか確認します。
  3. Firefox をカスタマイズするための拡張機能を用意します。

distro extension

変更点すべて (例:標準のホームページの変更や標準ブックマークの追加) を、ひとつの Firefox 拡張機能として集約できます。私たちは、このような拡張機能を 「distro extension」 と呼びます。 というのも、これで、新しいブランド名を付けたりと、Firefox の新しい 「ディストリビューション」 を作成できるからです。拡張機能を利用することで、Firefox の新バージョンへとアップグレードする際に、変更点が簡単に追跡できるようになるとともに、ユーザ側のメリットとしては、設定が正しく行われていれば、Mozilla が配布する Firefox のアップデートを安全に受け取れるようになります。さらに詳しく説明しましょう。

この記事の目的は、拡張機能の作成方法を解説することではありませんが (拡張機能の作成方法は、Mozilla Developer Center にある このセクション を参照してください)、ここに簡単なチュートリアルとしてまとめておきます。また DEX を作成するにあたっての具体的なヒントも記載しておきます。

Firefox にバンドルしたい拡張機能がすでに手元にあり、標準設定を数カ所変更する以外に他に拡張機能をバンドルしたくない場合は、既存の拡張機能で必要な作業をすべて行うことができます。そうはいっても、このチュートリアルには目を通しておくことをお奨めします。というのも、このチュートリアルには、こうしたタイプの拡張機能を作成する際に特有のヒントが掲載されていますし、ユーザがスムーズにアップグレードできるようにするためにいくつかのオプションを変更する必要もあるからです。最低限、「重要な拡張機能設定項目」 というセクションだけは必ず目を通しておいてください。

サンプル DEX

作業を開始するにあたってのベストな方法は、シンプルな DEX を参考にして、必要に応じて変更を施すというものです。こちらの 画像:Sample.xpi をダウンロードします (リンクを辿り、右クリックから 'リンク先を保存...' を選択します)。XPI ファイルの実体は ZIP ファイルです。解凍にあたっては、どの ZIP プログラムを使ってもかまいません (Windows では WinZIP、Mac や Linux では zip など)。この XPI には次の内容物が含まれています。

chrome.manifest
components/PartnerBookmarks.js
defaults/preferences/partner.js
install.rdf
locale/ar/partner.properties
locale/cs/partner.properties
locale/da/partner.properties
locale/de/partner.properties
locale/el/partner.properties
locale/en-GB/partner.properties
locale/en-US/partner.properties
locale/es-AR/partner.properties
locale/es-ES/partner.properties
locale/fi/partner.properties
locale/fr/partner.properties
locale/he/partner.properties
locale/hu/partner.properties
locale/it/partner.properties
locale/ja/partner.properties
locale/ja-JP-mac/partner.properties
locale/ko/partner.properties
locale/nb-NO/partner.properties
locale/nl/partner.properties
locale/pl/partner.properties
locale/pt-BR/partner.properties
locale/pt-PT/partner.properties
locale/ru/partner.properties
locale/sk/partner.properties
locale/sv-SE/partner.properties
locale/tr/partner.properties
locale/zh-CN/partner.properties
locale/zh-TW/partner.properties
partner-bookmarks.xml

上のファイルを一つ一つ見ていきましょう。

<tt>chrome.manifest</tt>

XPI に含まれるコンポーネントのリスト。

<tt>components/PartnerBookmarks.js</tt>

CCK 拡張機能からで、プロファイル作成の際に標準ブックマークを操作できるようにします。このファイルを編集する必要はありません。

<tt>defaults/preferences/partner.js</tt>

この DEX のための標準設定。

<tt>install.rdf</tt>

作者 (所属組織)、ユニーク ID、対象となる Firefox のバージョンといった、拡張機能のメタ情報。

<tt>locale/*/partner.properties</tt>

ローカライズが必要な設定情報。対象ロケールで求められる値が記載された各プロパティファイルには、エントリーが記載されていなければなりません。

値が *すべての* ロケールについて同じ場合には、<tt>partner.js</tt> ファイルそのものに設定を書き込むことができます。より詳しくは 「Preferences」 セクションを参照してください。

<tt>partner-bookmarks.xml</tt>

標準ブックマークはここで設定されています。

必要なものは以上です! ここで全ファイルを確認してください。参考資料として MDC も忘れずに。

ロケール

インストーラ配布対象予定のロケール (そのため再パッケージが必要です) と、お使いの DEX でサポートされているロケールとの間には違いがあります。可能なら、お使いの DEX は Firefox がサポートするすべてのロケールをサポートするようにしておくと良いでしょう。

というのも、2 種類のロケールをサポートする DEX を作成して出荷し、後になって 3 番目のロケールを出荷することになった場合、第 3 のロケールをサポートするために DEX を作り直す必要があります。つまり、DEX のバージョンを変更しなければならないことになり、過去のバージョンを使っているユーザは必要がないのにアップグレードしなければならなくなります。

一方、すべてのロケールをサポートする DEX を作成してしまえば、当初はロケール数が少なくても、アップグレードの手間なくサポートロケールを増やせます。

もちろん、この方法は文字列のローカライズが必要ない場合か、プログラミング的にローカライズ可能な場合 (例:http://<locale>.example.com/ のように、URL にロケールを追加するだけの場合) に限りますが、ロケールサポートを考える上では考慮に値する方法です。

設定項目

設定項目は、拡張機能のなかで設定したい 2 つの主要なもののうちの一つです (もう一つはブックマークです)。Firefox には 2 種類の設定項目があり、両方とも <tt>partner.js</tt> ファイルにあります。

  • ローカライズ可能な設定項目。Firefox がローカライズされた値を引っ張って来れるプロパティファイルをポインティングする <tt>chrome://</tt> URI の値を持っています。
  • ローカライズ不能な設定項目。直接 <tt>partner.js</tt> に書き込まれた値を持っています。

次のように、直接 <tt>partner.js</tt> ファイルにローカライズ可能な設定項目のための値を設定することも可能です。

pref("localizable.preference.name", "data:text/plain,localizable.preference.name=Some value.");

そうすれば、その設定項目のためにプロパティファイルを利用する必要はなくなります。そのため、設定項目の *すべて* で同じ値を利用できる場合、プロパティファイルは一切必要なくなります。

ただし、どの設定項目がローカライズ可能で、どの設定項目がローカライズ不能なのかは理解しておく必要はあります。この点についてより詳しくは MDC にある資料を参照してください。

重要な拡張機能設定項目

Mozilla が提供する設定項目のセットがあります。この設定項目は、あなたのディストリビューションを追跡し、それに応じてアップグレードの計画を立てるためのものです。この項目を利用すれば、Mozilla からあなたのディストリビューションに対してアップグレードを配布することができるようになります。ですから、これら設定項目はもっとも重要なものと言えます。

必要な値は Mozilla が提供します。<tt>app.partner.'name'</tt> 設定では、名称および設定値の両方で同じ値を使っていることに留意してください。

これらの設定は、すべてローカライズ不能ですので、直接 <tt>partner.js</tt> で設定され、プロパティファイル内にある必要はありません。

mozilla.partner.id=<name>
app.partner.<name>=<name>
app.distributor=<name>
app.distributor.channel=<name>
その他の設定項目

設定の中には、パートナーディストリビューション共通の設定があります。ただし、ここでは設定項目をすべて列挙することはしません。もし、多くのパートナーが再パッケージを行う際に便利だと思われる設定項目を見つけた場合は、同じようなスタイルを用いて、下にその項目を追加してください。

ローカライズ不能な設定項目
browser.EULA.2.accepted=<boolean>

この設定項目を false にすると、Firefox は初回起動時にエンドユーザライセンス許諾を表示します。標準設定では true になっていますので、Firefox はライセンス許諾を表示しません。

ローカライズ可能な設定項目
browser.startup.homepage=<string>
browser.startup.homepage_reset=<string>

標準ホームページの URL と、ユーザが設定項目で "標準設定に戻す" とした場合に復旧されるホームページ。これら二つとも同じ URL でなければなりません。

startup.homepage_welcome_url=<string>

初回起動時に表示されるページの URL。これは、Firefox が初めて実行された時に、ホームページと共に表示されます。

browser.search.defaultenginename=<string>

標準の検索エンジンの名前。ここでは、ドロップダウンメニューに表示される検索エンジンの順番は変更されず、標準エンジンの選択のみができます。大文字・小文字の区別があります。

Firefox の再パッケージ

必要な部品がすべてそろったら、あとは再パッケージ用ツールを立ち上げて、フィールドに入力してカスタマイズインストーラを設定するだけです。

画像:Repackager.jpg

  • 「Extension」 セクションではあなたの DEX を説明します。「Choose」 をクリックして、あなたの拡張機能が含まれている XPI ファイルを選択します。ID および Name フィールドは自動的に入力されます。
    • Firefox 2.0.0.3 以前を再パッケージする際は、必ず最新の再パッケージ用ツールをダウンロードしてください。最新版には、新たなチェックボックスが追加されており、起動時に設定移行ウィザードの起動を無効化できます。ホームページが標準とは異なる場合、このチェックボックスに印をつけて、設定移行ウィザードが上書きしてしまわないようにします。
  • 「Additional XPI」 セクションでは、カスタマイズインストーラにバンドルする 2 つ目の拡張機能を選択できます。2 つ目の拡張機能をインストールしない場合は、空欄のままにしておきます。
  • 「Repackaging」 セクションでは、実際の再パッケージ作業そのものを設定します。
    • まず、「Choose」 でソースディレクトリを指定します。ソースディレクトリとは、カスタマイズしたい元のオリジナル Firefox の Windows インストーラ、Mac ディスクイメージ (.dmg)、Linux tarball のことです。
    • 次に、カスタマイズインストーラを保存したいディレクトリをターゲットディレクトリとして設定します。
  • 「Platforms」 セクションでは、カスタマイズインストーラが対象とするプラットフォームを選択します。生成したいプラットフォームの横のボックスにチェックを入れます。ソースディレクトリに、各プラットフォームごとの標準の Firefox インストールパッケージがあることを必ず確認してください。ソースディレクトリにある各プラットフォームに対応した元のインストーラパッケージの名前が、チェックボックスの横に表示されます。

再パッケージ用ツールが処理をし、カスタマイズインストーラを指定したターゲットディレクトリに書き出していきます。新しい Firefox インストーラを配布する前に、上述の許可を取得することを忘れないでください。

Document Tags and Contributors

Contributors to this page: Yama
最終更新者: Yama,