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.

ArgumentOpis
/q lub /qn lub /quietInstalacja w trybie "cichym" (bez GUI-użytkownika)
/qn+Wyświetla tylko okienko dialogowe informujące o prawidłowo zakończonej instalacji
/qbPodczas 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-!"
/qrPodczas instalacji wykorzystuje zredukowane GUI-użytkownika. Brak okienka dialogowego wyświetlanego na końcu instalacji
/qf lub bez przełącznikaPodczas 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.

Tryb konserwacyjny

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.

ArgumentOpis
pRe-instlacja brakującego pliku
oRe-instalacja, w przypadku brakującego pliku lub mającego starszą wersję od instalowanej
eRe-instalacja, w przypadku brakującego pliku lub mającego starszą lub tą samą wersję z instalowanym
dRe-instalacja, w przypadku brakującego pliku lub mającego inną wersję od instalowanej
cRe-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"
aRe-instalacja wszystkich plików bez brania pod uwagę wersji oraz sumy kontrolnej
uRe-instalacja wszystkich wpisów rejestru powiązanych z użytkownikiem i znajdujących się w gałęziach "HKEY_CURRENT_USER" i "HKEY_USERS"
mRe-instalacja wszystkich wpisów rejestru powiązanych z maszyną i znajdujących się w gałęziach "HKEY_LOCAL_MACHINE" i "HKEY_CLASSES_ROOT"
sRe-instalacja wszyskich skrótów w menu "Start"
vWymuszenie 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 

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