Aktualisieren Sie Firefox-Erweiterungen automatisch

Ich mache Sie auf eine Übersetzung des Artikels Automatische Firefox-Erweiterungsaktualisierungen aufmerksam .

Der Artikel ist alt, aber alle Informationen sind bis heute relevant.


Entwickler von Firefox-Erweiterungen wissen natürlich, dass Sie bei der Verteilung von Erweiterungen über den offiziellen Store die Möglichkeit haben, Ihre Erweiterungen automatisch und kostenlos zu aktualisieren. Aber was ist, wenn wir unsere Erweiterung auf unserer Website selbst hosten möchten? Wie implementieren wir selbst die Unterstützung für automatische Updates?

Signieren von Erweiterungen


Ab der dritten Version von Firefox sollten alle Erweiterungsupdates über zuverlässige Kanäle bereitgestellt werden. Da wir uns entschieden haben, unsere Erweiterung selbst zu hosten, haben wir zwei Möglichkeiten, um diese Anforderung zu erfüllen:

  • Bereitstellung von Updates über eine sichere Verbindung (https)
  • Zeichenerweiterung elektronisch

Wir werden die erste Option nicht in Betracht ziehen - in den meisten Fällen fallen zusätzliche Kosten an (Sie müssen ein SSL-Zertifikat kaufen und eine statische IP-Adresse haben (ich habe nicht verstanden, wofür es ist, aber Sie werden keine Wörter aus dem Lied löschen [ca. Übersetzung] ). Die digitale Signatur im Gegenteil ist kostenlos, einfach zu bedienen und schnell zu implementieren. Nun, lass uns lernen, wie man es benutzt!

Erstellen Sie ein privates / öffentliches Schlüsselpaar


Der erste Schritt beim Signieren unserer Erweiterung besteht darin, ein privates / öffentliches Schlüsselpaar zu erstellen. Mozilla bietet zu diesem Zweck das McCoy- Dienstprogramm an. Es ist nicht das einfachste Hilfsprogramm der Welt. Im Folgenden erfahren Sie, wie es zubereitet wird:

  • Gehen Sie zur McCoy- Website und laden Sie das entsprechende Paket herunter (es gibt Versionen für Windows, Linux und Mac OS X).
  • Packen Sie das Paket in ein bequemes Verzeichnis aus
  • Führen Sie die Anwendung aus. Beim ersten Start wird angeboten, ein Hauptkennwort zum Schutz der Schlüssel zu erstellen. Das Erstellen eines solchen Passworts wird dringend empfohlen! Bei jedem Neustart von McCoy werden Sie nach diesem Kennwort gefragt.
  • Wenn die Anwendung ausgeführt wird, wählen Sie im Menü Schlüssel »Neuen Schlüssel erstellen. Geben Sie den richtigen Namen für Ihren Schlüssel ein und klicken Sie auf OK. Denken Sie daran, auch wenn Sie mehrere Erweiterungen auf Ihrer Site hosten möchten, reicht ein Schlüssel aus.

Nun, die Schlüssel sind erstellt, jetzt müssen Sie das Erweiterungsmanifest aktualisieren.

Aktualisieren Sie install.rdf


Es wird davon ausgegangen, dass Sie mit install.rdf vertraut sind, sodass wir keine Zeit damit verschwenden, dessen Struktur zu beschreiben (wenn nicht, sind Sie hier ). Als Beispiel verwende ich install.rdf aus dem Toolbar Tutorial . Hier ist die Originalversion:

tuttoolbar@borngeek.comTutorial Toolbar21.0{ec8030f7-c20a-464f-9b0e-13a3a9e97384}4.030.*Jonah BishopAn example toolbar extension.https://www.borngeek.com/firefox/

Wir müssen diesem Manifest zwei Elemente hinzufügen: em:updateURLund em:updateKey. Das Element em:updateURLzeigt auf die URL, unter der sich das Update- Manifest (update.rdf) befindet. Es sieht so aus:

http://www.example.com/update.rdf

Denken Sie daran - Sie können keine Erweiterung in den offiziellen Store stellen, wenn Ihr Manifest dieses Element enthält.

Der nächste ist bei uns em:updateKey. Es enthält nur einen öffentlichen Schlüssel. Öffnen Sie dazu McCoy, klicken Sie mit der rechten Maustaste auf den zuvor erstellten Schlüssel und wählen Sie im Kontextmenü die Option "Öffentlichen Schlüssel kopieren" . Danach platzieren Sie den Schlüssel zwischen dem öffnenden und dem schließenden Tag:


MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDW8qxAeURIMLnHjb
KrjR/uqnRsiomahNArMh3KqRLDDmRGCoO21fyHyh5kdgiEL+2Q+sNP
z+j5maIG4qePXp7BVp90QMqiGLvl+z4baDOqcNvErN0l8scd8EegXc
G7Ofa5Gc5oEU/gItIVR4k9AICyW2pJhe51UPa3UKXDS0v3TwIDAQAB

Abrakadabra. Glücklicherweise ist Firefox intelligent genug und ermöglicht Ihnen, Leerzeichen im em:updateKeyElement zu verwenden, wodurch install.rdf besser lesbar wird (wie oben gezeigt, ist dies eine formatierte Version). Standardmäßig wird eine lange Zeichenfolge aus McCoy kopiert.

Nach dem Hinzufügen dieser beiden Elemente sieht install.rdf folgendermaßen aus:

tuttoolbar@borngeek.comTutorial Toolbar21.0{ec8030f7-c20a-464f-9b0e-13a3a9e97384}4.030.*Jonah BishopAn example toolbar extension.https://www.borngeek.com/firefox/http://www.example.com/update.rdf
        MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDW8qxAeURIMLnHjb
        KrjR/uqnRsiomahNArMh3KqRLDDmRGCoO21fyHyh5kdgiEL+2Q+sNP
        z+j5maIG4qePXp7BVp90QMqiGLvl+z4baDOqcNvErN0l8scd8EegXc
        G7Ofa5Gc5oEU/gItIVR4k9AICyW2pJhe51UPa3UKXDS0v3TwIDAQAB
        

Wir haben die Aktualisierung des Manifests unserer Erweiterung abgeschlossen! Bitte beachten Sie, dass dieser Schritt nur einmal ausgeführt werden muss. Das heißt, Sie müssen diese Schritte nicht bei jedem nächsten Update wiederholen (es sei denn, Sie ändern die URL "update.rdf" oder den Schlüssel). Alles, zu diesem Zeitpunkt ist es bereits möglich, die Erweiterung für die weitere Verteilung zu packen (an Benutzer zu verteilen).

Erstelle update.rdf


Da wir die Erweiterung selbst fertiggestellt haben, ist es Zeit, ein Update-Manifest zu erstellen. Diese Datei (update.rdf) befindet sich auf unserem Server und bestimmt tatsächlich, was der Benutzer sieht, wenn er nach Updates sucht. Beginnen wir mit einem kurzen Blick auf die endgültige Version der zu erstellenden Datei:

1.0.2{ec8030f7-c20a-464f-9b0e-13a3a9e97384}4.030.*http://www.example.com/downloads/tuttoolbar_1_0_2.xpi
            sha256:c22ad513c1243959a6d8e6b3cfad18a2a9141306f0165da6b05b008b2042e502
            

Lassen Sie uns Zeile für Zeile durchgehen und besprechen, was hier vor sich geht. Zunächst haben wir einen Standard-XML-Header, gefolgt von einem r: RDF-Element, das uns mitteilt, dass wir eine RDF-Datei (Resource Description Framework) haben. Wir interessieren uns hauptsächlich für das Element r: Description. Sie müssen ein Element für jede Erweiterung haben, die Sie in update.rdf beschreiben.

( Ja, ja, in einer update.rdf ist es möglich, Updates für viele Erweiterungen, Extension Versioning, Update und Compatibility [ca. Übersetzung] zu beschreiben. ) Als

erstes sollten wir das Attribut aufschreiben about. Teilurn:mozilla:extensionerforderlich, gefolgt von der GUID Ihrer Nebenstelle. In unserem Fall lautet die GUID: tuttoolbar@borngeek.com. Denken Sie daran - wenn Sie keine E - Mail-Stil GUID tun (und so etwas wie d4373b50-43b3-11de-8a39-0800200c9a66), dann muss es in geschweifte Klammern eingeschlossen werden {d4373b50-43b3-11de-8a39-0800200c9a66}.

Nach mehreren untergeordneten Elementen ( updates, r:Seq, r:li, und andere r:Description) auf dem Anschlagelement version. Dies ist in unserem Fall die Version Ihrer Erweiterung 1.0.2.

Als nächstes haben wir Informationen über die Anwendung, für die unsere Erweiterung vorgesehen ist (Firefox). Wir haben ein targetApplicationElement, r:Descriptiondas ein äußerst wichtiges idElement enthält. Der Wert dieses Elements ist die Firefox-GUID.

(Sofort offensichtlich, schrieben die Basurmans. Kurz gesagt - jedes Ziel hat eine eigene GUID - Firefox, Thunderbird, Firefox für Android, jeder hat eine andere. Wir gehen hier , wählen die Anwendung aus, unter der unsere Erweiterung funktioniert, und kopieren ihre GUID. Hier können Sie sich das update.rdf-Beispiel für mehrere Ziele ansehen [ca. Übersetzung.] ) ,

gefolgt vertraut minVersionund maxVersionElemente , die jeweils die minimale und maximale Versionen Firefox-well definieren (oder andere Target-a) , ein Werk , in dem die berechnete Erweiterung. Es ist sehr wichtig, dass diese Werte mit den in install.rdf angegebenen Werten übereinstimmen.

Als nächstes haben wirupdateLinkArtikel. Es gibt die URL der Erweiterung selbst an (d. H. Die xpi-Datei). Stellen Sie sicher, dass die URL auf die entsprechende Datei verweist, insbesondere wenn Sie ältere Versionen der Erweiterung unterstützen und herunterladen lassen.

Nun, am Ende warten wir auf updateHashein Element. Dieses Element enthält den Hash sha1, sha256, sha384 oder sha512 unserer Erweiterung (d. H. Die xpi-Datei). Ich bevorzuge sha256, da es Probleme mit der Abwärtskompatibilität für sha384 und sha512 gab (siehe Fehler 383390 ( alles wurde lange behoben ). Wenn Sie unter Linux arbeiten, haben Sie bereits alles, was Sie zum Generieren von sha benötigen. Windows-Benutzer können das entsprechende Dienstprogramm herunterladen (ich verwende sha256sum), zum Beispiel hier: Cygwin . Um einen Hash zu erhalten, geben Sie im Terminal Folgendes ein:

sha256sum tuttoolbar_1_0_2.xpi

Die Ausgabe sieht ungefähr so ​​aus:

c22ad513c1243959a6d8e6b3cfad18a2a9141306f0165da6b05b008b2042e502 *tuttoolbar.xpi

Die hexadezimale Zeichenfolge (bis auf ein Leerzeichen) muss eingegeben werden, um updateHashdie Art der Verschlüsselung anzugeben. Es sollte ungefähr so ​​aussehen:


sha256:c22ad513c1243959a6d8e6b3cfad18a2a9141306f0165da6b05b008b2042e502

Eigentlich alles! Speichern Sie es als Entwicklungsversion! Ich persönlich benutze den Namen update.rdf.dev. Warum muss ich eine separate Version für die Entwicklung aufbewahren? Denn wenn Sie dieses Manifest unterschreiben ( und wir prüfen die Option mit der Unterschrift ), wird sein Inhalt ein wenig unleserlich und für die weitere Bearbeitung ungeeignet. Es ist daher besser, die Entwicklungsversion getrennt zu halten und bei Bedarf eine Kopie davon zu signieren.

Unterschreiben Sie das Manifest


Gehen Sie zum Signieren des Manifests nacheinander folgendermaßen vor:

  • Kopieren Sie die Entwicklerversion des Manifests und nennen Sie sie update.rdf. Es ist diese Datei, die wir unterschreiben werden
  • Starten Sie McCoy, wenn es noch nicht ausgeführt wird
  • Wählen Sie den Schlüssel aus, mit dem Sie signieren möchten, und wählen Sie im Menü Update »Update-Manifest signieren
  • Wählen Sie im daraufhin angezeigten Menü die soeben erstellte Datei update.rdf aus und klicken Sie auf Öffnen

Es wird so aussehen, als ob nichts passiert, aber es ist nicht so! Ich habe einen solchen Anspruch auf McCoy - er sagt am Ende der Arbeit nichts. Wenn Sie das Manifest öffnen, stellen Sie möglicherweise fest, dass es sich ein wenig geändert hat. Tatsächlich endet hier die Arbeit an der Erweiterung - es ist Zeit, Dateien auf den Server hochzuladen.

Host update.rdf


Vor dem Hochladen von Dateien müssen wir sicherstellen, dass unser Server zum Hosten von rdf- und xpi-Dateien bereit ist. In Apache können wir dies über die .htaccess-Regeln tun (ich weiß nicht, wie es in IIS oder TomCat funktioniert, denke daran, dass dies eine Anweisung nur für Apache ist). Normalerweise schreibe ich diese Regeln in die .htaccess-Datei des Stammverzeichnisses der Site - für den Fall, dass ich xpi und rdf verschieben möchte. Die Regeln sind einfach:

AddType application/x-xpinstall .xpi
AddType text/xml .rdf

( Jetzt ist es schon modisches Nginx, dafür machen wir das:

types {
 application/x-xpinstall      xpi;
 text/xml      xml, rdf;
}

und legen Sie es entweder in der allgemeinen /etc/nginx/mime.typesoder in der Konfiguration unseres Servers. [ca. Übersetzung.]
)

Dies ist notwendig für den korrekten Datei-Upload vom Server. Das ist ein sehr wichtiger Punkt! Andernfalls wird Ihre Erweiterung nicht installiert und Updates funktionieren auch nicht. Denken Sie auch daran: Wenn Sie ein CMS (z. B. WordPress) verwenden, sollten Sie diese Regeln für alle Fälle im Stammverzeichnis der Website platzieren.

Nachdem alles registriert ist, können Sie unsere xpi und update.rdf an den entsprechenden Adressen ausfüllen. "Update.rdf" sollte sich dort befinden, wo die Erweiterung "install.rdf" hinweist (das Tag der em:updateURLDatei "install.rdf" der Erweiterung). Die Erweiterung selbst (.xpi) sollte dort liegen, wo update.rdf (tag updateLink) verweist . Versuche nicht verwirrt zu werden.

Das ist alles! Obwohl die Prozedur zum ersten Mal etwas verwirrend ist, ist alles ganz einfach.

Code bereinigen!

Jetzt auch beliebt: