Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Struktura paczki instalacyjnej

 

Aplikacje XULRunner, rozszerzenia oraz motywy dzielą wspólna strukturę katalogów, a w niektórych przypadkach ta sama paczka może być używana zarówno w samodzielnej aplikacji XULRunner jak i w rozszerzeniu aplikacji, które można instalować.

 

Podstawowa struktura paczki

Paczka może zawierać jakikolwiek z poniższych plików:

/install.rdfManifest instalacyjny rozszerzenia/motywu
/application.iniManifest inicjalizacji aplikacji
/components/*Komponenty oraz pliki XPT      (>=1.7)
/defaults/preferences/*.jsUstawienia domyślne            (>=1.7)
/plugins/*Wtyczki NPAPI                  (>=1.8)
/chrome.manifestManifest rejestracji Chrome    (>=1.8)
/chrome/icons/default/*Ikony okna                     (>=1.8)

Oczywiście rozszerzenie nie musi (i normalnie nie będzie) zawierać wszystkich powyższych katalogów. Motywy podlegają ograniczeniom ze względów bezpieczeństwa i standardowo zawierają tylko chrome.manifest rejestrujący dany motyw oraz plik JAR.

Podkatalogi zależne od platformy

W niektórych przypadkach rozszerzenia, lub aplikacje będą chciały dołączyć składniki binarne lub wtyczki dla wielu platform, lub tez autorzy motywów będą chcieli załączyć pliki JAR dla wielu platform. W celu rozwiązania pierwszego przypadku rozszerzenie / loader aplikacji zawiera specjalne podkatalogi przeznaczone dla plików zależnych od platformy (rozpoczynając od Toolkitu/Gecko 1.8, Firefox/Thunderbird 1.5). Ciąg określający platformę jest definiowany podczas budowania toolkitu i składa się z unikalnej kombinacji systemu operacyjnego, architektury procesora oraz kompilatora. Format tegoż ciągu wygląda następująco:

{OS_TARGET}_{TARGET_XPCOM_ABI}

Wszystkie pliki ładowane z głównego katalogu rozszerzenia są ładowane z podkatalogu

/platform/{platform string}

Jeśli istnieje. Dla przykładu, jeśli producent wtyczki chce ja udostępnić dla użytkownika systemów: Linux, Macintosh i Windows to powinien dostarczyć poniższe pliki:

/platform/Linux_x86-gcc3/plugins/libMyPlugin.so
/platform/WINNT_x86-msvc/plugins/MyPlugin.dll
/platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib

Ponieważ pliki XPT są niezależne od platformy, to wszystkie pliki z nimi związane powinny być za ogólnym katalogu komponentów:

/components/MyPlugin.xpt

Jeśli rozszerzenie nie posada żadnego kodu binarnego zależnego od platformy (tj. kod skryptu używający rejestrów Windows), to może ono również wykorzystywać identyfikator systemu operacyjnego jako podkatalog platformy:

/platform/WINNT/components/registerDoctype.js

W przypadku użycia plików JAR zależnych od platformy każdy katalog platformy powinien posiadać własny plik chrome.manifest:

chrome.manifest
chrome/mytheme-base.jar
platform/Darwin/chrome.manifest
platform/Darwin/chrome/mytheme-mac.jar
platform/WINNT/chrome.manifest
platform/WINNT/chrome/mytheme-win.jar

Załadunek rozszerzenia / aplikacji rozpoczyna się od katalogów bazowych, a następnie katalogów platformy aplikacji (wpierw /{OS_TARGET}/, potem /{OS_TARGET}_{TARGET_XPCOM_ABI}/). Jeśli zdefiniowano domyślne własności w poszczególnych katalogach, te ładowane później nadpisują załadowane wcześniej.

Pliki rozszerzeń zależne od aplikacji

Dodatkowo do plików rozszerzeń opisanych powyżej aplikacje mogą poszukiwać dodatkowych plików. Na przykład Firefox 1.5 lub nowszy poszuka wtyczek Sherlock w plikach:

/searchplugins/*.src

Firefox 2 oraz nowsze wersje automatycznie poszukają również Tworzenie wtyczek MozSearch oraz OpenSearch w plikach:

/searchplugins/*.xml

oraz słowniki Myspell w plikach:

/dictionaries/*.{aff|dic}

Oficjalne dokumentacje Toolkit API

 

Autorzy i etykiety dokumentu

 Autorzy tej strony: teoli, Bedi, Mgjbot, Ptak82
 Ostatnia aktualizacja: teoli,