我的扩展程序包含install.json文件,其中包含install属性。 有没有办法获得附加版本。
答案 0 :(得分:3)
您可以从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中,您可以从以下网址获取:
var self = require("sdk/self");
var version = self.version;
正如Noitidart所指出的那样,某些插件数据可通过data.id
,data.version
,data.installPath
,data.resourceURI
和data.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
密钥的说明:仅在先前安装的实例可用时,可能与此情况下的版本相同。在重新安装和类似情况下,version
和oldVersion
是相同的。
答案 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.