Actualización automática

Queremos que las extensiones y apps se actualicen automáticamente por alguno de los mismos motivos que el de Google Chrome: para incorporar correcciones de errores y seguridad, agregar nuevas funciones o mejoras de rendimiento, y mejorar interfaces de usuario.

Si publicas mediante el Panel del desarrollador de Chrome, debes ignorar esta página. Web de Chrome Los envíos de tiendas que pasan la vista previa se ponen a disposición automáticamente en la ficha de elementos de Chrome Web Store de la extensión y se implementan para los usuarios finales.

Si alojas un archivo CRX en un servidor web y usas políticas empresariales para enviarlo a un servidor administrado sigue leyendo. También te recomendamos que leas Hosting y Empaquetado.

Antes, cuando se admitían las extensiones fuera de la tienda, era posible tener los objetos binarios nativos y la extensión se actualizará en el paso de bloqueo. Sin embargo, las extensiones alojadas en Chrome Web Store se a través del mecanismo de actualización de Chrome que los desarrolladores no controlan. Los desarrolladores de extensiones deben ten cuidado con la actualización de extensiones que dependan del objeto binario nativo (por ejemplo, extensiones heredadas con NPAPI).

Descripción general

  • Un manifiesto puede contener una URL de actualización que apunta a una ubicación para realizar verificaciones de actualizaciones.
  • El contenido que devuelve una verificación de actualizaciones es un documento XML de manifiesto de actualización que enumera la versión de una extensión.

Cada algunas horas, el navegador comprueba si las extensiones o aplicaciones instaladas tienen una URL de actualización. Para cada una, realiza una solicitud a esa URL en busca de un archivo XML del manifiesto de actualización. Si la actualización el manifiesto menciona una versión más reciente que la instalada, el navegador se descarga y instala la nueva versión. Al igual que con las actualizaciones manuales, el nuevo archivo .crx debe firmarse con el mismo privada como la versión instalada actualmente.

URL de actualización

Si alojas tu propia extensión o app, debes agregar "update_url". a tu manifest.json, como se muestra a continuación:

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

Actualizar manifiesto

El manifiesto de actualización que muestra el servidor debe ser un documento XML similar al siguiente: (los puntos destacados indican las partes que debes modificar):

<?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>

Este formato XML se tomó del que usa Omaha, la infraestructura de actualización de Google. Consulta http://code.google.com/p/omaha/ para obtener más información. El sistema de extensiones utiliza lo siguiente para los elementos y del manifiesto de actualización:

appid

La extensión o el ID de la aplicación, generado en función de un hash de la clave pública, como se describe en Empaquetado. Puedes encontrar el ID de una extensión o app de Chrome en la página Extensiones (chrome://extensions).

Sin embargo, las apps alojadas no aparecen en la página Extensiones. Puedes encontrar el ID de cualquier app con sigue estos pasos:

  • Abre la app. Para ello, haz clic en el ícono correspondiente en la página Nueva pestaña.
  • Abre la Consola de JavaScript. Para hacerlo, haz clic en el ícono de llave inglesa y selecciona Herramientas > Consola de JavaScript
  • Ingresa la siguiente expresión en la Consola de JavaScript: chrome.app.getDetails().id. El console muestra el ID de la app como una cadena entre comillas.
base de código

Una URL al archivo .crx

versión

El cliente lo usa para determinar si debe descargar el archivo .crx que especifica el cliente. codebase Debería coincidir con el valor de "version". en el archivo manifest.json del archivo .crx.

El archivo XML de manifiesto de actualización puede contener información sobre varias extensiones al incluir varias .

Prueba

La frecuencia predeterminada de verificación de actualizaciones es de varias horas, pero puedes forzar una actualización usando el comando El botón Actualizar extensiones ahora de la página Extensiones

Uso avanzado: parámetros de solicitud

El mecanismo básico de actualización automática está diseñado para que el trabajo en el servidor sea tan fácil como colocar un archivo en formato XML estático en cualquier servidor web plano, como Apache, y actualizarlo a medida que lanzas versiones nuevas de tus extensiones.

Los desarrolladores más avanzados tal vez quieran aprovechar el hecho de que agregamos parámetros a la solicitud del manifiesto de actualización para indicar el ID y la versión de la extensión. Luego, pueden usar la misma URL de actualización de todas sus extensiones, que dirige a una URL que ejecuta código dinámico del servidor de un archivo en formato XML estático.

El formato de los parámetros de la solicitud es el siguiente:

?x=_<extension_data>_

Donde _<extension_data>_ es una cadena codificada para URL del siguiente formato:

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

Por ejemplo, supongamos que tienes dos extensiones y ambas apuntan a la misma URL de actualización (http://test.com/extension_updates.php):

  • Extensión 1
    • ID: “aaaaaaaaaaaaaaaaaaaaaaaaaaaaa”
    • Versión: “1.1”
  • Extensión 2
    • Número de identificación: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Versión: "0.4"

La solicitud para actualizar cada extensión individual sería la siguiente:

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

Se pueden enumerar varias extensiones en una sola solicitud para cada URL de actualización única. Para lo anterior Por ejemplo, si un usuario tiene instaladas ambas extensiones, las dos solicitudes se combinan en solicitud única:

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

Si la cantidad de extensiones instaladas que usan la misma URL de actualización es lo suficientemente grande como para que se envíe una solicitud GET La URL es demasiado larga (más de 2000 caracteres aprox.), la verificación de actualizaciones emite solicitudes GET adicionales como necesario.

Uso avanzado: versión mínima del navegador

A medida que agregamos más APIs al sistema de extensiones, es posible que desees lanzar una versión la versión de una extensión o aplicación que funcionará solo con las versiones más recientes del navegador. Si bien Google Chrome se actualiza automáticamente. Es posible que pasen algunos días hasta que la mayoría de los usuarios se actualicen a cualquier nuevo lanzamiento. Para garantizar que una actualización determinada se aplique solo a Google Chrome a versiones anteriores o posteriores a una específica, agrega el comando "prodversionmin" al en tu manifiesto de actualización. Por ejemplo:

<?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>

Esto garantiza que los usuarios se actualicen automáticamente a la versión 2 solo si ejecutan Google Chrome. 3.0.193.0 o superior