web-dev-qa-db-de.com

Wie erstelle ich eine Xpi-Datei mit 7Zip?

Ich möchte meine Firefox-Erweiterung als Xpi-Datei packen. Ich versuchte es, indem ich es zum Archiv hinzufügte und es als Dateiname.xpi benannte 

Aber wenn ich versuche, es auf Firefox zu installieren, erhalte ich die Meldung "Paket beschädigt". Gibt es eine Möglichkeit, eine gültige Xpi-Datei zu erstellen?

Ich habe cygwin installiert und versucht, den Zip-Befehl auszuführen, um eine Xpi-Datei zu erstellen. Bekomme Zip aber keinen Befehlsfehler. 

Kann mich jemand dazu bringen, es zu erledigen?

19
user2301765

Wenn Sie sich unter Windows befinden (um Cygwin zu installieren, so scheint es), können Sie das eingebaute Fenster verwenden:

  1. Wählen Sie den Inhalt der Erweiterung aus (denken Sie daran, wählen Sie nicht den äußeren Ordner aus).
  2. Rechtsklick
  3. Senden an
  4. Komprimierter (gezippter) Ordner

Dann ersetzen Sie einfach den .Zip für .xpi im Dateinamen

Sieht so aus, als ob Ihr Problem darin besteht, den Punkt 1. korrekt zu erfüllen. Wählen Sie nur den Inhalt der Erweiterung aus. Nicht der Ordner, der es enthält.

Grundsätzlich sollte Ihre Zip-Datei folgende Struktur haben:

my_extension.Zip
  |- install.rdf
  |- chrome.manifest
  |- <chrome>

und NICHT diese Struktur:

my_extension.Zip
  |- <my_extension>
       |- install.rdf
       |- chrome.manifest
       |- <chrome>
24
Filipe Silva

Ich hatte heute die gleichen Probleme und stellte fest, dass das Add-On offensichtlich nicht von Mozilla signiert wurde, was dazu führte, dass Firefox die Installation ablehnte. Bis vor kurzem war es möglich, diese Sicherheitsüberprüfung zu umgehen, indem Sie xpinstall.signatures.required in about:config auf false setzen. Ab Firefox 46 ist die Signatur jedoch obligatorisch und es ist keine Umgehung mehr möglich, siehe https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/ Das bedeutet, dass man entweder auf eine frühere Version herunterstufen muss oder eine Version eines nicht veröffentlichten Channels verwendet, um die Addons zu testen :(

4
Christallkeks

Außerdem packe ich eine Erweiterung für Firefox mit Befehlszeile 7z:

cd /the/extension/folder/
7z a ../<extension_name>.xpi * -r

(wobei "a" für "add/create" und "-r" für rekursiv steht)

Oder um die Erweiterung mit den gerade bearbeiteten Dateien zu aktualisieren:

cd /the/extension/folder/
7z u ../<extension_name>.xpi * -r

("u" zum Aktualisieren des Archivinhalts)

2
tuk0z

Zwei Methoden mit der GUI 7zFM.exe oder einer Befehlszeile oder Batchdatei.

1.0) GUI-Methode. Angenommen, 7-Zip ist mit der Shell-Integration installiert, sodass 7-Zip im Kontextmenü (mit der rechten Maustaste auf ausgewählte Dateien) von Windows Explorer angezeigt wird.

1.a) Gehen Sie in den Ordner Ihres Add-Ons.

1.b) Wählen Sie alle Dateien und Ordner aus, die in die .xpi aufgenommen werden sollen. Angenommen, Sie haben keine Dateien, die Sie in Unterordnern ignorieren möchten. In diesem Fall möchten Sie möglicherweise die Befehlszeilenoption verwenden.

1.c) Klicken Sie mit der rechten Maustaste auf die Liste der ausgewählten Dateien, suchen Sie das Symbol 7z und wählen Sie die Option Add to archive....

1.d) Ein Dialog erscheint. Bearbeiten Sie den Speicherort und den Namen der ZIP-Datei, ändern Sie in .ZIP in .xpi usw.

1.e) Wenn Sie die .xpi-Datei in demselben Ordner erstellen, sollten Sie sie in Zukunft nicht erneut archivieren, da das Add-On fürchterlich fehlschlägt. Sie möchten niemals, dass aus Versehen ein .xpi in Ihrem .xpi endet. Normalerweise erstelle ich es einfach im übergeordneten Ordner, indem ich am Anfang des Dateinamens ..\ anhebe, z. ..\addon-1.2.3-fx.xpi

