[PR]看護師の好条件な求人情報満載:「夜勤は嫌!」など希望の転職が実現♪

XUL チュートリアル - 1.4 - マニフェストファイル
戻る 内容 リファレンス 進む

XUL チュートリアル - マニフェストファイル

このセクションでは、クロムファイルと XUL ファイルをパッケージにして、それらのマニフェストファイルを作る方法を見ることにします。

パッケージ

パッケージとは、ユーザーインターフェースの機能を定義する XUL ファイルとスクリプトのセットです。パッケージは、Mozilla にインストールされ、クロム URL を使って参照される場合があります。

パッケージは、必要となるどんなファイルも含むことができます。また、パッケージの様々な部分のため、サブディレクトリーに分割される場合があります。例えば、ブックマークとヒストリービューアーはコミュニケーターパッケージの一部ですが、別のサブディレクトリに保存されます。

パッケージを保存するには 2 種類の方法があります。ディレクトリーとして、あるいは、JAR アーカイブとしてです。個々のパッケージには、パッケージを記述するマニフェストファイルである contents.rdf ファイルがあります。このファイルは、それが記述するファイルとともに、JAR ファイル内に置かれます。ファイルは、contents.rdf という名前でなければならず、RDF (Resource Description Framework) フォーマットのファイルです。RDF については、後で、もっと学びます。

マニフェストファイル (Manifest File)

contents.rdf ファイルには、パッケージの内容を記述します。それは、スキンとロケールを記述するためにも使われます。

マニフェストファイルは、いったんその方法が分かれば、かなり簡単なものです。以下のテンプレートは、出発点として使うことができます。

<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

  <RDF:Seq about="urn:mozilla:package:root">
    <RDF:li resource="urn:mozilla:package:component"/>
  </RDF:Seq>

  <RDF:Description about="urn:mozilla:package:component"
        chrome:displayName="title"
        chrome:author="name"
        chrome:name="component">
  </RDF:Description>
</RDF:RDF>

このテンプレートを使えば、自分のパッケージ向けの小さな変更をするだけで済みます。個々の部分が何をしているのか理解するために、これを分解してみることにしましょう。

<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

この 3 行は、contents.rdf ファイルの先頭に置くべきです。RDF は XML フォーマットですから、XML ファイルであることを示す標準の先頭行をもちます。次に、使用するネームスペースを宣言します。ここでは、RDF のものとクロムシステムのものです。これがどういう意味なのか分からなくても、心配無用です。マニフェストファイルの先頭には、これを置けばよいからです。

<RDF:Seq about="urn:mozilla:package:root">
  <RDF:li resource="urn:mozilla:package:component"/>
</RDF:Seq>

これらの行は、マニフェストが記述するのが、パッケージ、スキン、ロケールのどれであるのかを宣言するために使われます。この場合は、(テキスト中のパッケージという語が示しているように) パッケージが記述されています。ここで、パッケージの名前は、'component' です。もちろん、これは、作っているパッケージの名前で置き換えて下さい。例えば、Mozilla メールアプリケーションは、'messenger' という名前になります。

上の RDF:li タグは、リスト要素を記述しているという点で、HTML の li ととてもよく似ています。このため、多数の RDF:li タグを使うことによって、多数のパッケージを宣言できます。

スキンの場合、2 つの 'package' を 'skin' で置き換えます。同様に、ロケールの場合、2 つの 'package' を 'locale' で置き換えます。例えば、次の例は、スキンを指定します。

<RDF:Seq about="urn:mozilla:skin:root">
  <RDF:li resource="urn:mozilla:skin:blueswayedshoes"/>
</RDF:Seq>

シンタックスの唯一の違いは、2 つある 'package' という語を 'skin' に変更し、スキン名を 'blueswayedshoes' に変更することだという点に注意して下さい。

  <RDF:Description about="urn:mozilla:package:component"
        chrome:displayName="title"
        chrome:author="name"
        chrome:name="component">
  </RDF:Description>

このブロックは、パッケージ、スキン、ロケールをより詳細にするため、使われています。使用する個々の li のための記述が必要でしょう。about 属性の値は、li タグの resource 属性と同じであるべきです。

3 つの特別な属性が、パッケージの特別な情報を記述しています。

作成中の「ファイルを開く」ダイアログのための contents.rdf ファイルを作りましょう。そのためには、パッケージを記述することが必要です。サブパッケージ、スキン、ロケールは含まれないので、これは、上のテンプレートとかなり類似したものになります。

