Je voudrais emballer mon extension firefox en tant que fichier xpi. J'ai essayé en l'ajoutant à archive et le nommefichier.xpi
Mais quand j'essaye de l'installer sur Firefox, je reçois le message "package corrupted". Existe-t-il un moyen de créer un fichier xpi valide?
J'ai installé cygwin et essayé d'exécuter la commande Zip pour créer un fichier xpi. Mais Zip obtenu n'est pas une erreur de commande.
Quelqu'un peut-il me guider pour le faire?
Si vous êtes sur Windows (vous pouvez installer cygwin comme vous le faites), vous pouvez utiliser l’outil intégré de Windows:
Il suffit ensuite de remplacer le fichier .Zip pour .xpi dans le nom du fichier.
On dirait que votre problème est de terminer le point 1. correctement. Sélectionnez uniquement le contenu de l'extension. Pas le dossier qui le contient.
Donc, fondamentalement, votre fichier Zip devrait avoir la structure suivante:
my_extension.Zip
|- install.rdf
|- chrome.manifest
|- <chrome>
et PAS cette structure:
my_extension.Zip
|- <my_extension>
|- install.rdf
|- chrome.manifest
|- <chrome>
J'ai rencontré les mêmes problèmes aujourd'hui et j'ai constaté que le module complémentaire n'était visiblement pas signé par Mozilla, ce qui a poussé Firefox à refuser l'installation. Jusqu'à récemment, il était possible de contourner cette vérification de sécurité en définissant xpinstall.signatures.required
sur false dans about:config
. Cependant, à partir de Firefox 46, la signature est obligatoire et aucun by-pass n’est fourni, voir https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/ Cela signifie que l'on doit soit rétrograder à une version précédente, soit utiliser une version de canal non-release pour tester ses addons :(
Aussi, voici comment je compresse une extension pour Firefox avec en ligne de commande 7z:
cd /the/extension/folder/
7z a ../<extension_name>.xpi * -r
(où 'a' signifie "ajouter/créer" et "-r" pour récursif)
Ou pour mettre à jour l'extension avec le (s) fichier (s) que nous venons de modifier:
cd /the/extension/folder/
7z u ../<extension_name>.xpi * -r
("u" pour mettre à jour le contenu de l'archive)
Deux méthodes, à l'aide de l'interface graphique 7zFM.exe, ou une ligne de commande ou un fichier de commandes.
1.0) Méthode graphique. En supposant que 7-Zip soit installé avec l'intégration de Shell, vous verrez apparaître 7-Zip dans le menu contextuel (clic droit sur les fichiers sélectionnés) de l'Explorateur Windows.
1.a) Allez dans le dossier de votre add-on.
1.b) Sélectionnez tous les fichiers et dossiers que vous souhaitez inclure dans le fichier .xpi. En supposant que vous n’ayez pas de fichiers que vous souhaitez ignorer dans aucun sous-dossier. Si vous le faites, vous pouvez utiliser l'option de ligne de commande.
1.c) Cliquez avec le bouton droit sur la liste des fichiers sélectionnés, recherchez l'icône 7z
, choisissez l'option Add to archive...
.
1.d) Une boîte de dialogue apparaît. Modifiez l’emplacement et le nom du fichier Zip, changez le fichier .Zip en .xpi, etc.
1.e) Notez que si vous créez le fichier .xpi dans le même dossier, ne le ré-archivez pas à l'avenir, car votre complément échouera horriblement. Vous ne voulez jamais qu'un fichier .xpi se retrouve dans votre fichier .xpi par accident. En général, je le crée simplement dans le dossier parent, en ajoutant ..\
au début du nom de fichier, par exemple. ..\addon-1.2.3-fx.xpi
1.f) 7-Zip propose de nombreuses options de compression puissantes que Firefox ne gère pas toutes. Choisissez les paramètres que Firefox est capable de traiter. Reportez-vous à l'image.
2.0) Méthode de ligne de commande. En supposant que vous êtes sous Windows et que vous sachiez ouvrir une invite de commande, modifier les lecteurs et les répertoires (dossiers a.k.a.).
2.a) CD
dans votre répertoire add-on.
2.b) Utilisez la ligne de commande 7-Zip la plus élémentaire.
"C:\Program Files\7-Zip\7z.exe" a -tzip addon-1.2.3-fx.xpi *
2.c) Vous pouvez obtenir un fichier plus petit en recherchant les options de ligne de commande exactes qui correspondent à l'interface graphique ci-dessus, à savoir:
"C:\Program Files\7-Zip\7z.exe" a -tzip -mx=9 -mm=Deflate -mfb=258 -mmt=8 "addon-1.2.3-fx.xpi" *
Notez qu’il n’existe pas d’option Dictionary size = 32kb lorsque vous utilisez la méthode Deflate Compression. Sinon, les options sont en ordre et correspondent à l'interface graphique.
|-----------------------|---------|--------------|
| 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 | | -x@{ignore} |
|-----------------------|---------|--------------|
Remarques:
i) L'option multi-thread (-mmt = 8) est spécifique à mon système qui comporte 8 cœurs. Vous devrez réduire ce nombre à 6 ou 4 ou 2 ou 1 (c'est-à-dire supprimer l'option) si vous avez moins de cœurs, etc., ou l'augmenter si vous en avez plus. Cela ne fera pas beaucoup de différence dans les deux cas pour une petite extension.
ii) L'option de recurse dans le dossier peut être ou non l'option par défaut, donc spécifier cette option devrait assurer une récursion correcte.
iii) L'option preserve windows timestamps
(création, accès, modification) devrait par défaut être on
de toute façon, de sorte qu'elle n'est peut-être pas nécessaire.
iv) L'option ignore files in list
est un fichier contenant une liste de fichiers et de caractères génériques que vous souhaitez exclure.
2.d) Sujet avancé n ° 1: ignorer la liste de fichiers (exemples)
|----------------|------------------------------------|
| 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) Sujet avancé n ° 2: fichier de commandes (Windows CMD.EXE), dans l’hypothèse de fenêtres relativement récentes, c’est-à-dire du 21e siècle. Cela peut être aussi simple et rigide, ou complexe et flexible que vous voulez en faire. Un solde général suppose que vous serez dans le Command Prompt
, dans le répertoire de niveau supérieur du module complémentaire sur lequel vous travaillez, et que vous avez intelligemment nommé ce répertoire pour avoir le même nom de base que le fichier .xpi, par exemple. D:\dev\addon-1.2.3-fx
répertoire pour le addon-1.2.3-fx.xpi
add-on xpi. Ce fichier de commandes repose sur cette hypothèse et détermine de manière dynamique le nom de base correct à utiliser pour le fichier .xpi.
@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=
Si vous utilisez une extension de pack utilisant 7z, compressez-le en .Zip, puis renommez-le en .xpi, ne compressez pas i
Procédez comme suit lorsque vous utilisez 7zSélectionnez uniquement le contenu intérieur et non le dossier extérieur . Entrez le nom du fichier sous le nom filename.xpi et choisissez le format d'archivage sous la forme Zip dans l'invite qui apparaît lors de la compression. Vous trouverez un fichier xpi valide créé . Utilisez le fichier xpi créé pour installer votre extension sur firefox . Cela fonctionne!
Il suffit de compresser tous les fichiers et dossiers du dossier my_extension et de modifier l’extension du fichier compressé ainsi obtenue en mon_extension.xpi
/my_extension
|- defaults/
|- locale/
|- resources/
|- install.rdf
|- ... (other files and folders)
L’installation du fichier xpi créé à partir du fichier zippé du dossier my_extension entraîne une erreur
"Cet add-on n'a pas pu être installé car il semble être corrompu." Erreur