Wat is het XPI-bestandsformaat?
Bestanden met de extensie .xpi bevatten een gegevensarchief voor de installatie van aanvullende Mozilla-software. Het installatiepakket is een ZIP-archief gecomprimeerd met de deflate-methode - het deelt dezelfde PK magic bytes (50 4B 03 04) als een standaard ZIP-bestand. De extensienaam .xpi is een afkorting voor Cross-Platform Install - XPInstall, wat de naam was van de technologie die in het oorspronkelijke installatieproces werd gebruikt.
.xpi-pakketten worden gebruikt voor het installeren en uitbreiden van de functionaliteit van applicaties zoals:
- Firefox,
- SeaMonkey,
- Thunderbird.
.xpi-pakketbestanden kunnen plug-ins, extensies, thema's of woordenboeken bevatten. Het bestand slaat ook installatiemetadata op. In het verouderde XPInstall-formaat betekende dit een scriptbestand install.js en een manifestbestand install.rdf; moderne WebExtension-pakketten (geïntroduceerd met Firefox 57 in 2017) gebruiken manifest.json samen met JavaScript, HTML, CSS en pictogrammen. Het formaat is nauw verwant aan JAR-archieven - beide zijn ZIP-containers met een specifieke interne lay-out.
Ondertekende .xpi-bestanden die via addons.mozilla.org worden gedistribueerd, bevatten een META-INF/-map met een cryptografische handtekening van Mozilla. Standaard Firefox-installaties accepteren alleen .xpi-bestanden die digitaal zijn ondertekend door Mozilla. Om pakketten van derden te installeren die niet door Mozilla zijn gecertificeerd, moeten gebruikers een Developer Edition van Firefox gebruiken en de optie xpinstall.signatures.required op false zetten op de pagina about:config. Het pakket kan worden geïnstalleerd door het .xpi-bestand naar het browservenster te slepen. De inhoud van een .xpi-pakket kan worden bekeken door de extensie van het bestand te wijzigen in .zip en het uit te pakken met een archiefprogramma.
Beveiliging & veiligheid
RISICO: MEDIUMEen XPI installeert code die binnen uw browser wordt uitgevoerd met de machtigingen die het aanvraagt - een kwaadaardige extensie kan pagina's lezen, formuliergegevens onderscheppen of browsen kapen. Dat is precies waarom Mozilla ondertekening verplicht stelt: de reguliere Firefox installeert alleen add-ons die door Mozilla zijn beoordeeld/ondertekend, wat de meeste malware blokkeert. Het risico neemt toe wanneer u de ondertekening omzeilt (Developer/Nightly-edities, about:debugging) of een .xpi van buiten AMO installeert - doe dit alleen voor add-ons die u vertrouwt, en lees de gevraagde machtigingen bij installatie. Omdat het een ZIP is, kunt u manifest.json (en de lijst met 'permissions') inspecteren met 7-Zip voordat u installeert. Onverwachte .xpi-bestanden in Downloads kunnen veilig worden verwijderd; het zijn wegwerp-installatiebestanden.
Formaatdetails
in een notendopProgramma's die XPI-bestanden openen
Technische details
diepe specificaties| MIME-type | application/x-xpinstall |
| Containerformaat | ZIP-archief; magic bytes 50 4B 03 04 („PK”) op offset 0, identiek aan een standaard ZIP local file header |
| Modern intern manifest | manifest.json volgens de WebExtension API, geïntroduceerd met Firefox 57 (Quantum) in 2017 |
| Verouderd intern manifest | install.rdf (RDF-metadata) en install.js (installatiescript), gebruikt door het pre-WebExtension XPInstall-systeem |
| Cryptografische handtekening | META-INF/-map met door Mozilla uitgegeven handtekeningbestanden; vereist voor alle pakketten gedistribueerd via addons.mozilla.org |
| Ondertekeningsvereiste | Release-kanaal Firefox weigert niet-ondertekende .xpi-bestanden; om niet-ondertekende installaties toe te staan, gebruikt u Developer Edition en stelt u xpinstall.signatures.required=false in about:config |
| Ondersteunde inhoudstypen | Browserextensies, thema's, woordenboeken, taalpakketten en zoek-plug-ins |
| Compressie | deflate (standaard ZIP-compressie); individuele items kunnen ook ongecomprimeerd in het archief worden opgeslagen |
| Cross-browser compatibiliteit | WebExtension API wordt gedeeld met Chrome .crx en Edge-extensies; een manifest.json-extensie is grotendeels uitwisselbaar tussen browsers |
| Gerelateerd formaat | .crx (Chromium/Chrome-extensie) gebruikt een vergelijkbare op ZIP gebaseerde lay-out, maar voegt een eigen CRX-header toe vóór de ZIP-gegevens |
| Inspectiemethode | Hernoem naar .zip en open met een archiefbeheerder (7-Zip, WinRAR, etc.) om interne bestanden te bekijken zonder speciale tools |
| Host-applicaties | Mozilla Firefox (primair), Mozilla Thunderbird (e-mail-add-ons), SeaMonkey |
| Distributiekanaal | addons.mozilla.org (AMO) - verzorgt hosting, beoordeling en code-ondertekening van alle publiek gedistribueerde pakketten |
| Build- en verpakkingstool | web-ext CLI - Mozilla's officiële opdrachtregelprogramma voor het bouwen, linten, uitvoeren en ondertekenen van .xpi-bestanden |
| Platformondersteuning | Cross-platform: Windows, macOS, Linux; ook Android via Firefox for Android (Fenix) |
| Uitgebracht | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | extensionworkshop.com |