1.f) 7-Zip bietet viele leistungsstarke Komprimierungsoptionen, mit denen Firefox nicht alle umgehen kann. Wählen Sie Einstellungen aus, die Firefox verarbeiten kann. Siehe Bild.

 7-Zip Settings for XPI Creation

2.0) Befehlszeilenmethode. Vorausgesetzt, Sie befinden sich in Windows und wissen, wie Sie eine Eingabeaufforderung öffnen, Laufwerke und Verzeichnisse (Ordner a.k.a.) ändern.

2.a) CD in Ihr Add-On-Verzeichnis.

2.b) Verwenden Sie die einfachste 7-Zip-Befehlszeile.

"C:\Program Files\7-Zip\7z.exe" a -tzip addon-1.2.3-fx.xpi *

2.c) Sie können eine kleinere Datei erhalten, indem Sie die genauen Befehlszeilenoptionen finden, die der obigen GUI entsprechen, nämlich:

"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=9 -mm=Deflate -mfb=258 -mmt=8 "addon-1.2.3-fx.xpi" *

Beachten Sie, dass bei Verwendung der Deflate-Komprimierungsmethode keine Option für Dictionary-Größe = 32 KB verfügbar ist. Ansonsten sind die Optionen in Ordnung und entsprechen der GUI.

|-----------------------|---------|--------------|
| Option / Parameter    | GUI     | Command line |
|-----------------------|---------|--------------|
| Archive format        | Zip     | -tzip        |
| Compression level     | Ultra   | -mx=9        |
| Compression method    | Deflate | -mm=Deflate  |
| Dictionary size       | 32 KB   | (none)       |
| Word size             | 258     | -mfb=258     |
| Number of CPU threads | 8       | -mmt=8       |
|-----------------------|---------|--------------|
| Additional Parameters |         |              |
|-----------------------|---------|--------------|
| Recurse into Folders  | (none)  | -r           |
| Multiple passes       | (none)  | -mpass=15    |
| Preserve Timestamps   | (none)  | -mtc=on      |
| Ignore files in list  |         | [email protected]{ignore}  |
|-----------------------|---------|--------------|

Anmerkungen:

i) Die Multi-Thread-Option (-mmt = 8) ist spezifisch für mein System mit 8 Kernen. Sie müssen diesen Wert auf 6 oder 4 oder 2 oder 1 senken (d. H. Die Option zum Entfernen), wenn Sie weniger Kerne usw. haben, oder eine Erhöhung, wenn Sie mehr haben. Macht für eine kleine Erweiterung keinen großen Unterschied.

ii) Die Option zum Wiederherstellen in einem Ordner ist möglicherweise die Standardeinstellung. Wenn Sie diese Option angeben, sollte die korrekte Rekursion sichergestellt werden.

iii) Die Option für preserve windows timestamps (Erstellung, Zugriff, Änderung) sollte on standardmäßig verwendet werden und ist daher möglicherweise nicht erforderlich.

iv) Die Option ignore files in list ist jede Datei, die eine Liste von Dateien und Platzhalterzeichen von Dateien enthält, die Sie ausschließen möchten.

2.d) Erweitertes Thema # 1: Dateiliste ignorieren (Beispiele)

|----------------|------------------------------------|
| What to Ignore | Why to Ignore                      |
|----------------|------------------------------------|
| TODO.txt       | Informal reminders of code to fix. |
| *.xpi          | In case you forget warning above!  |
| .ignore        | Ignore the ignore file list.       |
| ignore.txt     | Same thing, if you used this name. |
|----------------|------------------------------------|

"C:\Program Files\7-Zip\7z.exe" a -tzip -mx9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "addon-1.2.3-fx.xpi" * [email protected]

2.e) Advanced topic # 2: Stapeldatei (Windows CMD.EXE), vorausgesetzt, es handelt sich um relativ neue Fenster, d. H. Aus dem 21. Jahrhundert. Dies kann so einfach und starr sein oder komplex und flexibel, wie Sie es möchten. Es wird allgemein davon ausgegangen, dass Sie sich im Command Prompt im obersten Verzeichnis des Add-Ons befinden, an dem Sie gerade arbeiten, und dass Sie dieses Verzeichnis intelligent benannt haben, um denselben Basisnamen der .xpi-Datei zu verwenden, z. D:\dev\addon-1.2.3-fx-Verzeichnis für das addon-1.2.3-fx.xpi-Add-On-Xpi. Diese Stapeldatei nimmt diese Annahme an und ermittelt dynamisch den korrekten Basisnamen, der für die .xpi verwendet werden soll.

