Détecter l’extension Chrome première exécution / mise à jour

Comment une extension peut-elle savoir qu’elle est exécutée pour la première fois ou vient d’être mise à jour, de sorte que l’extension puisse effectuer certaines actions spécifiques? (par exemple, ouvrir une page d’aide ou mettre à jour les parameters)

Dans les nouvelles versions de Chrome (depuis Chrome 22), vous pouvez utiliser l’événement chrome.runtime.onInstalled , qui est beaucoup plus propre.

Exemple:

 // Check whether new version is installed chrome.runtime.onInstalled.addListener(function(details){ if(details.reason == "install"){ console.log("This is a first install!"); }else if(details.reason == "update"){ var thisVersion = chrome.runtime.getManifest().version; console.log("Updated from " + details.previousVersion + " to " + thisVersion + "!"); } }); 

Si vous voulez vérifier si l’extension a été installée ou mise à jour, vous pouvez faire quelque chose comme ceci:

  function onInstall() { console.log("Extension Installed"); } function onUpdate() { console.log("Extension Updated"); } function getVersion() { var details = chrome.app.getDetails(); return details.version; } // Check if the version has changed. var currVersion = getVersion(); var prevVersion = localStorage['version'] if (currVersion != prevVersion) { // Check if we just installed this extension. if (typeof prevVersion == 'undefined') { onInstall(); } else { onUpdate(); } localStorage['version'] = currVersion; } 

Heureusement, il y a maintenant des événements pour cela (depuis les versions 22 et 25 de Chrome pour les événements de mise à jour).

Pour un événement installé:

 chrome.runtime.onInstalled.addListener(function() {...}); 

Pour un événement OnUpdateAvailable:

 chrome.runtime.onUpdateAvailable.addListener(function() {...}); 

Un extrait important sur OnUpdateAvailable du développeur docs dit:

Tiré lorsqu’une mise à jour est disponible, mais n’est pas installée immédiatement car l’application est en cours d’exécution. Si vous ne faites rien, la mise à jour sera installée la prochaine fois que la page d’arrière-plan sera déchargée. Si vous souhaitez qu’elle soit installée plus tôt, vous pouvez appeler explicitement chrome.runtime.reload ().

Simple. Lorsque l’extension est localStorage la première fois, localStorage est vide. Lors de la première exécution, vous pouvez y écrire un indicateur pour marquer tous les exécutions consécutives comme non prioritaires.

Exemple, dans background.htm:

 var first_run = false; if (!localStorage['ran_before']) { first_run = true; localStorage['ran_before'] = '1'; } if (first_run) alert('This is the first run!'); 

EDIT: Pour vérifier si l’extension vient d’être mise à jour, stockez la version au lieu d’un simple indicateur lors de la première exécution, alors lorsque la version actuelle de l’extension ( XmlHttpRequest par XmlHttpRequest du manifeste) ne correspond pas à celle stockée dans localStorage , le l’extension a été mise à jour.