<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

  <RDF:Seq about="urn:mozilla:package:root">
    <RDF:li resource="urn:mozilla:package:findfile"/>
  </RDF:Seq>

  <RDF:Description about="urn:mozilla:package:findfile"
        chrome:displayName="Find Files"
        chrome:author="Whoever"
        chrome:name="findfile">
  </RDF:Description>
</RDF:RDF>

ここで、コンポーネントは、'findfile' という名前を付けられています。これは、クロム URL を使ってそれを参照できるということです。

chrome://findfile/content/findfile.xul

パッケージをインストールする

クロムディレクトリー内の all-packages.rdf ファイルに保存されたインストールされたパッケージのリスト。これは、新しいパッケージをインストールすると、自動的に変更されます。マニフェストファイルと同様に、それは、RDF フォーマットのファイルです。一見するとマニフェストファイルとは非常に異なっていますが、XML に精通すると、実際には、それが非常に類似していると分かるはずです。

便利なことに、このファイルを直接編集する必要はありません。Mozilla が起動するといつでも、'installed-chrome.txt' と呼ばれる特殊ファイルのため、クロムディレクトリーをチェックします。このファイルは、インストールされるのを待っているパッケージ、スキン、ロケールすべてのリストを、非常に単純なフォーマットで、もっています。Mozilla は、リスト内の個々のエントリーを検査し、必要に応じて、個々のエントリーをインストール、アップグレードします。

そのため、新しいパッケージをインストールするために必要なことは、'installed-chrome.txt' ファイルにエントリーを追加し、Mozilla を再起動することです。Mozilla の XPInstall システムによって、スクリプトは、このファイルを手作業で変更することなく、JavaScript によって自動的にパッケージをインストールすることができます。しかし、開発中は、このファイルを、直接、変更することができます。

ファイル 'installed-chrome.txt' は、既にあるのでなければ、直接、クロムディレクトリーに追加されるべきです。このファイルは、行単位で、インストールすべきエントリーのリストをもっています。例えば

content,install,url,resource:/chrome/findfile/content/findfile/
skin,install,url,resource:/chrome/findfile/skin/findfile/

上の例は、「ファイルを開く」パッケージとそのためのスキンをインストールするのに使われます。個々の行のフォーマットは、非常に単純です。カンマで区切られた 4 つの値からなるだけです。

リソース URL は、そのルートが Mozilla がインストールされているディレクトリーであるという点を除けば、ファイル URL に似ています。URL を指定する場合には、ディレクトリーがスラッシュで終わる点に注意して下さい。リソース URL には、コロンの後にスラッシュが一つだけあります。

このため、追加される行は、contents.rdf ファイルが置かれているディレクトリーを指すべきです。多数のパッケージがある場合は、パッケージごとに行を追加します。

Mozilla はディレクトリーの命名慣習に従いますが、ファイルはどこにでも置くことができます。例えば、次の例は、新しいパッケージを、ディレクトリー /main/calculator/ にインストールします。

content,install,path,/main/calculator/

ファイルを JAR ファイルにパッケージする場合、それを参照するのに JAR URL を使うことができます。これは、感嘆符 (!) で区切られた 2 つの部分からなります。最初の部分は、 JAR ファイルの URL で、その後の部分は、ディレクトリーかアーカイブ内のファイルです。以下の例は、「ファイルを開く」ダイアログを参照しています。

jar:resource:/chrome/findfile.jar!/content/findfile/

要約

要約すると、次のステップが、パッケージ、スキン、ロケールをインストールするのに必要です。XUL ファイルをインストールする必要はありませんが、そうすると、スクリプトにできることに制約されることになります。

  1. パッケージ、スキン、ロケールのためのディレクトリーを作る。慣習では、'content'、'skin'、'locale' サブディレクトリーを置き、その中に、パッケージと同じ名前のディレクトリーを置く。
  2. 上で説明した contents.rdf ファイルを作り、それをディレクトリーに追加する。
  3. まだなければ、クロムディレクトリーに 'installed-chrome.txt' ファイルを作り、そのディレクトリーを指す行を追加する。クロムディレクトリー内の RDF ファイルを削除する。
  4. Mozilla を起動する。新しいパッケージが自動的にインストールされる。

(進む) 次のセクションでは簡単なウィンドウを作ります。

XUL チュートリアル - 1.4 - マニフェストファイル
戻る 内容 リファレンス 進む

[PR]50万が当る!専門学校・転職:資格のための勉強資金に♪車もプレゼント