google-chrome-extension firefox-addon firefox-addon-sdk firefox-webextensions

google chrome extension - Estructura del archivo.xpi de extensión de Firefox: descripción, contenido, creación e instalación



google-chrome-extension firefox-addon (2)

Generar un .xpi firmado

  1. Instale web-ext con NPM, tal vez necesite privilegios de root: npm install --global web-ext
  2. Vaya a https://addons.mozilla.org/es/developers/addon/api/key/ y genere una nueva CLAVE API.
  3. Vaya a su carpeta de extensión, abra una terminal y ejecute: web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET donde $ AMO_JWT_IUSSER y $ AMO_JWT_SECRET son las claves que generó en el paso anterior.

Puse muchas cosas en la búsqueda de una manera fácil de desarrollar una extensión de Firefox, pero no puedo crear una extensión. Por favor, dígame la estructura de archivos de las extensiones de Firefox y una manera fácil de instalar la extensión.


.xpi archivo .xpi ( .xpi extensión )

Los archivos .xpi que se usan como contenedores para las extensiones de Mozilla (Firefox, Thunderbird, etc.) son simplemente archivos zip que han cambiado la extensión del archivo a .xpi con los archivos agregados al archivo usando compresión "desinflada" o sin comprimir . Si utiliza cualquier otro tipo de compresión, que no sea "desinflar" o "almacenar" (sin comprimir), obtendrá un error como:

This add-on cannot be installed because it appears to be corrupted

Los archivos comienzan en el directorio raíz del archivo comprimido zip (es decir, no hay un directorio vacío de primer nivel que luego contenga los archivos).

El contenido del archivo podría ser solo unos pocos archivos a cualquier número de archivos. Los archivos que deben incluirse dependen del tipo de complemento que está empaquetando. Si está planeando usar el SDK de complementos , entonces probablemente no necesite conocer el formato de estos archivos, ya que gran parte se abstrae con la herramienta jpm . Si no tiene idea de lo que estoy hablando, es posible que desee leer sobre los diferentes tipos de complementos para Firefox ( WebExtensions , Add-on SDK , Bootstrap/Restartless y Overlay/Legacy/XUL ).

Extensiones web:

Como mínimo, tendrá un archivo manifest.json que describe la extensión. Es casi seguro que tendrá archivos adicionales. Los archivos chrome.manifest , install.rdf y package.json utilizados en otros tipos de complementos no se utilizan en complementos de WebExtension. No deberías tener esos archivos.

SDK de complemento:

El archivo .xpi para una extensión de SDK de complemento de Firefox se debe crear ejecutando jpm xpi . Las extensiones del SDK de complemento se describen en un archivo package.json . Cuando ejecuta jpm xpi su complemento se traduce en un complemento Bootstrap / Restartless. Esto se hace traduciendo el archivo package.json a install.rdf , creando un archivo chrome.manifest y agregando algunos contenedores al JavaScript. No debe intentar realizar este proceso usted mismo, a menos que sea necesario para que su complemento funcione (lo cual sería bastante raro).

Bootstrap / Restartless y Overlay / legacy:

Como mínimo, tiene los archivos install.rdf y chrome.manifest . Los complementos Bootstrap / Restartless también tendrán un archivo bootstrap.js . Casi siempre habrá archivos adicionales. Estos tipos de complementos no utilizan package.json ni manifest.json .

Mi muy simple extensión Bootstrap / Restartless, Print Button is Print (cambia el botón de impresión para imprimir en lugar de imprimir vista previa), tiene la siguiente estructura:

Archive contains: bootstrap.js chrome/ chrome/content/ chrome/content/options.xul chrome/skin/ chrome/skin/printer-typeC128.png chrome/skin/printer-typeC32.png chrome/skin/printer-typeC48.png chrome/skin/printer-typeC64.png chrome.manifest install.rdf license.txt Total 12 entries (42360 bytes)

  • Existen los archivos necesarios install.rdf y chrome.manifest .
  • El archivo Bootstrap/Restartless es necesario para las extensiones Bootstrap/Restartless . Contiene el código que se ejecuta cuando la extensión se instala, elimina, habilita, deshabilita o al iniciar o apagar Firefox. Esta extensión es lo suficientemente simple como para que todo el código JavaScript esté contenido en bootstrap.js .
  • Hay un archivo chrome / content / options.xul que es una definición XUL del diálogo de opciones .
  • El archivo license.txt simplemente explica que la extensión se relasificó bajo la Licencia pública de Mozilla, v2.0 .
  • Los archivos .png son el ícono de esta extensión en varias resoluciones.

Crear el archivo .xpi

