Fizyczna budowa pakietu instalacyjnego

Zagłębiając się w budowę pakietu instalacyjnego opartego na technologii Windows Installera, możemy wyodrębnić dwie podstawowe kategorie: fizyczną oraz logiczną.

Z fizycznego punktu widzenia pakiet-msi jest "dokumentem złożonym" (tzw. "Compound Document"). Mówiąc krócej, pakiet-msi jest strukturą danych umieszczoną w jednym fizycznym pliku, składającym się z katalogów ("Storages") oraz plików ("Streams"). Struktura "dokumentu złożonego" została wprowadzona we wczesnych wersjach Microsoft Office i opiera się na mechaniźmie osadzania obiektów (OLE – Objekt Linking and Embedding). Każdy z "dokumentów złożonych" również pakiet-msi posiada tzw. "Summary Information String" opisujący jego właściwości. Głównym elementem identyfikujacym każdy "dokument złożony" jest jego wewnętrzny GUID przypisujący go do określonej kategorii, np. GUID dla kategorii "Word Document (97-2003)"  wygląda następująco – "{00020906-0000-0000-c000-000000000046}". Każdy z pakietów-msi jest tak zbudowany, że wszystkie informacje oraz zasoby potrzebne podczas instalacji mogą być umieszczone w jednym pliku. Informacje te są zapisane w tzw. obszarze danych pakietu-msi. Wyróżniamy tu m.in:  

  • Summary Information Streams – jest "sercem" każdego "dokumentu złożonego" i zawiera podstawowe informacje o nim. Informacje zapisane w "Summary Information Streams" pakietu-msi dotyczą m.in. minimalnej wersji Windows Installera, platformy sprzętowej na jakiej może być zainstalowany, języka instalacji, plików źródłowych instalacji, itp. Poniższy zrzut ekranu pokazuje przykładowy "Summary Information Stream" pakietu-msi.

Informacje zawarte w "Summary Information Stream"

Rys.2. Informacje zawarte w "Summary Information Streams"

"Summary Information Streams" zbudowany jest z wielu pól opisujących właściwości pakietu-msi, do których należą m.in:

"Titel" – nazwa pakietu

"Author" – autor pakietu

"Subject" – informacje o wersji produktu

"Comments" – komentarz

"Keywords" – słowa klucze wykorzystywane przy wyszukiwaniu plików należących do określonej kategorii w Windows Explorerze

