firefox addon - make - ¿Cómo crear un archivo xpi con 7Zip?
how to make a mozilla extension (7)
Además, así es como empaco una extensión para Firefox con la línea de comandos 7z :
cd /the/extension/folder/
7z a ../<extension_name>.xpi * -r
(donde ''a'' significa "agregar / crear" y "-r" para recursivo)
O para actualizar la extensión con los archivos que acabamos de editar:
cd /the/extension/folder/
7z u ../<extension_name>.xpi * -r
("u" para actualizar el contenido del archivo)
Me gustaría empaquetar mi extensión de Firefox como archivo xpi. Intenté agregarlo al archivo y nombrarlo como nombre_archivo.xpi
Pero cuando intento instalarlo en Firefox, aparece el mensaje "paquete dañado". ¿Hay alguna manera de que pueda crear un archivo xpi válido?
Instalé cygwin y traté de ejecutar el comando zip para crear un archivo xpi. Pero obtener zip no es un error de comando.
¿Alguien puede guiarme para hacerlo?
Cuando la extensión del paquete utiliza 7z, comprima en .zip y luego cambie el nombre a .xpi, no comprima i
Dos métodos, utilizando la GUI 7zFM.exe, o una línea de comandos o un archivo por lotes.
1.0) Método GUI . Suponiendo que 7-Zip se instale con la integración de shell para que vea 7-Zip aparece en el menú contextual (clic derecho de los archivos seleccionados) del Explorador de Windows.
1.a) Ve a la carpeta de tu complemento.
1.b) Seleccione todos los archivos y carpetas que desea incluir en el .xpi. Suponiendo que no tiene ningún archivo que desee ignorar en ninguna subcarpeta. Si lo hace, es posible que desee utilizar la opción de línea de comandos.
1.c) Haga clic con el botón derecho en la lista de archivos seleccionados, busque el icono 7z
, elija la opción Add to archive...
1.d) Aparece un cuadro de diálogo. Edite la ubicación y el nombre del archivo zip, cambie a .zip a .xpi, etc.
1.e) Tenga en cuenta que si crea el .xpi en la misma carpeta, no lo vuelva a archivar en el futuro, ya que su complemento fallará horriblemente. Nunca quieres que un .xpi termine dentro de tu .xpi por accidente. Por lo general, solo lo creo en la carpeta principal, agregando ../
al principio del nombre del archivo, por ejemplo, ../addon-1.2.3-fx.xpi
1.f) 7-Zip tiene muchas opciones de compresión poderosas, no todas las cuales Firefox puede manejar. Elige la configuración que Firefox puede procesar. Consulte la imagen.
2.0) Método de línea de comando . Suponiendo que esté en Windows y sepa cómo abrir un símbolo del sistema, cambiar unidades y directorios (también conocidas como carpetas).
2.a) CD
a su directorio de complementos.
2.b) Usa la línea de comandos 7-Zip más básica.
"C:/Program Files/7-Zip/7z.exe" a -tzip addon-1.2.3-fx.xpi *
2.c) Puede obtener un archivo más pequeño buscando las opciones de línea de comando exactas que corresponden a la GUI anterior, a saber:
"C:/Program Files/7-Zip/7z.exe" a -tzip -mx=9 -mm=Deflate -mfb=258 -mmt=8 "addon-1.2.3-fx.xpi" *
Tenga en cuenta que no hay una opción de Tamaño del diccionario = 32kb cuando se usa el método de Compresión Desinflada. De lo contrario, las opciones están en orden y corresponden a la 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 | | -x@{ignore} |
|-----------------------|---------|--------------|
Notas:
i) La opción de subprocesos múltiples (-mmt = 8) es específica de mi sistema que tiene 8 núcleos. Deberá reducirlo a 6 o 4 o 2 o 1 (es decir, eliminar opción) si tiene menos núcleos, etc., o aumentar si tiene más. No hará mucha diferencia de ninguna manera para una extensión pequeña.
ii) La opción de recuperar en la carpeta puede o no ser la predeterminada, por lo que especificar esta opción debería asegurar una recursión adecuada.
iii) La opción de preserve windows timestamps
(creación, acceso, modificación) debería estar predeterminada de forma predeterminada, por lo que puede no ser necesaria
iv) La opción de ignore files in list
es cualquier archivo que tenga una lista de archivos y comodines de archivos que desea excluir.
2.d) Tema avanzado # 1 : ignorar lista de archivos (ejemplos)
|----------------|------------------------------------|
| 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) Tema avanzado n. ° 2 : archivo por lotes (Windows CMD.EXE), asumiendo ventanas bastante recientes, es decir, del siglo XXI. Esto puede ser tan simple y rígido, o complejo y flexible como quiera hacerlo. Un balance general es asumir que estará en el Command Prompt
, en el directorio de nivel superior del complemento en el que está trabajando, y que ha nombrado de manera inteligente ese directorio para tener el mismo nombre base del archivo .xpi, por ejemplo, D:/dev/addon-1.2.3-fx
Directorio D:/dev/addon-1.2.3-fx
para el addon-1.2.3-fx.xpi
xpi addon-1.2.3-fx.xpi
. Este archivo por lotes realiza esta suposición y determina de forma dinámica el nombre base correcto que se debe utilizar para el .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=
Haga lo siguiente mientras usa 7z Seleccione solo el contenido interno y no la carpeta externa. Ingrese el nombre del archivo como filename.xpi y elija el formato de archivo como zip en la solicitud que aparece al comprimir. Encontrarás un archivo xpi válido creado. Usa el xpi creado para instalar tu extensión en firefox. ¡Funciona!
Hoy experimenté los mismos problemas y descubrí que el error era que el complemento, obviamente, no fue firmado por Mozilla, lo que provocó que Firefox rechazara la instalación. Hasta hace poco, era posible pasar por xpinstall.signatures.required
esta comprobación de seguridad configurando xpinstall.signatures.required
en false en about:config
. Sin embargo, a partir de Firefox 46, la firma es obligatoria y ya no se proporciona ningún by-pass, vea https://blog.mozilla.org/addons/2016/01/22/add-on-signing-update/ Esto significa que uno tiene que bajar a una versión anterior o usar una versión de canal que no sea de lanzamiento para probar sus complementos :(
Si está en Windows (para instalar Cygwin parece que lo hace), puede usar la herramienta integrada de Windows:
- Seleccione el contenido de la extensión (recuerde, no seleccione la carpeta exterior).
- Botón derecho del ratón
- Enviar a
- Carpeta comprimida (en zip)
Luego simplemente reemplace el .zip para .xpi en el nombre del archivo
Parece que su problema está en completar el punto 1. correctamente. Selecciona solo los contenidos de la extensión. No la carpeta que lo contiene.
Así que básicamente tu archivo zip debería tener la siguiente estructura:
my_extension.zip
|- install.rdf
|- chrome.manifest
|- <chrome>
y NO esta estructura:
my_extension.zip
|- <my_extension>
|- install.rdf
|- chrome.manifest
|- <chrome>
Simplemente comprima todos los archivos y carpetas dentro de la carpeta my_extension y cambie la extensión del archivo comprimido resultante a my_extension.xpi
/my_extension
|- defaults/
|- locale/
|- resources/
|- install.rdf
|- ... (other files and folders)
La instalación del archivo xpi creado a partir del archivo comprimido de la carpeta my_extension generará un error como
"Este complemento no se pudo instalar porque parece estar dañado". error