@ECHO OFF
REM - xpi.bat - batch file to create Mozilla add-on xpi using 7-Zip

REM - This finds the folder name, and discards the rest of the full path, saves in an environment variable.
FOR %%* IN (.) DO SET XPI=%%~nx*

REM - Uncomment the DEL line, or delete .xpi file manually, if it gets corrupted or includes some other junk by accident.
REM DEL "%XPI%.xpi"

REM - Command line which does everything the GUI does, but also lets you run several passes for the smallest .xpi possible.
"C:\Program Files\7-Zip\7z.exe" a -tzip -r -mx=9 -mm=Deflate -mfb=258 -mmt=8 -mpass=15 -mtc=on "%XPI%.xpi" * [email protected]
REM - Cleanup the environment variable.
SET XPI=
2
user314159

Wenn Sie die Erweiterung mit 7z packen, komprimieren Sie sie in .Zip und benennen Sie sie dann in .xpi um

1
Đăng Hải

Gehen Sie wie folgt vor, während Sie 7z.__ verwenden. Wählen Sie nur den inneren Inhalt und nicht den äußeren Ordner aus ..__ Geben Sie den Dateinamen als Dateiname.xpi ein und wählen Sie Archivformat als Zip in der Eingabeaufforderung wird beim Zippen von ..__ angezeigt. Sie finden eine gültige xpi-Datei, die erstellt wird . Verwenden Sie das erstellte xpi, um Ihre Erweiterung auf firefox ..__ zu installieren. Es funktioniert!

1
user4583898

Zip einfach alle Dateien und Ordner im Ordner my_extension und ändern Sie die Erweiterung der entpackten Datei in my_extension.xpi 

/my_extension
  |- defaults/
  |- locale/
  |- resources/
  |- install.rdf
  |- ... (other files and folders)

Die Installation der Xpi-Datei, die aus der gepackten Datei des Ordners my_extension erstellt wurde, führt zu einem Fehler als
"Dieses Add-On konnte nicht installiert werden, da es beschädigt zu sein scheint." Error

0
beebek

Ich versuche, eine Zip auf verschiedene Arten zu bauen, weil ich überzeugt war, dass ich etwas falsch mache, weil alles, was ich bekam, "paketverdorbenes" Zeug war. naja .. nicht mehr und ich brauche es nicht einmal mehr von Load temporary add-on zu laden (jetzt ziehe ich die xpi datei vom desktop über Waterfox und ich installiere es als legitime xpi-Datei! Wie ich das mache? Weil ich mir das Github-Zeug selbst versuche, lade ich es zuerst in Load temporary add-on (url: about: debugging # addons) der xpi-Datei mit der verwendeten Methode von user314159 mit der .bat-Dateimethode, die 7Zip verwendet.

nachdem du das geladen hast solltest du irgendwo etwas ähnliches lesen:

Erweiterungs-ID 86257e65ca311ee368ffcee50598ce25733a049b @ temporary-addon

alles, was Sie dann tun sollten, ist das Hinzufügen in manifest.json, wobei Sie die "Anwendungen" modifizieren:

"applications": {
    "gecko": {
      "strict_min_version": "54.0a1",
      "id": "[email protected]"
    }
  },

nach diesem Push Entfernen , um das temporäre Addon zu deinstallieren, sollten Sie das xpi erneut erstellen, wie Sie es zuvor getan haben. Jetzt ist eine normale xpi-Datei SIGNIERT, was Sie normal installieren können ! (hier funktioniert nichts anderes)

Ich benutze Waterfox x64. Es scheint Probleme mit Firefox zu geben

die Antwort ist, dass Sie Ihre Erweiterung auf den Hub hochladen sollten, um Mozilla Signing API zu verwenden https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Distribution

0
Constantin
  1. Datei erstellen config.js
  2. Code in config.js Einfügen
//
try {
Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
.eval("SIGNED_TYPES.clear()");
}
catch(ex) {}
  1. Verschieben Sie config.js In den Arbeitsordner der Anwendung, z. B .: C:\Program Files\Mozilla Firefox\

  2. Erstellen Sie config-prefs.js Und schreiben Sie Code in:

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
  1. Setzen Sie config-pres.js In C:\Program Files\Mozilla Firefox\defaults\pref\

  2. Starten Sie Firefox neu

  3. Schau Ergebnis

enter image description here

0
user251433