Если вы хотите узнать подробный прогресс надстройки (не удаляя), вы можете использовать слушатели, которые вы добавляете с помощью AddonManager.addInstallListener()
. Тем не менее, за то, что вы просили, получать события, когда установлен и-он установлен (т. Е. Не отслеживать ход установки, как раз это произошло), вы можете использовать и событие onInstalled
.
This other answer of mine содержит полное расширение SDK Add-on, которое показывает различные события, доступные через метод AddonManager'saddAddonListener()
. Он также показывает порядок запуска событий для уже установленного надстройки, а также того, который устанавливается и удаляется (показывает как то, что вы получаете для своей собственной установки/удаления, так и при установке или удалении надстройки не ваше собственное дополнение).
Редактирование этого кода вплоть до того, что необходимо для того, что вы попросили, приводит к следующему коду (Примечание: Я вручную редактировал код здесь, но не тестировал его (т. Е. Могут быть ошибки). Код в ответе Я связан выше, был полностью протестирован):
const { AddonManager } = require("resource://gre/modules/AddonManager.jsm");
var addonListener = {
onInstalled: function(addon){
console.log('AddonManager Event: Installed addon ID: ' + addon.id
+ ' ::addon object:', addon);
}
}
exports.onUnload = function (reason) {
//Your add-on listeners are NOT automatically removed when
// your add-on is disabled/uninstalled.
//You MUST remove them in exports.onUnload if the reason is
// not 'shutdown'. If you don't, errors will be shown in the
// console for all events for which you registered a listener.
if(reason !== 'shutdown') {
uninstallAddonListener();
}
};
function installAddonListener(){
//Using an AddonManager listener is not effective to listen for your own add-on's
// install event. The event happens prior to you adding the listener.
//console.log('In installAddonListener: Adding add-on listener');
AddonManager.addAddonListener(addonListener);
}
function uninstallAddonListener(){
//console.log('In removeAddonListener: Removing add-on listener');
AddonManager.removeAddonListener(addonListener);
}
installAddonListener();
Я предположил, что вы действительно спрашиваете о том, как слушать установку надстроек. Если ваш вопрос действительно заключался в том, как прослушивать * прогресс * надстроек, для чего используется 'addInstallListener()', тогда, пожалуйста, [изменить] ваш вопрос, чтобы явно указать, что вы хотите прослушать процесс установки * *. – Makyen
Возможно также, что вы хотите спросить, как установить, что установка - это фактически установка * нового * надстройки (то есть не обновление для надстройки, которое уже установлено). Если это так, вам нужно задать [новый/дополнительный вопрос] (http://stackoverflow.com/questions/ask), который конкретно указан. Это не то, что предоставляет onNewInstall() '(по крайней мере, на основе моего понимания). 'onNewInstall()' запускается при создании нового 'AddonInstall'. Для дополнительных обновлений создается «AddonInstall». Таким образом, 'onNewInstall()' не указывает, что надстройка * new * устанавливается. – Makyen
Мое намерение состояло в том, чтобы знать как новые, так и новые обновления дополнений. –