Puede usar cualquier método que desee para crear el archivo .zip , que se renombra a .xpi . Tenga en cuenta el requisito de que el único método de compresión que se admite es "desinflar", pero los archivos también se pueden agregar al archivo sin comprimir. Sus archivos de nivel superior (por ejemplo, cualquiera que tenga de manifest.json (WebExtensions), o todo lo demás: chrome.manifest e install.rdf ) deben estar en el directorio raíz del archivo, no en un subdirectorio.

Para crear el archivo .xpi utilizo un archivo por lotes, que utiliza una combinación de comandos de DOS y Unix / Linux (en realidad Cygwin ):

mkxpi.bat :

rm -f [email protected] zip -1 -r [email protected] * [email protected] pause

Esto elimina cualquier versión anterior del archivo .xpi . Luego crea un nuevo archivo .xpi usando -1 , compresión mínima (la velocidad de acceso es más importante que ahorrar espacio), lo que obliga a almacenar sin comprimir o usar "desinflar". El nuevo .xpi contendrá todos los archivos y subdirectorios * , pero ignorará todos los archivos en el archivo de texto [email protected] ( [email protected] ). Ignorar archivos se usa porque tengo otras cosas en el directorio (por ejemplo, directorio .git , archivos .bak creados automáticamente desde el editor, etc.). Una vez que se crea el archivo .xpi el script ejecuta una pause para que pueda verificar qué archivos se incluyeron, que no hubo errores, etc., en lugar de simplemente desaparecer la ventana y asumir que todo está bien.

Mi archivo xpi.ignore es un poco largo, ya que acumula cruft de varios proyectos y rara vez se limpia:

*.com *.class *.dll *.exe *.o *.so *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip *.log *.sql *.sqlite *.svg */.DS_Store */.DS_Store? */._* ._* */.Spotlight-V100 .Spotlight-V100 */.Trashes .Trashes */ehthumbs.db */Thumbs.db *.ORIG *.bak *OLD* OLD/* */OLD/* *.OLD *.OLD[0-9] */OLD/* */OLD[0-9]/* *.unknown *.unknown[0-9] *.updated *.updated[0-9] */Copy * */OLD */OLD* */OLD[0-9] */OLD[0-9][0-9] */test/* */not in xpi/* */tmp *.tmp */foo *.foo *checkpoint .git */.git .gitignore */.gitignore xpi.ignore mkclean.bat mkclean.bat.DONTRUN mkxpi.bat *.xpi */devtools-toolbox-window.ico */devtools-webconsole.ico */JSConsoleWindow.ico */main-window.ico */places.ico */viewSource.ico

Instalar extensiones

Como extensiones normales:
Para instalar una extensión como complemento normal en una versión de lanzamiento o versión beta de Firefox, debe estar firmada por Mozilla . Esto se hace enviándolo a AMO . Puede instalar extensiones sin firmar como complementos normales en otras versiones de Firefox (por ejemplo, Firefox Developer Edition , Firefox Nightly , Unbranded Beta o Unbranded Release ) configurando xpinstall.signatures.required en false en about:config .

Si elige, en una instalación particular de Firefox, puede deshabilitar completamente el requisito de firma del complemento. Para obtener más información, puede ver mi respuesta: ¿Cómo puedo desactivar la verificación de firmas para complementos de Firefox?

Instalar una extensión (es decir, el archivo .xpi ) puede ser una simple cuestión de arrastrarlo y soltarlo en una ventana de Firefox que ejecute el perfil en el que desea instalarlo. Para el development/testing , puede hacer que la extensión esté en un directorio en su disco local usando un archivo proxy de extensión de Firefox (cree un archivo llamado <em:id> la extensión (en install.rdf para Bootstrap / Restartless and Overlay / Legacy) en el directorio de extensiones del perfil que contiene una línea con la ruta completa al directorio que contiene los archivos de la extensión). Dependiendo de cuál sea su objetivo (un perfil, todos los perfiles, todos los usuarios, qué sistema operativo, etc.), existen otras opciones sobre cómo instalar extensiones .

Como complementos temporales :
El único tipo de extensión que no se puede instalar como complemento temporal es Overlay / Legacy. Dichas extensiones requieren que el navegador se reinicie después de la instalación antes de ser funcional. Como tal, no pueden ser temporales.

Para instalar una extensión como temporal, navegue hasta about:debugging . Desde esa página, haga clic en Cargar complemento temporal, luego navegue por la ventana emergente a la carpeta apropiada y seleccione un archivo .xpi o cualquier archivo en el directorio. Si selecciona un archivo que no sea un archivo .xpi , se supone que el directorio contiene archivos adicionales desempaquetados que se identificarán automáticamente.