Rodzaje instalacji
Nad prawidłowym przetworzeniem informacji zanjdujących się w pakiecie-msi czuwa serwis Windows Installera, identyfikowany w systemie jako "msiserver" i reprezentowany przez plik "msiexec.exe". Serwis Windows Installera nie jest uruchamiany automatycznie przy starcie systemu, lecz może być zainicjowany przez jedną z poniższych metod:
- poprzez podwójne klikniecie na pliku-msi lub pliku-msp. Oba rozszerzenia sa powiązane z serwisem Windows Installera.
- użycie komend linii poleceń
- zastoswanie funkcji zawartych w Windows Installer API
- zastosowanie oprogramowania do Software Deploymentu, np. Microsoft System Configuration Manager (SCCM)
- użyciu zasad grup zawartych w Active Directory (AD)
- użyciu apletu "Dodaj/Usuń Programy"
- użyciu innych dostępnych technologii wykorzystujących Windows Installer
Bez względu na to jaka technologia została użyta do uruchomienia procesu instalacji pakietu, zawsze na początku analizowane są informacje zawarte w "Summary Information Streams". Sprawdzane jest czy dany pakiet jest przewidziany dla aktualnej architektury systemu. Na końcu pakiet zapisywany jest w pamięci operacyjnej systemu, tak aby serwis Windows Installera miał łatwiejszy dostęp do informacji zawartych w bazie danych pakietu. Następnie analizowane są parametry z jakimi została wywołana procedura instalacyjna pakietu oraz sprawdzane jest, czy pakiet znajduje sie już w systemie. Na podstawie zebranych informacji budowany jest "obraz" typu instalacji, do którego można zaliczyć:
Instalacja kliencka (Client installation)
Jest najczęściej używanym rodzajem instalacji. Tryb konserwacyjny ("Maitenance Mode") będący częścią instalacji klienckiej, pozwala na wykonanie aktualizacji, deinstalacji lub naprawy produktu. Instalacja kliencka jest identyfikowana w logu instalacyjnym poprzez wpis "ACTION = INSTALL" (wycinek logu poniżej) i wywoływana jest przez użycie przełącznika "/i" lub "/package", gdzie dodatkowo wymagane jest podanie ścieżki dostępu do do pliku .msi.
…
Property(C): UILevel = 5
Property(C): ACTION = INSTALL
Property(C): EXECUTEACTION = INSTALL
…
Podwójne kliknięcie na pliku .msi uruchamia automatycznie proces instalacji bez podawania dodatkowych parametrów.
msiexec /i <plik.msi>
msiexec /package <plik.msi>
Oprócz wymienionych powyżej przełączników istnieją dodatkowe, wpływające na wyświetlanie graficznego interfejsu użytkownika. Windows Installer wspiera cztery poziomy wyświetlania graficznego interfejsu użytkownika. Są to:
- ukryty (None) - instalacja bez graficznego interfejsu użytkownika (tzw. "cicha" – silent installation)
- podstawowy (Basic) – podczas instalacji wyświetlany jest tylko pasek postępu i napotkane błędy instalacji. Używany jest standardowy graficzny interfejs użytkownika pobierany z biblioteki "msi.dll".
- zredukowany (Reduced) – przy tego rodzaju instalacji wykorzystywane są tylko niemodalne okienka pobierane bezpośrednio z pakietu-msi.
- pełny (Full) – podczas instalacji wyświelane jest pełny graficzny interfejs użytkownika oraz pasek postępu.
Poniższa tabela zawiera możliwe kombinacje przełączników, które mogą być wykorzystane przy prezentacji graficznego interfejsu użytkownika.
Argument Opis
/q lub /qn lub /quiet Instalacja w trybie "cichym" (bez GUI-użytkownika)
/qn+ Wyświetla tylko okienko dialogowe informujące o prawidłowo zakończonej instalacji
/qb Podczas instalacji wykorzystuje standardowe GUI-użytkownika pobierane z biblioteki "msi.dll"
/qb! Podczas instalacji wykorzystuje standardowe GUI-użytkownika pobierane z biblioteki "msi.dll", dodatkowo ukrywa przycisk "Cancel"
/qb+ Podczas instalacji wykorzystuje standardowe GUI-użytkownika pobierane z biblioteki "msi.dll". Na końcu wyświetla okienko dialogowe informujące o poprawnie przeprowadzonej instalacji. W przypadku przerwanej przez użytkownika instalacji (naciśnięcie przycisku "Cancel") końcowe okienko dialogowe nie jest wyświetlane. Do deaktywacji przycisku "Cancel" można użyć przełącznika "/qb+!"
/qb- Podczas instalacji wykorzystuje standardowe GUI użytkownika (bez okienek modalnych). Oznacza to, że wyświetlane jest tylko okienko z paskiem postępu instalacji. W przypadku wystąpienia błędu nie jest wyświetlane żadne okienko dialogowe, całość jest zapisywana do logu instalacyjnego (jeśli jest włączony - przełącznik "/lv*"). Do deaktywacji przycisku "Cancel" można użyć przełącznika "/qb-!"
/qr Podczas instalacji wykorzystuje zredukowane GUI-użytkownika. Brak okienka dialogowego wyświetlanego na końcu instalacji
/qf lub bez przełącznika Podczas instalacji wykorzystywany jest pełny GUI-użytkownika
Tabela 2. Argumenty do prezentacji graficznego interfejsu użytkownika
Tryb konserwacyjny (Maintenance Mode)
Tryb ten jest uzupełnieniem instalacji klienckiej (Client installation) i pozwala na dokonanie zmian na już istniejącej instalacji lub jego częściowej lub całkowitej deinstalacji. Możemy tu m.in.
- doinstalować lub odinstalować poszczególne elementy produktu (tzw. "ficzery")
- uruchomić proces reperacji pakietu, w przypadku nieprawidłowego funkcjonowania produktu
- całkowicie odinstalować produkt
W przypadku gdy, zostanie uruchomiony instalator produktu już istniejącego w systemie wygenerowane zostanie okienko trybu konserwacyjnego pozwalające na zmodyfikowanie (Modify), reperacje (Repair) lub deinstalacje (Remove) produktu.
Rys.7. Tryb konserwacyjny ("Maintenance Mode") w Microsoft Office 2003
Możliwe jest tutaj również automatyczne wystartowanie procesu reperacji lub reinstalacji pakietu, przy użyciu poniższej komendy.
msiexec /f [opcje_reperacji_pakietu] <plik.msi> lub <GUID_produktu>
Reperacja pakietu może być również uruchomiona poprzez aplet "Dodaj\Usuń Programy" (Add/Remove Programs) i kliknięcie przycisku "Napraw" (Repair). W tym wypadku reperacja jest wykonywana ze standardowo ustawionymi przełącznikami "ocmusv". Odzwierciedlenie całego procesu naprawczego możemy prześledzić w logu instalacyjnym, gdzie zapisywane są informacje o jego przebiegu (przykład poniżej).
…
MSI (s) (40:80) [12:11:48:819]: Command Line: REINSTALL=ALL REINSTALLMODE=vomus CURRENTDIRECTORY=c:\ CLIENTUILEVEL=2 CLIENTPROCESSID=544
…
Wpis "REINSTALL=ALL" informuje serwis Windows Installera, o konieczności sprawdzenia poprawności wszystkich "ficzerów" wbudowanych w pakiet-msi. Jako argument można też podać nazwy "ficzerów", które mają być poddane kontroli. Należy tu dodać, że proces reperacji i reinstalacji pakietu wykonywany jest wyłącznie na warstwie "ficzerów". "REINSTALLMODE=vomus" instruuje z kolei serwis Windows Installera jakie czynności naprawcze mają być wykonane podczas reperacji lub reinstalacji pakietu. Znaczenie poszczególnch przełączników zostało zaprezentowane w poniższej tabeli.
Argument Opis
p Re-instlacja brakującego pliku
o Re-instalacja, w przypadku brakującego pliku lub mającego starszą wersję od instalowanej
e Re-instalacja, w przypadku brakującego pliku lub mającego starszą lub tą samą wersję z instalowanym
d Re-instalacja, w przypadku brakującego pliku lub mającego inną wersję od instalowanej
c Re-instalacja, w przypadku brakującego pliku lub którego suma kontrolna ("Checksum") nie pokrywa się z wyliczoną podczas instalacji. Dotyczy to tylko plików, przy których został ustawiony atrybut "msidbFileAttributesChecksum" w tabeli "File"
a Re-instalacja wszystkich plików bez brania pod uwagę wersji oraz sumy kontrolnej
u Re-instalacja wszystkich wpisów rejestru powiązanych z użytkownikiem i znajdujących się w gałęziach "HKEY_CURRENT_USER" i "HKEY_USERS"
m Re-instalacja wszystkich wpisów rejestru powiązanych z maszyną i znajdujących się w gałęziach "HKEY_LOCAL_MACHINE" i "HKEY_CLASSES_ROOT"
s Re-instalacja wszyskich skrótów w menu "Start"
v Wymuszenie ponownej instalacji z pliku źródłowego i aktualizacja pliku-msi zapisanego w "Cache" (%WinDir%\Installer)
Tabela 3. Argumenty używane przy reperacji/reinstalacji pakietu
Instalacja administracyjna (Administrative Installation)
Podczas instalacji administracyjnej tworzony jest katalog dystrybucyjny, do którego są kopiowane wszystkie pliki wymagane podczas instalacji. Z tak utworzonego punktu dystrybucyjnego można uruchomić instalację kliencką (Client Installation). Podczas instalacji administracyjnej zmieniane są niektóre właściwości ("PROPERTIES") pakietu. W trakcie tego procesu skompresowane pliki źródłowe, są wypakowywane do katalogu dystrybucyjnego. Instalacja administracyjna jest wywoływana przy użyciu argumentu "/a"
msiexec /a <plik.msi> TARGETDIR=<katalog_docelowy>
Uruchomienie instalacji administracyjnej w trybie cichym (przełącznik – "/qb") i nie podanie katalogu docelowego ("TARGETDIR") spowoduje to, że całość zostanie wypakowana na partycji posiadającej największy dostepny obszar wolnej przestrzeni dyskowej. Instalacja administracyjna jest identyfikowana w logu instalacyjnym poprzez wpis "ACTION = ADMIN" (wycinek logu poniżej).
…
Property(C): ProductState = -1
Property(C): ACTION = ADMIN
Property(C): CURRENTDIRECTORY = c:\
…
Instalacja zaanonsowana (Announced Installation)
Instalacja ta pozwala na zaanonsowanie programu bez jego fizycznej instalacji na dysku. Do zaanonsowania programu jest używany przełącznik "/j", do którego dodawane są dodatkowe parametry w zależności od kontekstu w jakim jest instalowany.
msiexec /ju <plik.msi>
msiexec /jm <plik.msi>
Instalacja może być uruchomiona w kontekście aktualnie zalogowanego użytkownika – parametr "u" (User) lub maszyny "m" (Machine). Instalacja zaanonsowana jest identyfikowana w logu instalacyjnym poprzez wpis "ACTION =ADVERTISE" (wycinek logu poniżej).
…
Property(S): CLIENTPROCESSID = 1312
Property(S): ACTION = ADVERTISE
Property(S): VersionDatabase = 200
…
Deinstalacja (Uninstallation)
Deinstalacja produktu jest wywoływana przez użycie argumentu "/x" lub "/uninstall" i wskazanie źródła instalacji lub GUID-u ("ProductCode") produktu.
msiexec /x <plik.msi> lub <GUID_produktu>
msiexec /uninstall <plik.msi> lub <GUID_produktu>
Deinstalacja jest identyfikowana w logu instalacyjnym poprzez wpis "CommandLine: REMOVE=ALL" (wycinek logu poniżej).
…
MSI (s) (90:14) [14:08:07:595]: Command Line: REMOVE=ALL CURRENTDIRECTORY=c:\ CLIENTUILEVEL=2 CLIENTPROCESSID=332
…


