Linux ist die einzige Plattform, auf der Chrome-Nutzer Erweiterungen installieren können, die außerhalb des
Chrome Web Store herunterladen. In diesem Artikel wird beschrieben, wie Sie crx
verpacken, hosten und aktualisieren.
von einem Allzweck-Webserver. Wenn Sie ausschließlich eine Erweiterung oder ein Design anbieten
Chrome Web Store erhalten, finden Sie unter Webstore-Hosting und
wird aktualisiert.
Paket
Erweiterungen und Designs werden als .crx
-Dateien bereitgestellt. Wenn Sie den Upload über den Chrome Developer
Dashboard verwenden, erstellt das Dashboard automatisch die Datei crx
. Falls veröffentlicht
Auf einem persönlichen Server muss die Datei crx
lokal erstellt oder von Chrome heruntergeladen werden
Web Store
CRX aus dem Chrome Web Store herunterladen
Wenn eine Erweiterung im Chrome Web Store gehostet wird, kann die Datei .crx
aus dem
Entwickler-Dashboard Suchen Sie die Erweiterung unter „Meine Einträge“. und klicken Sie auf „Weitere Infos“. Im
Pop-up-Fenster öffnen möchten, klicken Sie zum Herunterladen auf den blauen Link main.crx
.
Die heruntergeladene Datei kann auf einem persönlichen Server gehostet werden. Dies ist die sicherste Methode, lokal, da die Inhalte der Erweiterung vom Chrome Web Store signiert werden. Dieses um potenzielle Angriffe und Manipulationen zu erkennen.
CRX lokal erstellen
Erweiterungsverzeichnisse werden auf der Seite zur Verwaltung von Erweiterungen in .crx
-Dateien konvertiert. Navigieren zu
chrome://extensions/
in der Omnibox oder klicken Sie auf das Chrome-Menü und halten Sie den Mauszeiger über "Weitere Tools" dann
wählen Sie „Erweiterungen“ aus.
Aktivieren Sie auf der Seite zur Verwaltung von Erweiterungen den Entwicklermodus, indem Sie auf den Umschalter neben Entwicklermodus: Klicken Sie dann auf die Schaltfläche ERWEITERUNG VERpacken.
Geben Sie den Pfad zum Ordner der Erweiterung im Feld Stammverzeichnis der Erweiterung an und klicken Sie dann auf Schaltfläche ERWEITERUNG VERpacken. Ignorieren Sie das Feld Privater Schlüssel für ein erstmaliges Paket.
Chrome erstellt zwei Dateien, eine .crx
-Datei und eine .pem
-Datei, die die
privaten Schlüssel enthält.
Verlieren Sie nicht den privaten Schlüssel! Bewahre die .pem
-Datei an einem geheimen und sicheren Ort auf. es wird
um die Erweiterung aktualisieren zu können.
CRX-Paket aktualisieren
Aktualisieren Sie die Datei .crx
einer Erweiterung, indem Sie die Versionsnummer in manifest.json
erhöhen.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
Kehren Sie zur Seite zur Verwaltung von Erweiterungen zurück und klicken Sie auf die Schaltfläche ERWEITERUNG PAKIEREN. Geben Sie die Pfad zum Verzeichnis der Erweiterungen und zum Speicherort des privaten Schlüssels.
Die Seite enthält den Pfad für die aktualisierte gepackte Erweiterung.
Paket über die Befehlszeile
Verpacken Sie Erweiterungen in der Befehlszeile, indem Sie chrome.exe
aufrufen. --pack-extension
verwenden
um den Speicherort des Ordners der Erweiterung anzugeben, und das Flag --pack-extension-key
für
gibt den Speicherort der privaten Schlüsseldatei der Erweiterung an.
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
Host
Ein Server, auf dem .crx
-Dateien gehostet werden, muss geeignete HTTP-Header verwenden, damit Nutzer die
indem Sie auf einen Link klicken.
Google Chrome stuft eine Datei als installierbar ein, wenn eine der folgenden Bedingungen zutrifft:
- Die Datei hat den Inhaltstyp
application/x-chrome-extension
. - Das Dateisuffix lautet
.crx
und beide der folgenden Bedingungen sind wahr: <ph type="x-smartling-placeholder">- </ph>
- Die Datei wird nicht mit dem HTTP-Header
X-Content-Type-Options: nosniff
bereitgestellt. - Die Datei wird mit einem der folgenden Inhaltstypen bereitgestellt:
- Leerer String
"text/plain"
"application/octet-stream"
"unknown/unknown"
"application/unknown"
"\*/\*"
- Die Datei wird nicht mit dem HTTP-Header
Der häufigste Grund für das Fehlen einer installierbaren Datei ist, dass der Server
Überschrift X-Content-Type-Options: nosniff
. Der zweithäufigste Grund ist, dass der Server
Unbekannter Inhaltstyp, der nicht in der Liste oben aufgeführt ist Um ein Problem mit dem HTTP-Header zu beheben,
die Konfiguration des Servers überprüfen oder versuchen, die .crx
-Datei auf einem anderen Server zu hosten.
Aktualisieren
Alle paar Stunden prüft der Browser installierte Erweiterungen auf Update-URLs. Für jedes Ergebnis ist ein an diese URL senden und nach einer Manifest-XML-Datei für die Aktualisierung suchen.
- 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.
Wenn im Update-Manifest eine Version erwähnt wird, die aktueller als die installierte ist, wird der Browser
lädt die neue Version herunter und installiert sie. Wie bei manuellen Aktualisierungen muss die neue .crx
-Datei signiert werden
mit demselben privaten Schlüssel wie die aktuell installierte Version.
URL aktualisieren
Erweiterungen, die auf Servern außerhalb des Chrome Web Store gehostet werden, müssen das Feld update_url
in
ihre manifest.json
-Datei.
{
"name": "My extension",
...
"update_url": "https://myhost.com/mytestextension/updates.xml",
...
}
Manifest aktualisieren
Das vom Server zurückgegebene Update-Manifest sollte ein XML-Dokument sein.
<?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>
Dieses XML-Format basiert auf dem Format, das von Omaha, der Update-Infrastruktur von Google, verwendet wird. Die
im Erweiterungssystem die folgenden Attribute für die Elemente <app>
und <updatecheck>
des
Update-Manifest:
- appid
- Die Erweiterungs-ID wird basierend auf einem Hash des öffentlichen Schlüssels generiert, wie unter Verpackung beschrieben. Die ID einer Erweiterung wird auf der Seite zur Verwaltung von Erweiterungen angezeigt.
- Codebasis
- Eine HTTPS-URL zur Datei
.crx
. - Version
- Wird vom Client verwendet, um zu bestimmen, ob die durch
codebase
angegebene Datei.crx
heruntergeladen werden soll. Er sollte mit dem Wert von „version“ übereinstimmen. in der Dateimanifest.json
der Datei.crx
.
Die Update-Manifest-XML-Datei kann Informationen zu mehreren Erweiterungen enthalten, indem mehrere
<app>
-Elemente.
Test
Die Standardhäufigkeit für die Prüfung auf Updates beträgt mehrere Stunden. Ein Update kann jedoch über die Schaltfläche Update auf der Seite „Erweiterungen verwalten“.
Dadurch wird die Prüfung aller installierten Erweiterungen gestartet.
Erweiterte Verwendung: Anfrageparameter
Der grundlegende Mechanismus für automatische Updates wurde entwickelt, um die serverseitige Arbeit so einfach wie möglich zu machen statische XML-Datei auf einen einfachen Webserver wie z. B. Apache herunter und aktualisieren diese XML-Datei als neue veröffentlicht werden.
Entwickler, die mehrere Erweiterungen hosten, können Anfrageparameter prüfen, die die Erweiterungs-ID angeben und Version angeben. Mit diesen Parametern können Erweiterungen über die Dieselbe URL führt dynamischen serverseitigen Code anstelle einer statischen XML-Datei aus.
Das Format der Anfrageparameter ist wie folgt:
?x=EXTENSION_DATA
Dabei ist EXTENSION_DATA
ein URL-codierter String im folgenden Format:
id=EXTENSION_ID&v=EXTENSION_VERSION
Zwei Erweiterungen verweisen beispielsweise auf dieselbe Update-URL (https://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 lautet wie folgt:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
und
https://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 den vorherigen Wenn ein Nutzer beispielsweise beide Erweiterungen installiert hat, werden sie in einer Einzelanfrage:
https://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 dem Erweiterungssystem immer mehr APIs hinzugefügt werden, wird eine aktualisierte, funktionierende Version einer Erweiterung erstellt.
mit neueren Versionen des Browsers veröffentlicht werden. Google Chrome selbst wird zwar automatisch aktualisiert,
kann es einige Tage dauern, bis der Großteil der Nutzer auf eine neue Version aktualisiert ist. Bis
dass ein bestimmtes Update nur für Google Chrome-Versionen gilt, die ab einem bestimmten
die Version „prodversionmin“ dem <app>
-Element in der Updateantwort hinzu.
<?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.