Co to jest format pliku XPI?
Plik z rozszerzeniem .xpi zawiera archiwum danych do instalacji dodatkowego oprogramowania Mozilla. Pakiet instalacyjny to archiwum ZIP skompresowane metodą deflate - posiada te same magiczne bajty PK (50 4B 03 04), co standardowy plik ZIP. Nazwa rozszerzenia .xpi to skrót od Cross-Platform Install - XPInstall, co było nazwą technologii używanej w oryginalnym procesie instalacji.
Pakiety .xpi są używane do instalowania i rozszerzania funkcjonalności aplikacji takich jak:
- Firefox,
- SeaMonkey,
- Thunderbird.
Pliki pakietów .xpi mogą zawierać wtyczki, rozszerzenia, motywy lub słowniki. Plik przechowuje również metadane instalacji. W starym formacie XPInstall oznaczało to plik skryptu install.js i plik manifestu install.rdf; nowoczesne pakiety WebExtension (wprowadzone wraz z Firefox 57 w 2017 roku) używają manifest.json wraz z zasobami JavaScript, HTML, CSS i ikonami. Format ten jest ściśle powiązany z archiwami JAR - oba są kontenerami ZIP o specyficznym układzie wewnętrznym.
Podpisane pliki .xpi dystrybuowane przez addons.mozilla.org zawierają katalog META-INF/ z podpisem kryptograficznym Mozilla. Standardowe instalacje Firefox akceptują tylko pliki .xpi podpisane cyfrowo przez Mozilla. Aby zainstalować pakiety stron trzecich niecertyfikowane przez Mozilla, użytkownicy muszą korzystać z wersji Developer Edition programu Firefox i ustawić opcję xpinstall.signatures.required na false na stronie about:config. Pakiet można zainstalować, przeciągając i upuszczając plik .xpi na okno przeglądarki. Zawartość pakietu .xpi można przeglądać, zmieniając rozszerzenie pliku na .zip i rozpakowując go dowolnym narzędziem do archiwizacji.
Bezpieczeństwo
RYZYKO: MEDIUMPlik XPI instaluje kod, który działa wewnątrz przeglądarki z uprawnieniami, o które prosi - złośliwe rozszerzenie może czytać strony, przechwytywać dane z formularzy lub przejmować sesje przeglądania. Właśnie dlatego Mozilla wymaga podpisywania: stabilny Firefox instaluje tylko dodatki, które Mozilla sprawdziła/podpisała, co blokuje większość typowego złośliwego oprogramowania. Ryzyko wzrasta, gdy omijasz podpisywanie (edycje Developer/Nightly, about:debugging) lub instalujesz .xpi spoza AMO - rób to tylko dla dodatków, którym ufasz, i czytaj żądane uprawnienia podczas instalacji. Ponieważ jest to ZIP, możesz sprawdzić manifest.json (i listę „permissions”) za pomocą 7-Zip przed instalacją. Nieoczekiwane pliki .xpi w folderze Pobrane można bezpiecznie usunąć; są to jednorazowe instalatory.
Szczegóły formatu
w pigułceProgramy otwierające pliki XPI
Szczegóły techniczne
specyfikacja| Typ MIME | application/x-xpinstall |
| Format kontenera | Archiwum ZIP; magiczne bajty 50 4B 03 04 („PK”) pod offsetem 0, identyczne ze standardowym nagłówkiem pliku lokalnego ZIP |
| Nowoczesny manifest wewnętrzny | manifest.json zgodny z WebExtension API, wprowadzony w Firefox 57 (Quantum) w 2017 roku |
| Stary manifest wewnętrzny | install.rdf (metadane RDF) i install.js (skrypt instalacyjny), używane przez system XPInstall sprzed WebExtension |
| Podpis kryptograficzny | Katalog META-INF/ zawierający pliki podpisów wydane przez Mozilla; wymagany dla wszystkich pakietów dystrybuowanych przez addons.mozilla.org |
| Wymóg podpisywania | Firefox z kanału stabilnego odrzuca niepodpisane pliki .xpi; aby zezwolić na niepodpisane instalacje, użyj Developer Edition i ustaw xpinstall.signatures.required=false w about:config |
| Obsługiwane typy treści | Rozszerzenia przeglądarki, motywy, słowniki, pakiety językowe i wtyczki wyszukiwania |
| Kompresja | deflate (standardowa kompresja ZIP); poszczególne wpisy mogą być również przechowywane bez kompresji wewnątrz archiwum |
| Kompatybilność między przeglądarkami | WebExtension API jest współdzielone z rozszerzeniami .crx dla Chrome i Edge; rozszerzenie z manifest.json jest w dużej mierze przenośne między przeglądarkami |
| Powiązany format | .crx (rozszerzenie Chromium/Chrome) używa podobnego układu opartego na ZIP, ale poprzedza dane ZIP własnym nagłówkiem CRX |
| Metoda inspekcji | Zmień nazwę na .zip i otwórz dowolnym menedżerem archiwów (7-Zip, WinRAR itp.), aby przeglądać pliki wewnętrzne bez specjalnych narzędzi |
| Aplikacje hostujące | Mozilla Firefox (główna), Mozilla Thunderbird (dodatki pocztowe), SeaMonkey |
| Kanał dystrybucji | addons.mozilla.org (AMO) - zajmuje się hostingiem, recenzowaniem i podpisywaniem kodu wszystkich publicznie dystrybuowanych pakietów |
| Narzędzie do budowania i pakowania | web-ext CLI - oficjalne narzędzie wiersza poleceń Mozilla do budowania, lintowania, uruchamiania i podpisywania plików .xpi |
| Obsługa platform | Wieloplatformowy: Windows, macOS, Linux; także Android przez Firefox for Android (Fenix) |
| Wydano | 1990s (Mozilla/Netscape XPInstall); modern WebExtension XPIs since Firefox 57 (2017) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | extensionworkshop.com |