Host autonomo per Linux

Linux è l'unica piattaforma su cui gli utenti di Chrome possono installare estensioni ospitate al di fuori del Chrome Web Store. Questo articolo descrive come pacchettizzare, ospitare e aggiornare crx da un server web per uso generico. Se distribuisci un'estensione o un tema esclusivamente tramite il Chrome Web Store, consulta l'articolo sull'hosting e aggiornamento.

Pacchetto

Le estensioni e i temi vengono pubblicati come file .crx. Durante il caricamento tramite lo sviluppatore di Chrome Dashboard, crea automaticamente il file crx. Se pubblicata su un server personale, il file crx dovrà essere creato localmente o scaricato da Chrome Web Store.

Scarica .crx dal Chrome Web Store

Se un'estensione è ospitata sul Chrome Web Store, il file .crx può essere scaricato dal Dashboard per sviluppatori. Individua l'estensione in "Le tue schede". e fai clic su "Ulteriori informazioni". Nella fai clic sul link blu main.crx per scaricarlo.

Scarica .crx dalla Dashboard per sviluppatori

Il file scaricato può essere ospitato su un server personale. Questo è il modo più sicuro per ospitare a livello locale, in quanto i contenuti dell'estensione saranno firmati dal Chrome Web Store. Questo aiuta a rilevare potenziali attacchi e manomissioni.

Crea .crx in locale

Le directory delle estensioni vengono convertite in file .crx nella pagina Gestione delle estensioni. Passa a chrome://extensions/ nella omnibox oppure fai clic sul menu Chrome e tieni premuto il puntatore su "Altri strumenti" quindi seleziona "Estensioni".

Nella pagina Gestione delle estensioni, attiva la modalità sviluppatore facendo clic sull'opzione di attivazione/disattivazione accanto a Modalità sviluppatore. Quindi seleziona il pulsante ESTENSIONE PACCHETTO.

È stata selezionata la modalità sviluppatore, quindi l'estensione Click Pack è selezionata

Specifica il percorso della cartella dell'estensione nel campo Directory principale dell'estensione , quindi fai clic sul pulsante Pulsante ESTENSIONE PACCHETTO. Ignora il campo Chiave privata per un pacchetto per la prima volta.

Specifica il percorso dell'estensione, quindi l'estensione Click Pack

Chrome creerà due file, un file .crx e un file .pem contenente il nome dell'estensione chiave privata.

File di estensioni in pacchetto

Non perdere la chiave privata. Conserva il file .pem in un luogo segreto e sicuro. sarà necessario per aggiornare l'estensione.

Aggiorna un pacchetto .crx

Aggiorna il file .crx di un'estensione aumentando il numero di versione in manifest.json.

{
  ...
  "version": "1.5",
  ...
  }
}
{
  ...
  "version": "1.6",
  ...
  }
}

Torna alla pagina di gestione delle estensioni e fai clic sul pulsante ESTENSIONE PACCHETTO. Specifica della directory delle estensioni e della posizione della chiave privata.

Aggiornamento dei file delle estensioni

La pagina fornirà il percorso per l'estensione in pacchetto aggiornata.

Aggiornamento dei file delle estensioni

Pacchettizzazione tramite riga di comando

Pacchettizza le estensioni nella riga di comando richiamando chrome.exe. Usa --pack-extension per specificare la posizione della cartella dell'estensione e il flag --pack-extension-key per specificare il percorso del file della chiave privata dell'estensione.

chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem

Host

Un server che ospita file .crx deve utilizzare le intestazioni HTTP appropriate per consentire agli utenti di installare dell'estensione facendo clic su un link.

Google Chrome considera installabile un file se si verifica una delle seguenti condizioni:

  • Il tipo di contenuti del file è application/x-chrome-extension
  • Il suffisso del file è .crx ed entrambe le seguenti condizioni sono vere:
    • Il file non viene pubblicato con l'intestazione HTTP X-Content-Type-Options: nosniff
    • Il file viene pubblicato con uno dei seguenti tipi di contenuti:
    • stringa vuota
    • "text/plain"
    • "application/octet-stream"
    • "unknown/unknown"
    • "application/unknown"
    • "\*/\*"

