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 des interfaces utilisateur personnalisées.

Si vous publiez à l'aide du tableau de bord du développeur Chrome, vous devez ignorer cette page. Chrome pour le Web Les envois Google Store pour lesquels un aperçu est concluant sont automatiquement disponibles dans 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 vers le service géré appareils, continuez à lire. Nous vous invitons également à lire les sections Hébergement et Packaging.

Auparavant, lorsque les extensions hors Play Store étaient acceptées, il était possible d'avoir les binaires natifs et l'extension peut être mise à jour lors de l'étape de verrouillage. Toutefois, les extensions hébergées sur le Chrome Web Store sont mis à jour via le mécanisme de mise à jour de Chrome que les développeurs ne contrôlent pas. Les développeurs d'extensions doivent soyez prudent lorsque vous mettez à jour les extensions qui ont une dépendance sur le binaire natif (par exemple, les anciennes extensions à l'aide de NPAPI).

Présentation

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

Toutes les deux ou trois heures, le navigateur vérifie si les extensions ou les applications installées disposent d'une URL de mise à jour. Pour il envoie une requête à cette URL pour rechercher un fichier manifeste de mise à jour XML. Si la mise à jour indique 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 le même nom clé privée que la version actuellement installée.

URL de mise à jour

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

{
  "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 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. Voir http://code.google.com/p/omaha/ pour en savoir plus. Le système d'extensions utilise les éléments suivants : pour les éléments et du fichier manifeste de mise à jour:

appid

L'extension ou l'ID de l'application, généré à partir d'un hachage de la clé publique, comme décrit dans Emballage : Vous pouvez trouver l'ID d'une extension ou d'une application Chrome sur la page "Extensions" (chrome://extensions).

En revanche, les applications hébergées ne figurent pas sur la page "Extensions". Vous pouvez trouver l'ID de n'importe quelle application en utilisant 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 représentant une clé à molette et choisissez 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 .

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 de la Bouton Mettre à jour les extensions maintenant de la page "Extensions".

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

Le mécanisme basique de mise à jour automatique est conçu pour rendre le travail côté serveur aussi simple que le simple fait de déposer un fichier XML statique sur un serveur Web standard tel qu'Apache, puis le mettre à jour au fur et à mesure que vous le publiez. de nouvelles versions de vos extensions.

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

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

?x=_<extension_data>_

_<extension_data>_ correspond à une chaîne encodée au format URL:

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

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

  • Extension 1 <ph type="x-smartling-placeholder">
      </ph>
    • ID : "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah (TRANSLATED)
    • Version : "1.1"
  • Extension 2 <ph type="x-smartling-placeholder">
      </ph>
    • ID : "bbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Version : "0.4"

La requête de mise à jour de chaque extension individuelle serait 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 répertorier plusieurs extensions dans une seule requête pour chaque URL de mise à jour unique. Pour les Par exemple, si les deux extensions sont installées par un utilisateur, elles sont fusionnées demande simple:

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 demande GET L'URL est trop longue (plus de 2 000 caractères), la vérification des mises à jour émet des requêtes GET supplémentaires telles que nécessaires.

Utilisation avancée: version minimale du navigateur

À mesure que nous ajouterons des API au système d'extensions, vous souhaiterez peut-être publier une mise à jour version d'une extension ou d'une application qui fonctionne uniquement avec les versions les plus récentes du navigateur. Bien que Google Chrome est mis à jour automatiquement. Quelques jours peuvent s'écouler avant que la majorité de la base d'utilisateurs n'ait à chaque nouvelle version. Pour s'assurer qu'une mise à jour donnée ne s'appliquera qu'à Google Chrome versions antérieures ou supérieures à une version spécifique, vous ajoutez le paramètre à la dans le 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 procéderont automatiquement à la mise à jour vers la version 2 que s'ils exécutent Google Chrome. 3.0.193.0 ou version ultérieure.