アドオンが格納されているディレクトリの取得
あなたのアドオンがインストールされているディレクトリを確認する必要がある場合、次の様なトリックを用います。コード中の YOUREXTENSIONID はあなたのアドオンの ID で置き換えてください。
ファイルとバージョン情報へのアクセス
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("[email protected]", function(addon) {
alert("My extension's version is " + addon.version);
alert("Did I remember to include that file.txt file in my XPI? " +
addon.hasResource("file.txt") ? "YES!" : "No");
alert("Let's pretend I did, it's available from the URL " + addon.getResourceURI
("file.txt").spec);
});
アドオンの削除
Components.utils.import("resource://gre/modules/AddonManager.jsm"); AddonManager.getAddonByID("[email protected]", function(addon) { addon.uninstall(); });
アドオンの無効化
Components.utils.import("resource://gre/modules/AddonManager.jsm"); AddonManager.getAddonByID("[email protected]", function(addon) { if (addon.isActive) addon.userDisabled = addon.isActive; });
アドオンのアンインストールのリスニング
以下の例では、アドオンのアンインストール時にクリーンアップを実行する profile-before-change メッセージを取得する際に確認することができる変数 "beingUninstalled" を設定しています。
var beingUninstalled; let listener = { onUninstalling: function(addon) { if (addon.id == "[email protected]") { beingUninstalled = true; } }, onOperationCancelled: function(addon) { if (addon.id == "[email protected]") { beingUninstalled = (addon.pendingOperations & AddonManager.PENDING_UNINSTALL) != 0; } } } try { Components.utils.import("resource://gre/modules/AddonManager.jsm"); AddonManager.addAddonListener(listener); } catch (ex) {}