「拡張機能の基本」の編集履歴(バックアップ)一覧に戻る

拡張機能の基本 - (2013/02/03 (日) 12:16:24) の編集履歴(バックアップ)




基本的なファイル構成

*.xpi
 ├ install.rdf
 ├ chrome.manifest
 ├ content
 │   └*.xul / *.js
 ├ locale                            ローカライズが必要な場合
 │   ├ en-US
 │   │  └ *.dtd / *.properties
 │   └ ja
 │       └ *.dtd / *.properties
 ├ skin                              スキンが必要な場合
 │   └*.css / *.png
 ├ components                        独自XPCOMを作る場合
 │   └ *.*
 ├ defaults                          設定を保存する場合は大抵用意する。固定
 │   └preferences
 │        └*.js
 └ chrome                            windowに独自アイコンを使う場合。あまり見かけない。固定
      └ icons
          └ default
              └ *.ico / *.xpm
  • 今主流の(?)フォルダ構成。
  • さらにresourceフォルダとかmoduleフォルダとか作ってjsmを配置する人も居る。
  • 上で「固定」と書かれてるもの以外は結局はchrome.manifestでの指定次第なので、自分の好きなようにしていい。
  • 以前(xpiを解凍してインストールしてた時)は content, locale, skin を jar に固めてchromeに置いてたけど、今は必要ない。
  • ただし今でもxpiを解凍するタイプの拡張は jar で固めるべき。

xpi や jar 圧縮

  • zip です。
  • xpi は level 1 の zip 圧縮で。
  • jar は 無圧縮 zip で。

  • テスト環境では圧縮する必要はない。Building an Extension の中頃(「テスト」の項目)に書かれている通り、フォルダパスを書いたテキストファイル(注:ファイル名をIDにして、拡張子は無し)をプロファイルの extentions フォルダに置いておけば Firefox は読み込んでくれる。
  • extentions フォルダに直接作ってもいーけどね。

install.rdf

<?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>SampleExtention@yourdomain.co.jp</em:id>
    <em:name>Sample Extention</em:name>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
    <em:creator>Your Name</em:creator>
    <em:description>A test extension</em:description>
    <em:homepageURL>http://www.yourdomain.co.jp/</em:homepageURL>
    <em:optionsURL>chrome://sample/content/options.xul</em:optionsURL>
 
    <em:targetApplication>
      <Description><!-- Firefox -->
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>2.0</em:minVersion>
        <em:maxVersion>3.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>

chrome.manifest

content sample content/
#content sample jar:chrome/sample.jar!/content/

overlay chrome://browser/content/browser.xul chrome://sample/content/overlay.xul

locale sample en-US locale/en-US/
locale sample ja    locale/ja/

skin sample classic/1.0 skin/
  • 先頭に#でコメント行
  • sampleがパッケージ名。他の拡張とかぶるとヤバイので注意。