Windows Installer

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Windows Installer
Instalator
Producent Microsoft
System operacyjny Microsoft Windows
Aktualna wersja stabilna 5.0
Licencja własnościowa

Windows Installer (ang. Instalator Windows – uprzednio znany jako Microsoft Installer)[1] – program służący do instalacji, konserwacji i usuwania programów na nowszych systemach Microsoft Windows. Informacje instalacji i często same pliki są umieszczane w pakietach instalacyjnych, luźnych relacyjnych bazach danych o strukturze OLE Structured Storage Files, częściej znanych jako "pliki MSI", od ich domyślnego rozszerzenia. Windows Installer niesie ze sobą znaczące zmiany od swojego poprzednika, Setup API. Nowe funkcje to framework GUI oraz automatyczne generowanie sekwencji deinstalacji. Windows Installer jest alternatywą dla frameworków instalacyjnych opierających się na pojedynczym pliku wykonywalnym, takim jak starsze wersje InstallShield i Wise (późniejsze wersje tych produktów oparte są o Windows Installer) i NSIS.

Microsoft zachęca firmy do używania Windows Installer jako podstawy ich szkieletów instalacyjnych, tak żeby mogły poprawnie synchronizować się z innymi instalatorami i utrzymywać wewnętrzną bazę zainstalowanych produktów spójną. Ważne funkcje, jak wycofywanie zmian i wersjonowanie zależą od spójności wewnętrznej bazy.

Logiczna struktura pakietów[edytuj | edytuj kod]

Pakiet opisuje instalację jednego lub więcej pełnych produktów (Windows Installer nie zarządza zależnościami między produktami) i jest opisywany przez GUID (własność PackageCode). Produkt jest złożony z komponentów, pogrupowanych w funkcje.

Produkty[edytuj | edytuj kod]

Pojedynczy, zainstalowany, działający program (lub zestaw programów) jest produktem. Produkt jest identyfikowany przez unikatowy GUID. Produkt nie jest tym samym czym pakiet – jeden pakiet MSI może instalować więcej różnych produktów. Na przykład MSI może instalować wersję polską i angielską tego samego programu, z których każda jest innym programem.

Komponenty[edytuj | edytuj kod]

Komponent to najmniejsza część produktu – każdy komponent jest traktowany przez Windows Installer jako jednostka – twórca pakietu nie może, na przykład, pod pewnym warunkiem określić instalację tylko części pakietu. Komponenty mogą zawierać pliki, katalogi, komponenty COM, klucze rejestru Windows, skróty i inne dane. Użytkownik końcowy nie oddziałuje bezpośrednio z komponentami.

Komponenty są identyfikowane globalnie przez identyfikatory GUID, także ten sam komponent może być współdzielony przez różne funkcje tego samego pakietu lub większej ilości pakietów, najlepiej przez użycie Merge Module(and. moduł łączenia), jednak aby to działało różne komponenty nie powinny współdzielić żadnych podkomponentów).

Ścieżka kluczowa[edytuj | edytuj kod]

Ścieżka kluczowa to określony plik, klucz rejestru lub źródło ODBC które autor pakietu określa jako krytyczny dla danego komponentu. Ponieważ plik jest najczęstszym typem ścieżki kluczowej, często wykorzystuje się termin plik kluczowy. Komponent może zawierać najwięcej jedną ścieżkę kluczową, jeśli komponent takowej nie posiada, to za ścieżkę kluczową przyjmowany jest katalog docelowy komponentu. Kiedy aplikacja oparta na MSI jest uruchamiana, Windows Installer sprawdza istnienie tych krytycznych plików lub ścieżek rejestru (kluczowych ścieżek). Jeśli jest różnica między aktualnym stanem systemu i wartością określoną w pakiecie MSI (np. któryś z plików kluczowych zaginął), żądana funkcja jest przeinstalowywana. Ten proces znany jest także jako samonaprawa lub samoleczenie. Dwa komponenty nie powinny korzystać z tych samych ścieżek kluczowych.

Funkcje[edytuj | edytuj kod]

Funkcja to hierarchiczna grupa komponentów – funkcja może zawierać dowolną liczbę komponentów i innych funkcji (podfunkcji). Wiele pakietów oprogramowania zawiera tylko jedną funkcję. Bardziej złożone programy instalacyjne zwykle wyświetlają opcję instalacja użytkownika aby dokładnie określić jakie funkcje mają być zainstalowane lub usunięte.

