Wenn Sie den detaillierten Fortschritt von Add-On-Installationen (nicht deinstalliert) wissen möchten, können Sie Listener verwenden, die Sie mit AddonManager.addInstallListener()
hinzufügen. Für das, was Sie gefragt haben, Empfangen von Ereignissen, wenn eine AND-on installiert ist (d. H. Den Fortschritt der Installation nicht überwachen, nur dass es passiert), können Sie AddonManager.addAddonListener()
und das onInstalled
Ereignis verwenden.
This other answer of mine enthält eine komplette Add-on SDK-Erweiterung, die die verschiedenen Veranstaltungen zur Verfügung durch die AddonManager'saddAddonListener()
Methode zeigt. Außerdem wird angezeigt, in welcher Reihenfolge die Ereignisse für ein Add-on ausgelöst werden, das bereits installiert ist und welches installiert und deinstalliert wird (sowohl welche Ereignisse für die eigene Installation/Deinstallation als auch wann das Add-on installiert/deinstalliert wird) nicht dein eigenes Add-on).
Bearbeiten Sie diesen Code auf genau das, was für das, was Sie gefragt haben, benötigt im folgenden Code (Hinweis: Ich habe den Code hier bearbeitet, aber nicht getestet (dh es kann Fehler geben). Der Code in der Antwort Ich habe oben verlinkt wurde komplett getestet):
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();
Ich habe angenommen, dass Sie wirklich fragen, wie für die Installation von Add-ons zu hören. Wenn deine Frage wirklich war, wie man den * Fortschritt * von Add-On-Installationen hört, wofür 'addInstallListener()' ist, dann bearbeite bitte deine Frage, um explizit anzugeben, dass du den Fortschritt der Installation * hören willst *. – Makyen
Es ist auch möglich, dass Sie fragen möchten, wie Sie feststellen können, dass die Installation tatsächlich die Installation eines * neuen * Add-Ons ist (d. H. Kein Update für ein Add-on, das bereits installiert ist). Wenn ja, müssen Sie [eine neue/zusätzliche Frage] (http://stackoverflow.com/questions/ask) fragen, was genau das ist. Das bietet 'onNewInstall()' nicht (zumindest nach meinem Verständnis). 'onNewInstall()' wird ausgelöst, wenn ein neuer 'AddonInstall' erstellt wird. Ein 'AddonInstall' wird für Add-On-Updates erstellt. "OnNewInstall()" gibt also nicht an, dass ein * neues * Add-on installiert wird. – Makyen
Meine Absicht war, beide Ereignisse neue Add-on-Installation und alte Add-On-Updates kennen. –