Automatisch aktualisieren

Erweiterungen und Apps sollen aus ähnlichen Gründen wie Google Chrome automatisch aktualisiert werden: um Fehler und Sicherheitslücken zu beheben, neue Funktionen oder Leistungsverbesserungen hinzuzufügen und die Benutzeroberfläche zu optimieren.

Wenn Sie über das Chrome-Entwickler-Dashboard veröffentlichen, sollten Sie diese Seite ignorieren. Chrome Web Store-Einreichungen, die die Vorschau bestehen, werden automatisch im Chrome Web Store-Artikeleintrag der Erweiterung verfügbar gemacht und für Endnutzer bereitgestellt.

Wenn Sie eine CRX-Datei auf einem Webserver hosten und sie mithilfe von Unternehmensrichtlinien auf verwaltete Geräte übertragen, lesen Sie weiter. Lesen Sie auch die Artikel Hosting und Verpackung.

Bisher war es bei der Unterstützung von Erweiterungen außerhalb des Play Store möglich, die Binärdateien und die Erweiterung gleichzeitig zu aktualisieren. Erweiterungen, die im Chrome Web Store gehostet werden, werden jedoch über den Chrome-Updatemechanismus aktualisiert, den Entwickler nicht steuern können. Erweiterungsentwickler sollten Erweiterungen, die von der Binärdatei abhängig sind, mit Bedacht aktualisieren (z. B. ältere Erweiterungen, die NPAPI verwenden).

Übersicht

  • Ein Manifest kann das Feld „update_url“ enthalten, das auf einen Speicherort für die Aktualisierungsüberprüfung verweist.
  • Der Inhalt, der von einer Update-Prüfung zurückgegeben wird, ist ein XML-Dokument mit einem Update-Manifest, das die neueste Version einer Erweiterung enthält.

Alle paar Stunden prüft der Browser, ob installierte Erweiterungen oder Apps eine Update-URL haben. Für jede davon wird eine Anfrage an diese URL gesendet, um nach einer XML-Datei mit einem Update-Manifest zu suchen. Wenn im Update-Manifest eine Version erwähnt wird, die neuer als die installierte ist, lädt der Browser die neue Version herunter und installiert sie. Wie bei manuellen Aktualisierungen muss die neue .crx-Datei mit demselben privaten Schlüssel wie die installierte Version signiert sein.

URL aktualisieren

Wenn Sie Ihre eigene Erweiterung oder App hosten, müssen Sie der Datei manifest.json das Feld „update_url“ hinzufügen.

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

Manifest aktualisieren

Das vom Server zurückgegebene Update-Manifest sollte ein XML-Dokument sein, das so aussieht (Hervorhebungen kennzeichnen Teile, die Sie ändern sollten):

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

Dieses XML-Format wurde von Omaha übernommen, der Update-Infrastruktur von Google. Weitere Informationen finden Sie unter http://code.google.com/p/omaha/. Das Erweiterungssystem verwendet die folgenden Attribute für die Elemente <app> und <updatecheck> des Update-Manifests:

appid

Die Erweiterungs- oder App-ID, die basierend auf einem Hash des öffentlichen Schlüssels generiert wird, wie unter Verpackung beschrieben. Die ID einer Erweiterung oder Chrome-App finden Sie auf der Seite „Erweiterungen“ (chrome://extensions).

Gehostete Apps werden jedoch nicht auf der Seite „Erweiterungen“ aufgeführt. So finden Sie die ID einer App:

  • Öffnen Sie die App. Klicken Sie dazu auf das Symbol auf der Seite „Neuer Tab“.
  • Öffnen Sie die JavaScript-Konsole. Klicken Sie dazu auf das Schraubenschlüsselsymbol und wählen Sie Tools > JavaScript-Konsole aus.
  • Geben Sie den folgenden Ausdruck in die JavaScript-Konsole ein: chrome.app.getDetails().id. In der Console wird die ID der App als String in Anführungszeichen angezeigt.
Codebasis

Eine URL zur .crx-Datei.

Version

Wird vom Client verwendet, um zu ermitteln, ob die von codebase angegebene .crx-Datei heruntergeladen werden soll. Er muss mit dem Wert „version“ in der manifest.json-Datei der .crx-Datei übereinstimmen.

Die XML-Datei des Update-Manifests kann Informationen zu mehreren Erweiterungen enthalten, wenn mehrere <app>-Elemente enthalten sind.

Test

Die Standardaktualisierungshäufigkeit beträgt mehrere Stunden. Sie können eine Aktualisierung jedoch mit der Schaltfläche Erweiterungen jetzt aktualisieren auf der Seite „Erweiterungen“ erzwingen.

Erweiterte Verwendung: Anfrageparameter

Der grundlegende Mechanismus für automatische Updates soll den serverseitigen Aufwand minimieren. Sie fügen einfach eine statische XML-Datei auf einem beliebigen Webserver wie Apache hinzu und aktualisieren diese XML-Datei, wenn Sie neue Versionen Ihrer Erweiterungen veröffentlichen.

Fortgeschrittene Entwickler können davon profitieren, dass wir der Anfrage für das Update-Manifest Parameter hinzufügen, um die Erweiterungs-ID und -Version anzugeben. Dann kann dieselbe Update-URL für alle Erweiterungen verwendet werden, die auf eine URL mit dynamischem serverseitigem Code statt auf eine statische XML-Datei verweist.

Das Format der Anfrageparameter lautet:

?x=_<extension_data>_

Dabei ist _<extension_data>_ ein URL-codierter String im folgenden Format:

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

Angenommen, Sie haben zwei Erweiterungen, die beide auf dieselbe Update-URL (http://test.com/extension_updates.php) verweisen:

  • Erweiterung 1
    • ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Version: „1.1“
  • Zusatzoption 2
    • ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Version: „0.4“

Die Anfrage zum Aktualisieren der einzelnen Erweiterungen würde so lauten:

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

In einer einzelnen Anfrage können mehrere Erweiterungen für jede eindeutige Update-URL aufgeführt werden. Wenn ein Nutzer beispielsweise beide Erweiterungen installiert hat, werden die beiden Anfragen in eine einzige Anfrage zusammengeführt:

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

Wenn die Anzahl der installierten Erweiterungen mit derselben Update-URL so groß ist, dass eine GET-Anfrage-URL zu lang ist (über 2.000 Zeichen), werden bei der Update-Prüfung bei Bedarf zusätzliche GET-Anfragen gesendet.

Erweiterte Nutzung: Mindestbrowserversion

Da wir dem Erweiterungssystem weitere APIs hinzufügen, möchten Sie möglicherweise eine aktualisierte Version einer Erweiterung oder App veröffentlichen, die nur mit neueren Versionen des Browsers funktioniert. Google Chrome selbst wird automatisch aktualisiert. Es kann jedoch einige Tage dauern, bis die Mehrheit der Nutzer auf eine neue Version umgestiegen ist. Damit ein bestimmtes Update nur auf Google Chrome-Versionen angewendet wird, die mindestens einer bestimmten Version entsprechen, fügen Sie dem <app>-Element in Ihrem Update-Manifest das Attribut „prodversionmin“ hinzu. Beispiel:

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

So wird sichergestellt, dass Nutzer nur dann automatisch auf Version 2 aktualisiert werden, wenn sie Google Chrome 3.0.193.0 oder höher verwenden.