コードの実例

アドオンが格納されているディレクトリの取得

あなたのアドオンがインストールされているディレクトリを確認する必要がある場合、次の様なトリックを用います。コード中の YOUREXTENSIONID はあなたのアドオンの ID で置き換えてください。

Components.utils.import("resource://gre/modules/AddonManager.jsm");  

AddonManager.getAddonByID("YOUREXTENSIONID", function(addon) {
  var addonLocation = addon.getResourceURI("").QueryInterface(Components.interfaces.nsIFileURL).file.path;
});

ファイルとバージョン情報へのアクセス

Components.utils.import("resource://gre/modules/AddonManager.jsm");

AddonManager.getAddonByID("my-addon@foo.com", 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("youraddon@youraddon.com", function(addon) {
  addon.uninstall();
});

アドオンの無効化

Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("youraddon@youraddon.com", function(addon) {
  if (addon.isActive) addon.userDisabled = addon.isActive;
});

アドオンのアンインストールのリスニング

以下の例では、アドオンのアンインストール時にクリーンアップを実行する profile-before-change メッセージを取得する際に確認することができる変数 "beingUninstalled" を設定しています。

var beingUninstalled;

let listener = {
  onUninstalling: function(addon) {
    if (addon.id == "youraddon@youraddon.com") {
      beingUninstalled = true;
    }
  },
  onOperationCancelled: function(addon) {
    if (addon.id == "youraddon@youraddon.com") {
      beingUninstalled = (addon.pendingOperations & AddonManager.PENDING_UNINSTALL) != 0;
    }
  }
}

try {
  Components.utils.import("resource://gre/modules/AddonManager.jsm");
  AddonManager.addAddonListener(listener);
} catch (ex) {}

Document Tags and Contributors

Contributors to this page: ethertank
最終更新者: ethertank,