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
-
Instale web-ext con NPM, tal vez necesite privilegios de root:
npm install --global web-ext
- Vaya a https://addons.mozilla.org/es/developers/addon/api/key/ y genere una nueva CLAVE API.
-
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.