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
- 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 dacodebase
. Deve corrispondere al valore di "version" nel filemanifest.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
<?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.