Automatische Aktualisierung

Wir möchten, dass Erweiterungen und Apps aus denselben Gründen wie bei Google Chrome automatisch aktualisiert werden: um Fehler- und Sicherheitsbehebungen einzubauen, neue Funktionen oder Leistungsverbesserungen hinzuzufügen und Benutzeroberflächen.

Wenn Sie für die Veröffentlichung das Entwickler-Dashboard von Google Chrome verwenden, sollten Sie diese Seite ignorieren. Chrome-Web Store-Einreichungen, die die Vorschau bestehen, werden automatisch im Chrome Web Store-Artikeleintrag der Erweiterung zur Verfügung gestellt und den Endnutzern bereitgestellt.

Wenn Sie eine CRX-Datei auf einem Webserver hosten und Unternehmensrichtlinien verwenden, um sie auf verwaltete weiterlesen. Außerdem sollten Sie die Artikel Hosting und Paketerstellung lesen.

Wenn Erweiterungen außerhalb des Stores unterstützt wurden, war es möglich, die nativen Binärdateien und wird die Erweiterung im Sperrschritt aktualisiert. Im Chrome Web Store gehostete Erweiterungen sind jedoch über den Chrome-Update-Mechanismus aktualisiert werden, auf den die Entwickler keinen Einfluss haben. Entwickler von Erweiterungen sollten Seien Sie vorsichtig, wenn Sie Erweiterungen aktualisieren, die eine Abhängigkeit vom nativen Binärprogramm haben (z. B. alten Erweiterungen mit NPAPI).

Übersicht

  • Ein Manifest kann eine „update_url“ enthalten. und auf einen Speicherort für Updateprüfungen verweist.
  • Bei dem Inhalt, der bei einer Updateprüfung zurückgegeben wird, handelt es sich um ein XML-Dokument im Update-Manifest, in dem die neuesten Version einer Erweiterung.

Alle paar Stunden prüft der Browser, ob installierte Erweiterungen oder Apps eine Update-URL haben. Für sendet er eine Anfrage an diese URL und sucht nach einer Aktualisierungsmanifest-XML-Datei. Wenn das Update dass das Manifest eine Version angibt, die aktueller als die installierte ist, lädt der Browser installiert die neue Version. Wie bei manuellen Updates muss die neue .crx-Datei mit demselben privaten Schlüssel als aktuell installierte Version verwenden.

URL aktualisieren

Wenn Sie Ihre eigene Erweiterung oder App hosten, müssen Sie die „update_url“ hinzufügen mit Ihrem manifest.json-Datei so aussehen:

{
  "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: (Die Stellen, die Sie ändern sollten, sind markiert):

<?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 basiert auf dem Format, das von Omaha, der Update-Infrastruktur von Google, verwendet wird. Weitere Informationen finden Sie unter http://code.google.com/p/omaha/. Das Erweiterungssystem verwendet Folgendes: Attribute für die Elemente und des Updatemanifests:

appid

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

Gehostete Anwendungen werden jedoch nicht auf der Seite "Erweiterungen" aufgeführt. Sie finden die ID jeder App mit führen Sie die folgenden Schritte aus:

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

Eine URL zur Datei .crx.

Version

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

Die Update-Manifest-XML-Datei kann Informationen zu mehreren Erweiterungen enthalten, indem mehrere .

Test

Die Standardhäufigkeit für die Prüfung auf Updates beträgt mehrere Stunden. Sie können ein Update jedoch erzwingen, indem Sie die Auf der Seite „Erweiterungen“ auf die Schaltfläche Erweiterungen jetzt aktualisieren.

Erweiterte Verwendung: Anfrageparameter

Der grundlegende Mechanismus für die automatische Aktualisierung wurde entwickelt, um die serverseitige Arbeit so einfach wie das Eingeben eines statische XML-Datei auf einen einfachen Webserver wie Apache hochladen und diese XML-Datei beim Veröffentlichen neue Versionen Ihrer Erweiterungen.

Fortgeschrittene Entwickler können sich die Tatsache zunutze machen, dass wir Parameter zum -Anforderung für das Update-Manifest, um die Erweiterungs-ID und -version anzugeben. Dann können sie dieselben Update-URL für alle ihre Erweiterungen und verweist auf eine URL, die stattdessen dynamischen, serverseitigen Code ausführt einer statischen XML-Datei.

Das Format der Anfrageparameter ist wie folgt:

?x=_<extension_data>_

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

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

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

  • Erweiterung 1 <ph type="x-smartling-placeholder">
      </ph>
    • ID: „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa“
    • Version: „1.1“
  • Erweiterung 2 <ph type="x-smartling-placeholder">
      </ph>
    • ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Version: „0.4“

Die Anfrage zum Aktualisieren jeder einzelnen Erweiterung sieht so aus:

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

Für jede eindeutige Update-URL können mehrere Erweiterungen in einer einzelnen Anfrage aufgelistet werden. Für die oben genannten Wenn ein Nutzer beispielsweise beide Erweiterungen installiert hat, werden sie in einer Einzelanfrage:

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 groß genug ist, dass eine GET-Anfrage URL zu lang ist (mehr als 2000 Zeichen), gibt die Update-Prüfung zusätzliche GET-Anfragen wie folgt aus: notwendig ist.

Erweiterte Nutzung: Mindestversion des Browsers

Wenn wir dem Erweiterungssystem weitere APIs hinzufügen, kann es sein, dass Sie eine aktualisierte Version von Version einer Erweiterung oder App, die nur mit neueren Versionen des Browsers funktioniert. Während Google Chrome selbst wird automatisch aktualisiert. Es kann einige Tage dauern, bis der Großteil der Nutzer auf eine neue Version aktualisiert. Um sicherzustellen, dass ein bestimmtes Update nur auf Google Chrome angewendet wird oder höher als eine bestimmte Version haben, fügen Sie dem -Element in Ihrem Update-Manifest auf. 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>

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