Firefox 3ではじめる拡張機能開発

第7回 インストーラの作成

この記事を読むのに必要な時間:およそ 5 分

httpsプロトコルでの暗号化通信に対応したWebサーバでの拡張機能の配布

httpsプロトコルでの暗号化通信に対応したWebサーバでインストーラおよびアップデートマニフェストを公開することで,Firefoxのセキュリティ的な制約を受けることなく拡張機能の自動更新が可能となります。ただし,この方法では「Firefox Add-ons」で配布する場合とは異なり,自分でアップデートマニフェストを作成・公開しなければなりません。さらに,インストールマニフェストへリスト2のように<em:updateURL>タグを追加してアップデートマニフェストのURLを記載する必要があります。なお,リスト2中の<em:updateURL>タグで示したURLは実際には存在しません。

リスト2 インストールマニフェストの修正(例)

<?xml version="1.0"?>

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

  <Description about="urn:mozilla:install-manifest">
    <em:id>taghelper@xuldev.org</em:id>
    <em:type>2</em:type>
    <em:name>Tag Helper</em:name>
    <em:version>0.7</em:version>
    <em:description>Generates bookmark tags from the selection.</em:description>
    <em:creator>Your Name</em:creator>
    <em:homepageURL>http://www.xuldev.org/misc/sd.php</em:homepageURL>
    <em:updateURL>https://some-secure-server/taghelper/update.rdf</em:updateURL>
    <em:localized>
      <Description>
        <em:locale>ja</em:locale>
        <em:name>タグヘルパー</em:name>
        <em:description>選択範囲からブックマークのタグを生成します。</em:description>
        <em:creator>あなたの名前</em:creator>
      </Description>
    </em:localized>
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>3.0</em:minVersion>
        <em:maxVersion>3.0.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>

</RDF>

次に,アップデートマニフェストを作成します。アップデートマニフェストのファイル名は特に決められておりませんが,⁠update.rdf」とするのが一般的です。アップデートマニフェストの内容はリスト3のようになります。<em:version>タグの値が最新のバージョン番号,<em:updateLink>の値が最新バージョンのインストーラのURLを表します。なお,リスト3中の<em:updateLink>タグで示したURLは実際には存在しません。

リスト3 アップデートマニフェスト(例)

<?xml version="1.0"?>

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

  <Description about="urn:mozilla:extension:taghelper@xuldev.org">
    <em:updates>
      <Seq>
        <li>
          <Description>
            <em:version>0.7</em:version>
            <em:targetApplication>
              <Description>
                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                <em:minVersion>3.0</em:minVersion>
                <em:maxVersion>3.0.*</em:maxVersion>
                <em:updateLink>https://some-secure-server/taghelper/taghelper.xpi</em:updateLink>
              </Description>
            </em:targetApplication>
          </Description>
        </li>
      </Seq>
    </em:updates>
  </Description>

</RDF>

以上の作業が完了したら,アップデートマニフェストとインストーラを,それぞれリスト2の<em:updateURL>で示したURL,リスト3の<em:updateLink>で示したURLでダウンロード可能となるよう,Webサーバで公開します。なお,Webサーバからインストーラをダウンロードする際,WebサーバはHTTPレスポンスヘッダ「Content-type: application/x-xpinstall」を付加するよう設定しておく必要があります。詳しくは下記URLの「拡張機能 XPI の作り方」を参照してください。

Extension Packaging - MDC
URLhttp://developer.mozilla.org/ja/Extension_Packaging

まとめと次回の予告

今回は,タグヘルパー拡張機能のインストーラを作成する手順と,⁠Firefox Add-ons」あるいはhttpsプロトコルでの暗号化通信に対応したWebサーバ上で拡張機能を配布する方法について解説しました。次回は,アップデートマニフェストへ電子署名を施し,httpsプロトコル非対応のWebサーバで拡張機能を配布する方法について解説します。

著者プロフィール

Gomita

拡張機能開発者。
現在までにScrapBook,FoxAge2ch,Tab Scope,FireGesturesの4つをリリースしている。

URLhttp://www.xuldev.org/