Il motivo più comune per il mancato riconoscimento di un file installabile è che il server invii intestazione X-Content-Type-Options: nosniff. Il secondo motivo più comune è che il server invia una tipo di contenuti sconosciuto, che non è nell'elenco precedente. Per risolvere un problema relativo all'intestazione HTTP, modifica la configurazione del server o prova a ospitare il file .crx su un altro server.

Aggiorna

A intervalli di alcune ore, il browser controlla se nelle estensioni installate è presente un URL di aggiornamento. Per ciascuno, a quell'URL cercando un file XML manifest di aggiornamento.

  • I contenuti restituiti da un controllo degli aggiornamenti sono un documento XML manifest degli aggiornamenti che elenca i contenuti di un'estensione.

Se il manifest dell'aggiornamento 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 la stessa chiave privata della versione attualmente installata.

Nota:per tutelare la privacy degli utenti, Google Chrome non invia intestazioni dei cookie con richieste manifest di aggiornamento automatico e ignora le intestazioni Imposta cookie nelle risposte a queste richieste.

Aggiorna URL

Le estensioni ospitate su server esterni al Chrome Web Store devono includere il campo update_url nella il suo file manifest.json.

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

Aggiorna manifest

Il file manifest di aggiornamento restituito dal server deve essere un documento XML.

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='https://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. La del sistema utilizza i seguenti attributi per gli elementi <app> e <updatecheck> della aggiorna manifest:

appid
L'ID estensione viene generato sulla base di un hash della chiave pubblica, come descritto in packaging. L'ID di un'estensione viene visualizzato nella pagina Gestione delle estensioni.
codebase
Un URL HTTPS al file .crx.
versione
Utilizzato dal client per stabilire 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 <app> elementi.

Test

La frequenza predefinita di controllo degli aggiornamenti è di diverse ore, ma un aggiornamento può essere forzato utilizzando il pulsante Aggiorna ora nella pagina Gestione delle estensioni.

Aggiorna le estensioni ora

Questa operazione avvierà i controlli di tutte le estensioni installate.

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 qualsiasi server web, ad esempio Apache, e l'aggiornamento del file XML come nuovo vengono rilasciate versioni diverse delle estensioni.

Gli sviluppatori che ospitano più estensioni possono controllare i parametri della richiesta, che indicano l'ID estensione e la versione nella richiesta di aggiornamento. L'inclusione di questi parametri consente di aggiornare le estensioni dal stesso URL che esegue un codice lato server dinamico anziché un file XML statico.

Il formato dei parametri della richiesta è:

?x=EXTENSION_DATA

Dove EXTENSION_DATA è una stringa con codifica URL nel formato:

id=EXTENSION_ID&v=EXTENSION_VERSION

Ad esempio, due estensioni puntano allo stesso URL di aggiornamento (https://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:

https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1

e

https://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 i precedenti Ad esempio, se un utente ha installato entrambe le estensioni, le due richieste vengono unite in un richiesta singola:

https://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 vengono aggiunte altre API al sistema delle estensioni, viene aggiornata la versione di un'estensione che funzionerà possono essere rilasciate solo con versioni più recenti del browser. Google Chrome viene aggiornato automaticamente, Possono essere necessari alcuni giorni prima che la maggior parte della base utenti venga aggiornata a una nuova release. A garantire che un determinato aggiornamento si applichi solo alle versioni di Google Chrome precedenti o successive a una aggiungi il parametro "prodversionmin" all'elemento <app> nella risposta di aggiornamento.

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

In questo modo gli utenti possono eseguire l'aggiornamento automatico alla versione 2 solo se utilizzano Google Chrome. 3.0.193.0 o superiore.