Qu'est-ce que le format de fichier XPI ?
Le fichier avec l'extension .xpi contient une archive de données pour l'installation de logiciels Mozilla supplémentaires. Le paquet d'installation est une archive ZIP compressée à l'aide de la méthode deflate - il partage les mêmes magic bytes PK (50 4B 03 04) qu'un fichier ZIP standard. Le nom de l'extension .xpi est l'abréviation de Cross-Platform Install - XPInstall, qui était le nom de la technologie utilisée dans le processus d'installation original.
Les paquets .xpi sont utilisés pour installer et étendre les fonctionnalités d'applications telles que :
- Firefox,
- SeaMonkey,
- Thunderbird.
Les fichiers de paquet .xpi peuvent contenir des plugins, des extensions, des thèmes ou des dictionnaires. Le fichier stocke également des métadonnées d'installation. Dans l'ancien format XPInstall, cela signifiait un fichier de script install.js et un fichier manifeste install.rdf ; les paquets WebExtension modernes (introduits avec Firefox 57 en 2017) utilisent manifest.json aux côtés de fichiers JavaScript, HTML, CSS et d'icônes. Le format est étroitement lié aux archives JAR - les deux sont des conteneurs ZIP avec une structure interne spécifique.
Les fichiers .xpi signés distribués via addons.mozilla.org comportent un répertoire META-INF/ contenant une signature cryptographique Mozilla. Les installations standard de Firefox n'acceptent que les fichiers .xpi signés numériquement par Mozilla. Pour installer des paquets tiers non certifiés par Mozilla, les utilisateurs doivent utiliser une version Developer Edition de Firefox et définir l'option xpinstall.signatures.required sur false sur la page about:config. Le paquet peut être installé en faisant glisser et en déposant le fichier .xpi sur la fenêtre du navigateur. Le contenu d'un paquet .xpi peut être consulté en changeant l'extension du fichier en .zip et en le décompressant avec n'importe quel outil d'archivage.
Sécurité et sûreté
RISQUE : MEDIUMUn XPI installe du code qui s'exécute dans votre navigateur avec les permissions qu'il demande - une extension malveillante peut lire des pages, capturer des données de formulaires ou détourner la navigation. C'est précisément pourquoi Mozilla impose la signature : la version stable de Firefox n'installe que les modules que Mozilla a examinés/signés, ce qui bloque la plupart des logiciels malveillants courants. Le risque augmente lorsque vous contournez la signature (éditions Developer/Nightly, about:debugging) ou installez un .xpi en dehors d'AMO - ne le faites que pour les modules en qui vous avez confiance, et lisez les permissions demandées lors de l'installation. Comme il s'agit d'un ZIP, vous pouvez inspecter manifest.json (et sa liste de « permissions ») avec 7-Zip avant l'installation. Les fichiers .xpi inattendus dans les Téléchargements peuvent être supprimés sans risque ; ce sont des installateurs jetables.
Détails du format
en brefProgrammes qui ouvrent les fichiers XPI
Détails techniques
spécifications approfondies| Type MIME | application/x-xpinstall |
| Format de conteneur | Archive ZIP ; magic bytes 50 4B 03 04 (« PK ») à l'offset 0, identique à un en-tête de fichier local ZIP standard |
| Manifeste interne moderne | manifest.json suivant l'API WebExtension, introduit avec Firefox 57 (Quantum) en 2017 |
| Manifeste interne hérité | install.rdf (métadonnées RDF) et install.js (script d'installation), utilisés par l'ancien système XPInstall |
| Signature cryptographique | Répertoire META-INF/ contenant les fichiers de signature émis par Mozilla ; requis pour tous les paquets distribués via addons.mozilla.org |
| Exigence de signature | Le canal stable de Firefox rejette les fichiers .xpi non signés ; pour autoriser les installations non signées, utilisez Developer Edition et réglez xpinstall.signatures.required=false dans about:config |
| Types de contenu pris en charge | Extensions de navigateur, thèmes, dictionnaires, packs de langue et moteurs de recherche |
| Compression | deflate (compression ZIP standard) ; les entrées individuelles peuvent également être stockées sans compression dans l'archive |
| Compatibilité multi-navigateur | L'API WebExtension est partagée avec les extensions .crx de Chrome et Edge ; une extension manifest.json est largement portable entre les navigateurs |
| Format lié | .crx (extension Chromium/Chrome) utilise une structure ZIP similaire mais ajoute un en-tête propriétaire CRX avant les données ZIP |
| Méthode d'inspection | Renommer en .zip et ouvrir avec n'importe quel gestionnaire d'archives (7-Zip, WinRAR, etc.) pour parcourir les fichiers internes sans outils spéciaux |
| Applications hôtes | Mozilla Firefox (principal), Mozilla Thunderbird (modules de messagerie), SeaMonkey |
| Canal de distribution | addons.mozilla.org (AMO) - gère l'hébergement, la révision et la signature de code de tous les paquets distribués publiquement |
| Outil de construction et d'empaquetage | CLI web-ext - l'utilitaire officiel en ligne de commande de Mozilla pour construire, analyser, exécuter et signer des fichiers .xpi |
| Support plateforme | Multiplateforme : Windows, macOS, Linux ; également Android via Firefox for Android (Fenix) |
| Publié | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Standard ouvert | Oui · libre de droits |
| Spécification | extensionworkshop.com |