"Platform" – platforma sprzętowa (np, Intel, Intel64, AMD64, x64")

"Languages" – język pakietu

"Package Code" – numer identyfikacyjny pakietu (GUID)

"Schema" – minimalna wersja Windows Installera jaka może być użyta do instalacji (200 – oznacza wersję 2.0)

"Security" – zabezpieczenie pakietu ("No restricton" – bez ograniczeń, "Read-only recommendet" – zalecany tylko do odczytu". "Read-only enforced – egzekowany tylko do odczytu")

"File names" – rodzaje obsługiwanych nazw plików ("Short_File Names" – krótkie nazwy, "Long_File Names" – długie nazwy)

"Compressed by Default" – plik standardowo skompresowany

"Administrative Image" – instalowany z udziału administracyjnego

"UAC Compliant" – wsparcie dla UAC (User Account Control) podczas instalacji.

Po uruchomienia procesu instalacji informacje zawarte w "Summary Informaion Streams", są wykorzystywane przez sewis Windows Installera do stwierdzenia, czy dany pakiet może być zainstalowany w systemie i czy platforma sprzętowa, na której jest instalowany jest przez niego wspierana. W przypadku niespełnieniea jednego z warunków instalacja jest przerywana. Jeśli oba warunki zostaną spełnione, wykonywane są kolejne kroki.  

  • Baza danych (Windows Installer Database) – baza danych pakietu-msi ma charakter relacyjny i zawiera informacje o zasobach wchodzących w skład instalacji, interfejsie użytkownika i akcjach wykonywanych podczas instalacji. Identycznie jak w relacyjnych bazach danych tabele są powiązane ze sobą przy pomocy kluczy. Każda z tabel posiada klucz główny ("primary key") oraz klucze obce ("foreign keys") wskazujące na inne tabele. Klucz obcy można poznać w tabeli (patrz Rys.3.) po tym, że w jego nazwie na samym końcu występuje podkreślnik. Wewnętrzna budowa tabel jest ściśle powiązana ze strukturą "dokumentu złożonego". Każda tabela w bazie danych pakietu-msi jest wskazywana przez obiekt typu "Storage". Każdy z tych obiektów zawiera kilka oddzielnych obiektów typu "Streams", które z kolei zaiwerają definicje tabel, w których zapisane są informacje o kolumnach, rodzaju danych oraz wielkości pola rekordu.

Relacje pomiędzy tabelami w pakiecie-msi

Rys.3. Relacje pomiędzy tabelami w bazie danych pakietu-msi (na przykładzie tabeli "Feature")

  • Zasoby (Resources) – głównym zadaniem pakietu-msi jest instalacja plików w systemie. Windows Installer udostępnia kilka możliwości integracji zasobów w pakiecie-msi. Pliki źródłowe instalacji mogą występować w postaci skompresowanej lub nie (również w obu). 

nieskompresowane źródła instalacyjne (non-compressed sources) –  źródła w postaci nieskopresowanej (dozwolone długie jak i krótkie nazwy plików). Pakiet-msi umieszczany jest zawsze razem z plikami źródłowymi tworzącymi drzewo katalogów. Przy tego typu instalacjach, zalecane jest usunięcie atrybutu "skopresowanych domyślnie" ("compressed by default") we właściwościach "Summary Information Streams" lub ustawienie odpowiednich atrybutów plików w tabeli "File".

– skompresowane źródła instalacyjne (compressed sources) –  źródła w postaci skopresowanej, umieszczone w zewnętrznych plikach .cab lub wbudowanych w pakiet-msi (zapisane w tabeli "_Stream"). Zewnętrzne pliki .cab powinny znajdować się w głównym katalogu instalacyjnym określonym w tabeli "Dicectory" i posiadać wpisy w tabeli "Media" bazy danych pakietu-msi. Przy tego typu instalacjach zalecane jest ustawienie "skopresowanych domyślnie" ("compressed by default") we właściwościach "Summary Information Streams" lub ustawienie odpowiednich atrybutów plików w tabeli "File".

mieszane żródła instalacyjne (mixed sources) –  źródła w postaci skopresowanej lub nieskopresowanej. Przy ustawieniu atrybutu "skopresowanych domyślnie" we właściwościach "Summary Information Streams" należy dla każdego pliku w postaci nieskopresowanej ustawić odpowiedni atrybut w tabeli "File".

Skompresowane pliki instalacyjne (.cab), mają również swoje ograniczenia sprecyzowane w dokumetacji Windows Installera. Są to m.in.

  • wielkośc jednego skompresowanego pliku .cab nie może przekraczać 2GB
  • maksymalna ilość plików znajdujących się w jednycm pliku .cab nie może przekraczać 65535

Programy  do tworzenia pakietów-msi (tzw. "Authoring Tools" – "Wise Package Studio", "InstallShield Admin Studio", itd. ) tworzą pliki .cab automatycznie. Istnieją również darmowe narzędzia przy pomocy których można "na piechotę" utworzyć pliki .cab. Są to m.in. "makecab.exe" znajdujący się w "Windows Installer-SDK" lub w "Microsoft Cabinet Software Development Kit".

Skompresowane źródła instalacyjne w postaci plików mają swoje odzwierciedlenie w tabeli "File". W skład tabeli "File" wchodzi m.in. kolumna "Sequence", która jest ściśle powiązana z tabelą "Media", w której jak już wspomniano wcześniej zapisywane są informacje o źródłowych plikach instalacyjnych. Kolumna "Sequence" tabeli "File" określa w jakiej kolejności instalowane są pliki. Natomiast kolumna "LastSequence" w tabeli "Media" wskazuje na ilość plików umieszczonych w jednym pliku .cab. Przykładowo liczba 50 oznacza, że w pliku .cab znajduje się 50 plików, które w tabeli "File" mają numery sekwencyjne od 1 do 50. 

Zależności pomiędzy tabelami ?File? i ?Media?

Rys.4. Zależności pomiędzy tabelami "File" i "Media"

W powyższym przykładzie pliki "File1" i "File2" o numerach sekwencyjnych "1" i "6"  należą do zewnętrznych plików "Data1.cab" i "Data2.cab" umieszczonych na "Disk1". Plik "File3" występuje tu w postaci nieskompresowanej i jest umieszczony na "Disk2".

Be Sociable, Share!
  • avatar
    You may use these HTML tags: <a> <abbr> <acronym> <b> <blockquote> <cite> <code> <del> <em> <i> <q> <s> <strike> <strong>

  • Comment Feed for this Post
Go to Top