Mise à jour automatique

Nous souhaitons que les extensions et les applications soient mises à jour automatiquement pour certaines des mêmes raisons que Google Chrome lui-même: intégrer des correctifs de bugs et de sécurité, ajouter de nouvelles fonctionnalités ou des améliorations de performances, et améliorer les interfaces utilisateur.

Si vous publiez des applications à l'aide du tableau de bord du développeur Chrome, ignorez cette page. Les envois sur le Chrome Web Store qui passent la phase de prévisualisation sont automatiquement mis à la disposition des utilisateurs finaux dans la fiche de l'élément du Chrome Web Store de l'extension.

Si vous hébergez un fichier CRX sur un serveur Web et que vous utilisez des règles d'entreprise pour le transférer vers des appareils gérés, lisez la suite. Vous devez également lire les sections Hébergement et Emballage.

Auparavant, lorsque les extensions hors plate-forme étaient prises en charge, il était possible de mettre à jour les binaires et l'extension en même temps. Toutefois, les extensions hébergées sur le Chrome Web Store sont mises à jour à l'aide du mécanisme de mise à jour de Chrome, que les développeurs ne contrôlent pas. Les développeurs d'extensions doivent faire attention à mettre à jour les extensions qui dépendent du binaire (par exemple, les anciennes extensions utilisant NPAPI).

Présentation

  • Un fichier manifeste peut contenir un champ "update_url", qui pointe vers un emplacement permettant d'effectuer des vérifications de mise à jour.
  • Le contenu renvoyé par une vérification de mise à jour est un document XML de fichier manifeste de mise à jour listant la dernière version d'une extension.

Toutes les quelques heures, le navigateur vérifie si des extensions ou des applications installées disposent d'une URL de mise à jour. Pour chacune d'elles, il envoie une requête à cette URL à la recherche d'un fichier XML de fichier manifeste de mise à jour. Si le fichier manifeste de mise à jour mentionne une version plus récente que celle installée, le navigateur télécharge et installe la nouvelle version. Comme pour les mises à jour manuelles, le nouveau fichier .crx doit être signé avec la même clé privée que la version installée.

URL de mise à jour

Si vous hébergez votre propre extension ou application, vous devez ajouter le champ "update_url" à votre fichier manifest.json, comme suit:

{
  "name": "My extension",
  ...
  "update_url": "http://myhost.com/mytestextension/updates.xml",
  ...
}

Mettre à jour le fichier manifeste

Le fichier manifeste de mise à jour renvoyé par le serveur doit être un document XML qui se présente comme suit (les parties en surbrillance indiquent les éléments que vous devez modifier):

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

Ce format XML est emprunté à celui utilisé par Omaha, l'infrastructure de mise à jour de Google. Pour en savoir plus, consultez la page http://code.google.com/p/omaha/. Le système d'extensions utilise les attributs suivants pour les éléments <app> et <updatecheck> du fichier manifeste de mise à jour:

appid

L'ID de l'extension ou de l'application, généré en fonction d'un hachage de la clé publique, comme décrit dans la section Empaquetage. Pour trouver l'ID d'une extension ou d'une application Chrome, accédez à la page "Extensions" (chrome://extensions).

Toutefois, les applications hébergées ne sont pas listées sur la page "Extensions". Pour trouver l'ID d'une application, procédez comme suit:

  • Ouvrez l'application en cliquant sur son icône sur la page "Nouvel onglet".
  • Ouvrez la console JavaScript. Pour ce faire, cliquez sur l'icône en forme de clé à molette, puis sélectionnez Tools > Console JavaScript (Outils > Console JavaScript).
  • Saisissez l'expression suivante dans la console JavaScript: chrome.app.getDetails().id. La console affiche l'ID de l'application sous la forme d'une chaîne entre guillemets.
codebase

URL du fichier .crx.

version

Utilisé par le client pour déterminer s'il doit télécharger le fichier .crx spécifié par codebase. Il doit correspondre à la valeur "version" du fichier manifest.json du fichier .crx.

Le fichier XML du fichier manifeste de mise à jour peut contenir des informations sur plusieurs extensions en incluant plusieurs éléments <app>.

Tests

La fréquence de vérification des mises à jour par défaut est de plusieurs heures, mais vous pouvez forcer une mise à jour à l'aide du bouton Mettre à jour les extensions maintenant de la page "Extensions".

Utilisation avancée: paramètres de requête

Le mécanisme de mise à jour automatique de base est conçu pour réduire le travail côté serveur. Il vous suffit d'ajouter un fichier XML statique sur n'importe quel serveur Web tel qu'Apache, puis de le mettre à jour lorsque vous publiez de nouvelles versions de vos extensions.

Les développeurs plus expérimentés peuvent profiter du fait que nous ajoutons des paramètres à la demande de fichier manifeste de mise à jour pour indiquer l'ID et la version de l'extension. Ils peuvent ensuite utiliser la même URL de mise à jour pour toutes leurs extensions, qui pointe vers une URL exécutant du code côté serveur dynamique au lieu d'un fichier XML statique.

Le format des paramètres de requête est le suivant:

?x=_<extension_data>_

_<extension_data>_ est une chaîne au format URL encodée au format suivant:

_id=<id>_&v=_<version>_

Par exemple, imaginons que vous ayez deux extensions, qui pointent toutes les deux vers la même URL de mise à jour (http://test.com/extension_updates.php):

  • Extension 1
    • ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Version: "1.1"
  • Extension 2
    • ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Version: "0.4"

La requête de mise à jour de chaque extension individuelle est la suivante:

  • http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
  • http://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

Vous pouvez lister plusieurs extensions dans une seule requête pour chaque URL de mise à jour unique. Par exemple, si un utilisateur a installé les deux extensions, les deux requêtes sont fusionnées en une seule:

http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

Si le nombre d'extensions installées utilisant la même URL de mise à jour est suffisamment important pour qu'une URL de requête GET soit trop longue (environ 2 000 caractères), la vérification de la mise à jour émet des requêtes GET supplémentaires si nécessaire.

Utilisation avancée: version minimale du navigateur

À mesure que nous ajoutons des API au système d'extensions, vous souhaiterez peut-être publier une version mise à jour d'une extension ou d'une application qui ne fonctionnera qu'avec les versions plus récentes du navigateur. Bien que Google Chrome lui-même soit mis à jour automatiquement, il peut s'écouler quelques jours avant que la majorité de la base d'utilisateurs ne passe à une nouvelle version donnée. Pour vous assurer qu'une mise à jour donnée ne s'applique qu'aux versions Google Chrome égales ou supérieures à une version spécifique, ajoutez l'attribut "prodversionmin" à l'élément <app> de votre fichier manifeste de mise à jour. Exemple :

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
  </app>
</gupdate>

Cela garantit que les utilisateurs ne passeront à la version 2 automatiquement que s'ils exécutent Google Chrome 3.0.193.0 ou une version ultérieure.