如何获取firefox插件版本号



我的扩展名有一个包含install属性的package.json文件。有什么方法可以获得附加版本吗。

AddonManager

您可以从AddonManager模块获得

Components.utils.import('resource://gre/modules/AddonManager.jsm');
AddonManager.getAddonByID("YOUREXTENSIONID", function(addon) {
  var version = addon.version;
});

更多信息:
AddonManager
代码样本

注意:(来自AddonManager)

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

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

Addon SDK

在插件SDK中,您可以从以下位置获取它们:

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

启动的加载项

正如Noitidart在下面指出的,某些附加数据可通过自举扩展中的data.iddata.versiondata.installPathdata.resourceURIdata.oldVersion获得

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

如果您正在制作引导插件,则该版本可通过aData参数中的startup函数获得。我所做的是在启动时将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是相等的。

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

实际上,您可以通过异步AddonManager.getAddonByID调用引入一个新的加载函数来"中断"document load事件触发的现有加载函数(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.

最新更新