Mise à jour automatique

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

Si vous publiez à l'aide du tableau de bord du développeur Chrome, vous devez ignorer cette page. Les envois qui réussissent l'aperçu sont automatiquement rendus disponibles sur la fiche Chrome Web Store de l'extension et déployés auprès des utilisateurs finaux.

Si vous hébergez un fichier CRX sur un serveur Web et que vous utilisez des règles d'entreprise pour le transférer sur des appareils gérés, poursuivez la lecture. Nous vous recommandons également de lire les articles relatifs à l'hébergement et à la mise en package.

Auparavant, lorsque les extensions hors magasin étaient acceptées, il était possible de mettre à jour les binaires natifs et l'extension à l'étape de verrouillage. Toutefois, les extensions hébergées sur le Chrome Web Store sont mises à jour via le mécanisme de mise à jour de Chrome que les développeurs ne contrôlent pas. Les développeurs d'extensions doivent veiller à mettre à jour les extensions qui dépendent du binaire natif (par exemple, les anciennes extensions utilisant NPAPI).

Présentation

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

Toutes les deux ou trois heures, le navigateur vérifie si des extensions ou des applications installées ont une URL de mise à jour. Pour chacun d'eux, il envoie une requête à cette URL afin d'obtenir un fichier manifeste XML 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 actuellement installée.

Mettre à jour l'URL

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 points en surbrillance indiquent les parties à 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 et du fichier manifeste de mise à jour:

appid

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

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

  • Ouvrez l'application. Pour ce faire, cliquez 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 Outils > Console JavaScript.
  • Saisissez l'expression suivante dans la console JavaScript: chrome.app.getDetails().id. La console affiche l'ID de l'application sous forme de 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 de "version" dans le fichier manifest.json du fichier .crx.

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

Tests

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

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

Le mécanisme de mise à jour automatique de base est conçu pour faciliter le travail côté serveur. Il suffit de déposer un fichier XML statique sur un serveur Web brut tel qu'Apache et de le mettre à jour lorsque vous publiez de nouvelles versions de vos extensions.

Les développeurs plus expérimentés souhaiteront peut-être profiter du fait que nous ajoutons des paramètres à la requête 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, en renvoyant vers une URL exécutant du code dynamique côté serveur 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 encodée au format URL:

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

Par exemple, supposons que vous ayez deux extensions, qui pointent toutes 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: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Version: "0.4"

La requête de mise à jour de chaque extension individuelle se présenterait comme suit:

  • 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 répertorier plusieurs extensions dans une même requête pour chaque URL de mise à jour unique. Pour l'exemple ci-dessus, si un utilisateur a installé les deux extensions, les deux requêtes sont fusionnées en une seule requête:

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 élevé pour qu'une URL de requête GET soit trop longue (environ 2 000 caractères), la vérification des mises à 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, il est possible que vous souhaitiez publier une version mise à jour d'une extension ou d'une application qui ne fonctionnera qu'avec les versions les plus récentes du navigateur. Bien que Google Chrome soit automatiquement mis à jour, quelques jours peuvent s'écouler avant que la majorité de la base d'utilisateurs ait effectué la mise à jour vers une nouvelle version. Pour vous assurer qu'une mise à jour donnée ne s'appliquera qu'aux versions de Google Chrome ultérieures à une version spécifique, ajoutez l'attribut "prodversionmin" à l'élément dans votre fichier manifeste de mise à jour. Par 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>

Ainsi, les utilisateurs ne passeront automatiquement à la version 2 que s'ils utilisent Google Chrome 3.0.193.0 ou une version ultérieure.