¿Qué es el formato de archivo XPI?
El archivo con la extensión .xpi contiene un archivo de datos para la instalación de software adicional de Mozilla. El paquete de instalación es un archivo ZIP comprimido mediante el método deflate; comparte los mismos magic bytes PK (50 4B 03 04) que un archivo ZIP estándar. El nombre de la extensión .xpi es la abreviatura de Cross-Platform Install - XPInstall, que era el nombre de la tecnología utilizada en el proceso de instalación original.
Los paquetes .xpi se utilizan para instalar y ampliar la funcionalidad de aplicaciones como:
- Firefox,
- SeaMonkey,
- Thunderbird.
Los archivos de paquete .xpi pueden contener complementos, extensiones, temas o diccionarios. El archivo también almacena metadatos de instalación. En el formato heredado XPInstall, esto significaba un archivo de script install.js y un archivo de manifiesto install.rdf; los paquetes WebExtension modernos (introducidos con Firefox 57 en 2017) utilizan manifest.json junto con activos JavaScript, HTML, CSS e iconos. El formato está estrechamente relacionado con los archivos JAR; ambos son contenedores ZIP con un diseño interno específico.
Los archivos .xpi firmados distribuidos a través de addons.mozilla.org llevan un directorio META-INF/ que contiene una firma criptográfica de Mozilla. Las instalaciones estándar de Firefox solo aceptan archivos .xpi firmados digitalmente por Mozilla. Para instalar paquetes de terceros no certificados por Mozilla, los usuarios deben utilizar una Developer Edition de Firefox y establecer la opción xpinstall.signatures.required en false en la página about:config. El paquete se puede instalar arrastrando y soltando el archivo .xpi sobre la ventana del navegador. El contenido de un paquete .xpi se puede examinar cambiando la extensión del archivo a .zip y descomprimiéndolo con cualquier herramienta de archivado.
Seguridad y protección
RIESGO: MEDIUMUn XPI instala código que se ejecuta dentro de su navegador con los permisos que solicita; una extensión maliciosa puede leer páginas, capturar datos de formularios o secuestrar la navegación. Es exactamente por eso que Mozilla exige la firma: la versión estable de Firefox solo instala complementos que Mozilla ha revisado/firmado, lo que bloquea la mayoría del malware común. El riesgo aumenta cuando se omite la firma (ediciones Developer/Nightly, about:debugging) o se instala un .xpi desde fuera de AMO; hágalo solo para complementos en los que confíe y lea los permisos solicitados al instalar. Debido a que es un ZIP, puede inspeccionar el manifest.json (y su lista de «permissions») con 7-Zip antes de instalar. Los archivos .xpi inesperados en Descargas se pueden eliminar de forma segura; son instaladores desechables.
Detalles del formato
en pocas palabrasProgramas que abren archivos XPI
Detalles técnicos
especificación profunda| Tipo MIME | application/x-xpinstall |
| Formato de contenedor | Archivo ZIP; magic bytes 50 4B 03 04 («PK») en el desplazamiento 0, idéntico a un encabezado de archivo local ZIP estándar |
| Manifiesto interno moderno | manifest.json siguiendo la API WebExtension, introducida con Firefox 57 (Quantum) en 2017 |
| Manifiesto interno heredado | install.rdf (metadatos RDF) e install.js (script de instalación), utilizados por el sistema XPInstall anterior a WebExtension |
| Firma criptográfica | Directorio META-INF/ que contiene archivos de firma emitidos por Mozilla; requerido para todos los paquetes distribuidos a través de addons.mozilla.org |
| Requisito de firma | El canal estable de Firefox rechaza archivos .xpi no firmados; para permitir instalaciones no firmadas, use Developer Edition y establezca xpinstall.signatures.required=false en about:config |
| Tipos de contenido admitidos | Extensiones de navegador, temas, diccionarios, paquetes de idiomas y complementos de búsqueda |
| Compresión | deflate (compresión ZIP estándar); las entradas individuales también pueden almacenarse sin comprimir dentro del archivo |
| Compatibilidad entre navegadores | La API WebExtension se comparte con las extensiones .crx de Chrome y Edge; una extensión con manifest.json es ampliamente portable entre navegadores |
| Formato relacionado | .crx (extensión de Chromium/Chrome) utiliza un diseño basado en ZIP similar pero antepone un encabezado CRX propietario antes de los datos ZIP |
| Método de inspección | Cambie el nombre a .zip y ábralo con cualquier administrador de archivos (7-Zip, WinRAR, etc.) para examinar los archivos internos sin herramientas especiales |
| Aplicaciones anfitrionas | Mozilla Firefox (principal), Mozilla Thunderbird (complementos de correo), SeaMonkey |
| Canal de distribución | addons.mozilla.org (AMO): gestiona el alojamiento, la revisión y la firma de código de todos los paquetes distribuidos públicamente |
| Herramienta de construcción y empaquetado | web-ext CLI: utilidad de línea de comandos oficial de Mozilla para construir, analizar, ejecutar y firmar archivos .xpi |
| Soporte de plataforma | Multiplataforma: Windows, macOS, Linux; también Android a través de Firefox for Android (Fenix) |
| Lanzado | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | extensionworkshop.com |