我的扩展名有一个包含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.id
、data.version
、data.installPath
、data.resourceURI
和data.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
密钥的注意事项:只有在以前安装过实例的情况下才可用,可能与本例中的版本相同。在重新安装和类似情况下,version
和oldVersion
是相等的。
对于非引导程序(经典的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.