Firefox 拡張機能の開発は初めてです。というわけでちょっと実験してみました。私は現在、最低限の要件のみを備えたブートストラップ拡張機能を作成しようとしています: install.rdf と bootstrap.js のみです。現時点では、この拡張機能は実際には何もしないはずです。問題なくインストールできるようにしたいだけです。機能は後で追加できます。
install.rdf と bootstrap.js は 7zip で .zip ファイルに圧縮されており、ファイル拡張子は .xpi に変更されています。インストールは AddOn Manager を介して行われ、私の Firefox 42.0 では問題なく動作しているようです (Firefox から成功メッセージが表示されます)。
しかし、インストール後にエラーコンソールを見ると、いくつかの警告/エラーが表示されています:
1447258032068 addons.xpi WARN Test-AddOn の bootstrap.js の読み込み中にエラーが発生しました--53d9108a-541b-4209-a62e-3809504dfe6e@example.org: 入力ストリームを開くときにエラーが発生しました (無効なファイル名?): jar:file:///C:/ Users/Stefan/AppData/Roaming/Mozilla/Firefox/Profiles/dlgniy94.default/extensions/Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org.xpi!/bootstrap.js
1447258032068 addons.xpi WARN Add-on Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org にブートストラップ メソッドのアンインストールがありません
1447258032080 addons.xpi 警告 Test-AddOn の bootstrap.js の読み込み中にエラーが発生しました--53d9108a-541b-4209-a62e-3809504dfe6e@example.org: 入力ストリームを開くときにエラーが発生しました (無効なファイル名?): jar:file:///C:/ Users/Stefan/AppData/Roaming/Mozilla/Firefox/Profiles/dlgniy94.default/extensions/Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org.xpi!/bootstrap.js
1447258032080 addons.xpi WARN Add-on Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org にブートストラップ メソッドのインストールがありません
Zeitstempel: 11.11.2015 17:07:12 Fehler: [例外... 「コンポーネントが失敗コードを返しました: 0x80004005 (NS_ERROR_FAILURE) [nsIURI.hostPort]」 nsresult: 「0x80004005 (NS_ERROR_FAILURE)」 場所: 「JS フレーム :: リソース: //gre/modules/PopupNotifications.jsm :: PopupNotifications_refreshPanel/< :: line 579" data: no] Quelldatei: resource://gre/modules/PopupNotifications.jsm Zeile: 583
1447258032112 addons.xpi WARN Add-on Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org にブートストラップ メソッドの起動がありません
これらのエラー/警告の原因がわかりません。特に、欠落していると思われるブートストラップ メソッドは不可解です。
これは私のbootstrap.jsの内容です:
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import('resource://gre/modules/Services.jsm');
function startup(aData, aReason) {}
function shutdown(aData, aReason) {}
function install(aData, aReason) {}
function uninstall(aData, aReason) {}
それほど多くはありませんが、必要なものはすべて揃っているはずですよね? 必要な 4 つのメソッド (startup()、shutdown()、install()、uninstall()) はすべてそこにあります。(アドオンはまだ何もしないはずなので、それらは空です。) では、なぜ私の Firefox 42.0 はこれらのうちの 3 つが欠けていると考えるのでしょうか? そして、なぜ 4 番目の (shutdown()) についてはそう思わないのでしょうか?
いくつかのエラーがあるのに、インストールが機能しているように見えるのはなぜですか (ブラウザーからの成功メッセージ)。
何か重要なことを見逃しましたか?
これは 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>Test-AddOn--53d9108a-541b-4209-a62e-3809504dfe6e@example.org</em:id>
<em:type>2</em:type>
<em:name>Test AddOn</em:name>
<em:version>1.0</em:version>
<em:bootstrap>true</em:bootstrap>
<em:description>This is a test.</em:description>
<em:creator>Anonymous</em:creator>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>40.0</em:minVersion>
<em:maxVersion>45.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions#chrome.manifest_in_bootstrapped_add-onsによると 、chrome.manifest ファイルを「使用できます」(これは、必要ではないことを意味すると思います)。
アドオンの .xpi-package 全体に興味がある場合は、ここにアップロードしました: http://www.filedropper.com/testaddon