O que é o formato de ficheiro XPI?
O arquivo com a extensão .xpi contém um arquivo de dados para a instalação de software Mozilla adicional. O pacote de instalação é um arquivo ZIP comprimido usando o método deflate - ele compartilha os mesmos magic bytes PK (50 4B 03 04) de um arquivo ZIP padrão. O nome da extensão .xpi é uma abreviação de Cross-Platform Install - XPInstall, que era o nome da tecnologia usada no processo de instalação original.
Os pacotes .xpi são usados para instalar e estender a funcionalidade de aplicativos como:
- Firefox,
- SeaMonkey,
- Thunderbird.
Os arquivos de pacote .xpi podem conter plugins, extensões, temas ou dicionários. O arquivo também armazena metadados de instalação. No formato legado XPInstall, isso significava um arquivo de script install.js e um arquivo de manifesto install.rdf; os pacotes WebExtension modernos (introduzidos com o Firefox 57 em 2017) usam manifest.json junto com JavaScript, HTML, CSS e recursos de ícones. O formato está intimamente relacionado aos arquivos JAR - ambos são contêineres ZIP com um layout interno específico.
Arquivos .xpi assinados distribuídos através do addons.mozilla.org carregam um diretório META-INF/ contendo uma assinatura criptográfica da Mozilla. As instalações padrão do Firefox aceitam apenas arquivos .xpi assinados digitalmente pela Mozilla. Para instalar pacotes de terceiros não certificados pela Mozilla, os usuários devem usar uma edição Developer do Firefox e definir a opção xpinstall.signatures.required como false na página about:config. O pacote pode ser instalado arrastando e soltando o arquivo .xpi na janela do navegador. O conteúdo de um pacote .xpi pode ser visualizado alterando a extensão do arquivo para .zip e descompactando-o com qualquer ferramenta de arquivamento.
Segurança e proteção
RISCO: MEDIUMUm XPI instala código que roda dentro do seu navegador com as permissões que solicita - uma extensão maliciosa pode ler páginas, capturar dados de formulários ou sequestrar a navegação. É exatamente por isso que a Mozilla exige a assinatura: o Firefox estável instala apenas extensões que a Mozilla revisou/assinou, o que bloqueia a maioria dos malwares comuns. O risco aumenta quando você ignora a assinatura (edições Developer/Nightly, about:debugging) ou instala um .xpi de fora do AMO - faça isso apenas para extensões em que confia e leia as permissões solicitadas na instalação. Como é um ZIP, você pode inspecionar o manifest.json (e sua lista de 'permissions') com o 7-Zip antes de instalar. Arquivos .xpi inesperados na pasta Downloads podem ser excluídos com segurança; são instaladores descartáveis.
Detalhes do formato
em resumoProgramas que abrem arquivos XPI
Detalhes técnicos
especificação profunda| Tipo MIME | application/x-xpinstall |
| Formato de contêiner | Arquivo ZIP; magic bytes 50 4B 03 04 («PK») no deslocamento 0, idêntico a um cabeçalho de arquivo local ZIP padrão |
| Manifesto interno moderno | manifest.json seguindo a API WebExtension, introduzida com o Firefox 57 (Quantum) em 2017 |
| Manifesto interno legado | install.rdf (metadados RDF) e install.js (script de instalação), usados pelo sistema XPInstall pré-WebExtension |
| Assinatura criptográfica | Diretório META-INF/ contendo arquivos de assinatura emitidos pela Mozilla; obrigatório para todos os pacotes distribuídos via addons.mozilla.org |
| Requisito de assinatura | O Firefox do canal estável rejeita arquivos .xpi não assinados; para permitir instalações não assinadas, use o Developer Edition e defina xpinstall.signatures.required=false no about:config |
| Tipos de conteúdo suportados | Extensões de navegador, temas, dicionários, pacotes de idiomas e plugins de pesquisa |
| Compressão | deflate (compressão ZIP padrão); entradas individuais também podem ser armazenadas sem compressão dentro do arquivo |
| Compatibilidade entre navegadores | A API WebExtension é compartilhada com extensões .crx do Chrome e Edge; uma extensão com manifest.json é amplamente portátil entre navegadores |
| Formato relacionado | .crx (extensão Chromium/Chrome) usa um layout baseado em ZIP semelhante, mas precede os dados ZIP com um cabeçalho CRX proprietário |
| Método de inspeção | Renomeie para .zip e abra com qualquer gerenciador de arquivos (7-Zip, WinRAR, etc.) para navegar pelos arquivos internos sem ferramentas especiais |
| Aplicativos hospedeiros | Mozilla Firefox (principal), Mozilla Thunderbird (extensões de e-mail), SeaMonkey |
| Canal de distribuição | addons.mozilla.org (AMO) - gerencia hospedagem, revisão e assinatura de código de todos os pacotes distribuídos publicamente |
| Ferramenta de build e empacotamento | web-ext CLI - utilitário de linha de comando oficial da Mozilla para construir, analisar, executar e assinar arquivos .xpi |
| Suporte de plataforma | Multiplataforma: Windows, macOS, Linux; também Android via Firefox for Android (Fenix) |
| Lançado | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | extensionworkshop.com |