Aggiornamento automatico

Vogliamo che le estensioni e le app vengano aggiornate automaticamente per alcuni degli stessi motivi di Google Chrome: per integrare correzioni di bug e di sicurezza, aggiungere nuove funzionalità o miglioramenti delle prestazioni e migliorare e le interfacce utente di Google Cloud.

Se pubblichi contenuti utilizzando la Dashboard per sviluppatori di Chrome, devi ignorare questa pagina. Chrome per il web Gli invii nello Store che superano l'anteprima vengono resi automaticamente disponibili nella scheda degli elementi del Chrome Web Store dell'estensione e vengono implementati per gli utenti finali.

Se ospiti un file CRX su un server web e utilizzi criteri aziendali per eseguirne il push ai server dispositivi, continua a leggere. Dovresti anche leggere Hosting e Packaging.

In precedenza, quando le estensioni esterne allo store erano supportate, era possibile avere i file binari nativi e aggiornare l'estensione nel passaggio di blocco. Tuttavia, le estensioni ospitate sul Chrome Web Store aggiornate tramite il meccanismo di aggiornamento di Chrome che gli sviluppatori non sono sotto il controllo. Gli sviluppatori di estensioni dovrebbero fai attenzione all'aggiornamento delle estensioni che hanno una dipendenza dal programma binario nativo (ad esempio, estensioni precedenti utilizzando NPAPI).

Panoramica

  • Un file manifest può contenere un valore "update_url" che punta a una posizione per eseguire i controlli degli aggiornamenti.
  • I contenuti restituiti da un controllo degli aggiornamenti sono un documento XML manifest degli aggiornamenti che elenca i contenuti di un'estensione.

Il browser controlla a intervalli di alcune ore se eventuali estensioni o app installate hanno un URL di aggiornamento. Per ogni elemento invia una richiesta a quell'URL per cercare un file XML manifest di aggiornamento. Se l'aggiornamento il file manifest menziona una versione più recente di quella installata, il browser scarica e installa la nuova versione. Come per gli aggiornamenti manuali, il nuovo file .crx deve essere firmato con lo stesso chiave privata come versione attualmente installata.

Aggiorna URL

Se ospiti la tua estensione o app, devi aggiungere "update_url" alle tue manifest.json, in questo modo:

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

Aggiorna manifest

Il file manifest di aggiornamento restituito dal server deve essere un documento XML simile al seguente: (le parti evidenziate indicano le parti che devi modificare):

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

Questo formato XML è stato preso in prestito da quello utilizzato da Omaha, l'infrastruttura di aggiornamento di Google. Consulta http://code.google.com/p/omaha/ per maggiori dettagli. Il sistema delle estensioni utilizza i seguenti elementi: per gli elementi e del manifest dell'aggiornamento:

appid

L'estensione o l'ID app, generato in base a un hash della chiave pubblica, come descritto in Pacchetto. Puoi trovare l'ID di un'estensione o dell'app di Chrome nella pagina Estensioni (chrome://extensions).

Le app in hosting, tuttavia, non sono elencate nella pagina Estensioni. Puoi trovare l'ID di qualsiasi app utilizzando segui questi passaggi:

  • Apri l'app. Per farlo, fai clic sulla relativa icona nella pagina Nuova scheda.
  • Apri la console JavaScript. A questo scopo, fai clic sull'icona a forma di chiave inglese e seleziona Strumenti > Console JavaScript.
  • Inserisci la seguente espressione nella console JavaScript: chrome.app.getDetails().id. La mostra l'ID dell'app come stringa tra virgolette.
codebase

Un URL che rimanda al file .crx.

versione

Utilizzato dal client per determinare se deve scaricare il file .crx specificato da codebase. Deve corrispondere al valore di "version" nel file manifest.json del file .crx.

Il file XML manifest di aggiornamento può contenere informazioni su più estensioni includendo più estensioni .

Test

La frequenza predefinita di controllo degli aggiornamenti è di diverse ore, ma puoi forzare un aggiornamento utilizzando il metodo Pulsante Aggiorna le estensioni ora nella pagina Estensioni.

Utilizzo avanzato: parametri di richiesta

Il meccanismo di aggiornamento automatico di base è progettato per rendere il funzionamento lato server semplice quanto il semplice rilascio di un un file XML statico su un normale server web, come Apache, e viene aggiornato quando si rilascia nuove versioni delle tue estensioni.

Gli sviluppatori più esperti potrebbero voler sfruttare l'aggiunta di parametri al del file manifest di aggiornamento per indicare l'ID e la versione dell'estensione. Quindi possono usare lo stesso aggiornare l'URL di tutte le estensioni, puntando a un URL che esegue codice dinamico lato server di un file XML statico.

Il formato dei parametri della richiesta è:

?x=_<extension_data>_

Dove _<extension_data>_ è una stringa con codifica URL nel formato:

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

Ad esempio, supponi di avere due estensioni, che puntano entrambe allo stesso URL di aggiornamento (http://test.com/extension_updates.php):

  • Estensione 1
    • ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Versione: "1.1"
  • Estensione 2
    • ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Versione: "0.4"

La richiesta di aggiornamento di ogni singola estensione sarebbe:

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

È possibile elencare più estensioni in una singola richiesta per ogni URL di aggiornamento univoco. Per quanto riguarda le opzioni precedenti Ad esempio, se un utente ha installato entrambe le estensioni, le due richieste vengono unite in un richiesta singola:

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

Se il numero di estensioni installate che utilizzano lo stesso URL di aggiornamento è abbastanza grande da far sì che una richiesta GET L'URL è troppo lungo (più di 2000 caratteri circa); il controllo degli aggiornamenti invia altre richieste GET necessaria.

Utilizzo avanzato: versione minima del browser

Man mano che aggiungiamo altre API al sistema delle estensioni, è possibile che tu voglia rilasciare un file versione di un'estensione o app che funziona solo con le versioni più recenti del browser. Mentre Google Chrome stesso viene aggiornato automaticamente. Potrebbero essere necessari alcuni giorni prima che la maggior parte della base utenti aggiornati a una determinata nuova release. Per garantire che un determinato aggiornamento venga applicato solo a Google Chrome versioni uguali o successive a una specifica versione, aggiungi il parametro "prodversionmin" all'attributo nel file manifest di aggiornamento. Ad esempio:

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

Questo assicura che gli utenti eseguano l'aggiornamento automatico alla versione 2 solo se utilizzano Google Chrome. 3.0.193.0 o superiore.