インストール済みのアドオンはプロファイル フォルダのextensions/フォルダ※1 に、xpiファイル※2 として保存されています。このファイルの実体はzipファイルであるため、拡張子をxpiからzipに変更することで、圧縮ファイルとして展開できるようになります。アドオンのソースやリソースは、そこにあります。≫XPIパッケージング
※1 グローバル インストールされたアドオンのインストール場所は異なります。インストールされていないアドオンのソースについては、まずAdd-ons for Firefoxからそのアドオンのページを開きます。そして[Add to Firefox]のボタンを右クリックしてリンク先を保存することで、インストールせずにソースをダウンロードできます。
xpiファイルの展開後のchromeフォルダにjarという拡張子のファイルがある場合には、それも圧縮ファイルです。これはJARと呼ばれる圧縮ファイルで、これもxpiファイルと同様に拡張子をzipに変更することで展開できます。
xpiファイルの名前は、アドオンIDで表示されます。
ファイル名からアドオンが推定できないときには、ファイルを展開した後にinstall.rdfを開きます。そして<em:name>を探すことで、アドオン名を確認できます。またはaboutプロトコルのabout:support (トラブルシューティング情報) の[拡張機能]の項目で、アドオンの名前とIDを一覧できます。
アドオン名 | アドオンID |
---|---|
NoScript | 73a6fe31-595d-460b-a920-fcc0f8843232 |
Adblock Plus | d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d |
Java Consoleなどの一部のアドオンは、通常とは異なる場所にインストールされます。それらのアドオンは、Firefoxのインストール フォルダのextensionsフォルダにあります。アドオンを削除できない | Firefox ヘルプ
ファイルを展開せずとも、ブラウザツールボックスならば直接コードを閲覧できます。アドオンのソースコードを特定するにはChrome URIを把握している必要がありますが、スクリプトフィルタでアドオンの名前を入力すれば、 たいていそれを発見できます。
デバッガではブレークポイントを設定できるので、より詳細にアドオンを調べられます。
Add-ons for Firefoxからアドオンのxpiファイルをダウンロードすることで、インストールしていないアドオンのソースも入手できます。
それにはアドオンのインストール ページで[Firefoxへ追加]を右クリックし、[名前を付けてリンク先を保存 (Save Link As)]を実行します。そうすることで、xpiファイルをダウンロードできます。
この方法ならば、互換性がなくインストールできないアドオンのソースも入手できます。
たとえばフォルダ構成が次のようになっているとすると、
:. | \---chrome | +---content | | | +---locale | | +---en-US | | | | | \---ja | | | \---skin | \---classic | +---components | +---defaults | \---preferences | \---platform \---WINNT
これらのフォルダは以下の意味を持ちます。
フォルダ | 説明 | |||
---|---|---|---|---|
ルート |
|
|||
chrome | UI要素のセット
|
|||
+ | content※1 | UIの構造と振る舞い
(ユーザー設定なども含む)
※3 CSSは、通常skinフォルダに配置します。 |
||
locale※1 | UIの地域化 | |||
+ | en-US | 英語 (合衆国) | ||
ja | 日本語
|
|||
skin※1 | UIのスキン。CSSやアイコンの画像など | |||
+ | classic | 標準テーマのスキン
|
||
components |
|
|||
defaults | 既定の設定 | |||
+ | preferences | ユーザー設定の既定値
|
||
platform | プラットフォーム依存のコンポーネント | |||
+ | WINNT | WINNT用のコンポーネント |
フォルダの構成は、必ずしも上記の通りではありません。
+---{73a6fe31-595d-460b-a920-fcc0f8843232} | | chrome.manifest | | GPL.txt | | install.rdf | | mozilla.cfg | | NoScript_License.txt | | | +---chrome | | \---noscript | | +---content | | | \---noscript | | | ABE.g | | | ABE.js | | | ABELexer.js | | | ABEParser.js | | | about.xul | | | antlr.js | | | ASPIdiocy.js | | | ChannelReplacement.js | | | clearClick.js | | | clearClick.xul | | | ClearClickHandler.js | | | ClearClickHandlerLegacy.js | | | Cookie.js | | | DNS.js | | | DOM.js | | | ExternalFilters.js | | | frameOptErr.xhtml | | | HTTPS.js | | | iaUI.js | | | Lang.js | | | noscript.js | | | noscript.xbl | | | noscriptBM.js | | | noscriptBMOverlay.xul | | | noscriptOptions.js | | | noscriptOptions.xul | | | noscriptOverlay.js | | | noscriptOverlay.xul | | | NoScript_License.txt | | | options-mobile.xul | | | overlay-mobile.xul | | | PlacesPrefs.js | | | Plugins.js | | | Policy.js | | | Profiler.js | | | Removal.js | | | RequestWatchdog.js | | | ScriptSurrogate.js | | | Strings.js | | | STS.js | | | URIValidator.js | | | | | +---locale | | | +---en-GB | | | | \---noscript | | | | about.properties | | | | noscript.dtd | | | | noscript.properties | | | | | | | +---en-US | | | | \---noscript | | | | about.properties | | | | noscript.dtd | | | | noscript.properties | | | | | | | +---ja-JP | | | | \---noscript | | | | about.properties | | | | noscript.dtd | | | | noscript.properties | | | | | | \---skin | | \---classic | | \---noscript | | abe16.png | | about.css | | block.wav | | browser.css | | close.png | | console16.png | | content.css | | ef-no16.png | | ef16.png | | emb16.png | | embed-no16.png | | embed16.png | | faq16.png | | flash16.png | | flash32.png | | folder_closed.png | | folder_open.png | | font.png | | glb-emb16.png | | glb-no16.png | | glb16.png | | https16.png | | ia.png | | icon24.png | | icon32.png | | icon64.png | | icon80.png | | inactive-emb16.png | | inactive-glb16.png | | inactive-no-emb16.png | | inactive-no16.png | | inactive-prt16.png | | inactive-yes16.png | | inactive-yu16.png | | java16.png | | java32.png | | mobile.css | | no-emb16.png | | no16.png | | options.css | | prt16.png | | redirect16.png | | revtemp16.png | | somelight16.png | | somelight32.png | | subprt16.png | | temp16.png | | unsafe-reload16.png | | untrusted-glb16.png | | untrusted16.png | | webgl16.png | | webgl32.png | | xss16.png | | yes16.png | | yu-emb16.png | | yu-glb16.png | | yu16.png | | | +---components | | noscriptService.js | | | +---defaults | | \---preferences | | noscript.js | | | \---META-INF | manifest.mf | zigbert.rsa | zigbert.sfNoScript Security Suite :: Add-ons for Firefox
+---firegestures@xuldev.org | | chrome.manifest | | FireGestures.idl | | icon.png | | icon64.png | | install.rdf | | LICENSE.txt | | | +---chrome | | +---content | | | \---firegestures | | | browser.js | | | browser.rdf | | | browser.xul | | | edit.js | | | edit.xul | | | prefs-generic.xul | | | prefs.js | | | prefs.xul | | | viewSource.js | | | viewSource.rdf | | | viewSource.xul | | | | | +---locale | | | | BZ_localized.txt | | | | | | | +---en-US | | | | \---firegestures | | | | firegestures.properties | | | | mapping.dtd | | | | prefs.dtd | | | | | | | +---ja | | | | \---firegestures | | | | firegestures.properties | | | | mapping.dtd | | | | prefs.dtd | | | | | | | \---zh-TW | | | \---firegestures | | | firegestures.properties | | | mapping.dtd | | | prefs.dtd | | | | | \---skin | | \---classic | | \---firegestures | | icon.png | | prefs.css | | prefs.png | | | +---components | | FireGestures.xpt | | xdGestureHandler.js | | xdGestureMapping.js | | xdGestureService.js | | | \---defaults | \---preferences | firegestures-prefs.jsFireGestures :: Add-ons for Firefox
+---nosquint@urandom.ca | | chrome.manifest | | icon.png | | icon64.png | | install.rdf | | | +---chrome | | nosquint.jar | | | +---components | | about-handler.js | | | \---defaults | \---preferences | nosquint.jsNoSquint :: Add-ons for Firefox
+---{26FD1F83-A45B-4c74-AF5A-F2EE0EE4D691} | | chrome.manifest | | install.rdf | | | +---chrome | | highlightall.jar | | | \---defaults | \---preferences | highlightall_pref.jsHighlightAll :: Add-ons for Firefox
+---{D4DD63FA-01E4-46a7-B6B1-EDAB7D6AD389} | | chrome.manifest | | downbarPackage.jar | | install.rdf | | license.txt | | | +---components | | downbar.js | | | \---defaults | \---preferences | downbarconfig.jsDownload Statusbar :: Add-ons for Firefox
Firefoxに同梱されているツール類は、Firefoxのインストール フォルダのbrowser\omni.jaにまとめられています。これも圧縮ファイルですので、拡張子をzipに変更することで展開できます。
Firefox 21.0では、以下のフォルダ構成となっています。
C:. +---chrome | +---browser | | +---content | | | +---branding | | | \---browser | | | +---abouthealthreport | | | +---abouthome | | | +---bookmarks | | | +---certerror | | | +---devtools | | | | +---framework | | | | +---inspector | | | | +---layoutview | | | | \---profiler | | | | \---cleopatra | | | | +---css | | | | +---images | | | | \---js | | | +---downloads | | | +---feeds | | | +---history | | | +---migration | | | +---newtab | | | +---pageinfo | | | +---places | | | +---preferences | | | | \---in-content | | | +---search | | | \---sync | | \---skin | | \---classic | | +---aero | | | \---browser | | | +---devtools | | | | \---breadcrumbs | | | +---downloads | | | +---feeds | | | +---newtab | | | +---places | | | +---preferences | | | | \---in-content | | | +---social | | | +---tabbrowser | | | \---tabview | | +---browser | | | +---devtools | | | | \---breadcrumbs | | | +---downloads | | | +---feeds | | | +---newtab | | | +---places | | | +---preferences | | | | \---in-content | | | +---social | | | +---tabbrowser | | | \---tabview | | \---communicator | +---ja | | \---locale | | +---branding | | +---browser | | | +---devtools | | | +---downloads | | | +---feeds | | | +---migration | | | +---places | | | +---preferences | | | \---safebrowsing | | +---browser-region | | +---feedback | | \---pdfviewer | \---pdfjs | +---components | \---content | +---build | \---web | \---images +---components +---defaults | +---preferences | \---profile | \---chrome +---jsloader | \---resource | \---app | +---components | \---modules | +---devtools | +---sessionstore | \---tabview \---modules +---devtools +---sessionstore \---tabview