Erweiterungen, die außerhalb des Chrome Web Store gehostet werden, können nur von Linux-Nutzern installiert werden. Dieses
In diesem Artikel wird beschrieben, wie .crx
-Dateien von einem persönlichen Server verpackt, gehostet und aktualisiert werden. Wenn
Erweiterungen oder Designs ausschließlich über den Chrome Web Store vertreiben, finden Sie im Webstore
Hosting und Aktualisierung.
Verpackung
Erweiterungen und Designs werden als .crx
-Dateien bereitgestellt. Wenn Sie den Upload über den Chrome Developer
Dashboard – die Datei .crx
wird automatisch erstellt. Bei Veröffentlichung auf einem privaten
Server muss die Datei .crx
lokal erstellt oder aus dem Chrome Web Store heruntergeladen werden.
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 Ominibox öffnen oder auf das Chrome-Menü klicken und den Mauszeiger auf „Weitere Tools“ bewegen 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
Hosting
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
- "Nur Text"
- "application/octet-stream"
- „Unbekannt/unbekannt“
- „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.
Wird aktualisiert
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 Datei manifest.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 die automatische Aktualisierung wurde entwickelt, um die serverseitige Arbeit so einfach wie das Eingeben eines 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 die oben genannten 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
<?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.