Autor pakietu definiuje funkcje pakietu. Edytor tekstu może, na przykład, posiadać funkcje dla głównego programu, pliki pomocy i program do sprawdzania pisowni.

Fazy instalacji[edytuj | edytuj kod]

Interfejs użytkownika[edytuj | edytuj kod]

Interfejs użytkownika zwykle sprawdza system na którym program ma być instalowany i umożliwia użytkownikowi zmianę różnych opcji które wpłyną na instalację.

Zwykle jednak interfejs użytkownika nie powinien czynić żadnych zmian. Powody mogą być takie:

  1. Użytkownik chce zainstalować pakiet MSI w trybie cichym, pomijając tę fazę całkowicie, przez uruchomienie programu msiexec.exe z przełącznikiem /qn i określając wszystkie informacje które instalator by normalnie zbierał w linii poleceń.
  2. Podobnie, klikając przycisk Usuń w panelu sterowania uruchamia deinstalator programu z podstawowym interfejsem użytkownika. W tym przypadku akcje określone w intefejsie użytkownika nie zostaną wykonane.
  3. Akcje które czynią zmiany w systemie nie powinny być planowane w interfejsie użytkownika, gdyż ten uruchamia się z uprawnieniami użytkownika(bez uprawnień podwyższonych).

Akcje w interfejsie użytkownika w sekwencji zwykłej instalacji są określone w tabeli InstallUISequence. Podobnie, jest też struktura AdminUISequence w której można umieścić okna dialogowe i akcje do wyświetlenia i wykonania z kreatora administracyjnego.

Wykonanie[edytuj | edytuj kod]

Kiedy użytkownik kliknie guzik Zakończ lub Instaluj w typowym kreatorze instalacji, instalacja wchodzi w etap wykonania, w której komponenty oprogramowania są właściwie instalowane. Faza wykonania czyni zmiany systemowe, ale nie wyświetla żadnych elementów interfejsu użytkownika.

Faza wykonania ma miejsce w dwóch etapach.

Tryb bezpośredni. W tym etapie Windows Installer otrzymuje instrukcje, od użytkownika lub aplikacji, aby instalować lub odinstalować funkcje produktu. Te żądania powodują wykonanie sekwencji akcji, które zapytują bazę danych instalacji, by ta stworzyła wewnętrzny skrypt, szczegółowo opisujący fazę wykonania.

Tryb opóźniony. W tym etapie skrypt utworzony w trybie bezpośrednim jest wykonywany w kontekście uprzywilejowanej usługi Instalator Windows(dokładnie konto LocalSystem). Skrypt musi być wykonany przez uprzywilejowane konto ze względu na różnorodność środowisk w których rozpoczyna się operacja instalacji, na przykład wyższe uprawnienia są niezbędne do obsługi żądań instalacji od nieuprzywilejowanych użytkowników.

Sekwencje akcji dla normalnej instalacji są przechowywane w tabeli InstallExecuteSequence. Baza danych MSI może także zawierać tabele AdminExecuteSequence i AdvtExecuteSequence aby zdefiniować akcje do wykonania podczas instalacji w trybie administracyjnym lub instalacji typu "zainstaluj przy pierwszym użyciu" (ang. advertised installation).

Wycofywanie zmian[edytuj | edytuj kod]

Operacje instalacji są operacjami transakcyjnymi[2]. Dla każdej operacji wykonywanej przez Windows Installer generowana jest operacja która odwraca zmiany tej operacji. W razie gdyby jakiś skrypt akcji popełnił błąd lub operacja została anulowana przez użytkownika, operacje wykonywane do tego czasu są odwracane, przywracając system do jego poprzedniego stanu. Standardowe akcje Windows Install automatycznie zapisują te informacje do skryptu wycofywania zmian, autorzy pakietów którzy tworzą własne akcje które zmieniają system także tworzą odpowiednie akcje wycofywania. Ten mechanizm może prowadzić do zaskakującej sytuacji, w której niepoprawna deinstalacja prowadzi do efektywnego przeinstalowania aplikacji.

Przypisy

Linki zewnętrzne[edytuj | edytuj kod]