我如何获得firefox附加版本号?

时间:2015-02-06 15:48:30

标签: firefox-addon

我的扩展程序包含install.json文件,其中包含install属性。 有没有办法获得附加版本。

3 个答案:

答案 0 :(得分:3)

AddonManager

您可以从AddonManager模块

获取
Components.utils.import('resource://gre/modules/AddonManager.jsm');

AddonManager.getAddonByID("YOUREXTENSIONID", function(addon) {
  var version = addon.version;
});

更多信息:
AddonManager
Code Samples

注意:(来自AddonManager

  

大多数方法都是异步的,意味着结果是   通过传递给该方法的回调传递。回调会   只调用一次,但可能在方法之前或之后   回报。

因此结果可能无法立即获得。我在启动时运行AddonManager.getAddonByID,稍后在需要时使用数据。

附加组件-SDK

在插件SDK中,您可以从以下网址获取:

var self = require("sdk/self");
var version = self.version;

Bootstrapped Addon

正如Noitidart所指出的那样,某些插件数据可通过data.iddata.versiondata.installPathdata.resourceURIdata.oldVersion获取Bootstrapped extensions

function startup(data, reason) { }
function shutdown(data, reason) { }
function install(data, reason) { }
function uninstall(data, reason) { }

答案 1 :(得分:1)

如果您正在创建一个bootstrap插件,那么该版本可通过startup参数中的aData函数获得。我所做的是将启动时aData存储到全局中以备将来使用。

var globalAData;
function startup(aReason, aData) {
    globalAData = aData;
    var version = aData.version;
}

来自:https://gist.github.com/Noitidart/9025999#comment-1120821

这是aData中包含的内容:

Key                 Value
id                  Bootstrap-Skeleton@jetpack
version             1.1
installPath         [xpconnect wrapped nsIFile]
resourceURI         [xpconnect wrapped nsIURI]
oldVersion          1.1

关于oldVersion密钥的说明:仅在先前安装的实例可用时,可能与此情况下的版本相同。在重新安装和类似情况下,versionoldVersion是相同的。

答案 2 :(得分:1)

对于非引导程序(经典的XUL Overlay),它比我想象的要容易。

实际上,通过引入具有异步document load调用的新加载函数,您'中断'AddonManager.getAddonByID事件触发的现有加载函数(main_load)。等待它完成,然后继续使用您之前的函数加载您的加载项(刚刚重命名为main_load_post,表示我们想在加载后调用它)。

main.js(对应于main.xul文件)中:

var myAddon = null;
window.addEventListener( 'load', main_load, false );

在同一个文件中的其他位置(ID是您的插件ID):

// new main_load function to interrupt loading and assign to myAddon.
function main_load ( ) {
    AddonManager.getAddonByID( 'ID', function ( addon ) {
        myAddon = addon;
        main_load_post( );
    } );
}

// formerly 'main_load', renamed and called by the async callback.
function main_load_post ( ) {
    // main addon initialization: load prefs, setup pref observer, etc.
    // Note: your prefs.observe function will call something like main_load_prefs( ), etc
}

function main_load_prefs ( ) {
    // successful myAddon reference
    console.log( '***VERSION***: ' + myAddon.version );
}

// NOTE: Any myAddon reference must come from a call chain traced back to main_load_post( ).
// NOTE: You can't put myAddon references in global space outside function calls,
//       because the AddonManager callback may not have fired.
// console.log( '***VERSION***: ' + myAddon.version ); // This will always fail.

// NOTE: Nor can you call the function containing myAddon in a global context.
// main_load_prefs( );  // This will always fail.