Instalacja w Windows 2000

W Windows 2000 zmieniono mechanizm instalowania aplikacji. Prezentujemy trzy narzędzia do tworzenia wersji instalacyjnych programów zgodne z nowym systemem Microsoftu.

W Windows 2000 zmieniono mechanizm instalowania aplikacji. Prezentujemy trzy narzędzia do tworzenia wersji instalacyjnych programów zgodne z nowym systemem Microsoftu.

Tradycyjne pakiety do tworzenia programów instalacyjnych samodzielnie wykonują wszystkie operacje niezbędne do zainstalowania aplikacji. Programista może skorzystać ze specjalnego języka skryptowego, by określić dokładny sposób instalowania własnego programu. W specyfikacji programów instalacyjnych na platformy Windows 95/98/NT 4.0 określono pewne klucze w rejestrze, które - jeśli zostały zainicjowane - przechowują informacje o zainstalowanych współdzielonych komponentach bądź położeniu programu odinstalowującego aplikację.

Jednak w wielu sytuacjach ten mechanizm Windows zawodzi. Po odinstalowaniu programu jest usuwana biblioteka DLL, którą może wykorzystywać inna aplikacja. Drugim, częstym problemem są kłopoty podczas instalowania programu, np. zanik zasilania czy zawieszenie się programu instalacyjnego. W takiej sytuacji zwykle nie tworzy się informacji o położeniu programu do odinstalowywania aplikacji. Zdarza się, że program jest częściowo wgrany na dysk, pewne zmiany w rejestrze zostały już wykonane, ale instalator nie zakończył pracy i aplikacja nie działa. Co więcej, po ponownym uruchomieniu, program instalacyjny informuje, że aplikacja jest już zainstalowana. Wtedy należy ręcznie usunąć pozostałości po nieudanej instalacji i ponowić próbę.

Instalacja w modułach

W Windows 2000 zmieniono mechanizm instalowania aplikacji. System operacyjny zarządza całym procesem wgrywania programu, pilnuje, aby instalator nie uszkodził ważnych plików, i - co najważniejsze - rejestruje zmiany wprowadzane w systemie. Nie jest możliwa sytuacja, by instalacji nie można było cofnąć - przed zmianą jakichkolwiek parametrów w systemie operacyjnym czynność jest rejestrowana w podobny sposób, jak transakcje w bazach danych.

Inną ważną cechą jest możliwość automatycznego "powtarzania instalacji". Dzięki temu, nawet po skasowaniu głównego pliku EXE, pomocniczych bibliotek czy większości kluczy z rejestru, można odtworzyć stan aplikacji. Program Windows Installer, będący częścią Windows 2000, wymaga, by instalacja była podzielona na wiele małych modułów, które mogą być niezależnie instalowane lub odinstalowywane. Nie muszą one fizycznie znajdować się na dysku. Wystarczy "poinformować" system, że do wykorzystania określonej funkcji jest konieczne wgranie określonego modułu. Użytkownik wybierze opcję z menu, bez jego ingerencji może uruchomić się instalator i odpowiedni moduł wzbogaci funkcje systemu.

W Windows Installer znacznie rozszerzono informację pomocniczą o instalowanej aplikacji. Można np. zajrzeć na stronę WWW producenta, uruchomić jednym kliknięciem uaktualnienie itp. Windows Installer zajmuje się bowiem tylko operacjami związanymi z instalacją, a nie np. obsługą interfejsu użytkownika. Te operacje muszą być wykonywane przy użyciu specjalnych modułów, implementujących ściśle zdefiniowane funkcje API.

Installer kontra skrypty

Istnieje zasadnicza różnica między nowym Windows Installer a instalacjami opartymi na skryptach (czy nawet półautomatycznych pakietach, jak Package & Deployment Wizard). W skrypcie jest określana kolejność wykonywania operacji. Każda z nich korzysta z wywołania określonych funkcji API. Autor skryptu musi więc założyć, że na komputerze docelowym istnieją takie warunki, że możliwe jest wykonanie konkretnych operacji. Używając mechanizmu Windows Installer, programista definiuje zbiór danych, czyli to, co ma być skopiowane/utworzone na docelowym komputerze (pliki, klucze rejestru, skróty itp.). Jest to tzw. model instalacji typu data-driven. Nie określa on sposobu instalowania. Jest to znacznie prostsze niż tworzenie skryptów, a co ważniejsze - bezpieczniejsze.

Zaletą Windows Installer jest to, że moduł MSI (przechowujący de facto instalację) może być np. przez administratora systemu edytowany/przekształcany. Trzeba pamiętać jednak, że niesie niebezpieczeństwo uszkodzenia instalacji!

Obecnie istnieją trzy warte uwagi pakiety, pozwalające tworzyć instalacje wykorzystujące Windows Installer.

Visual Studio Installer

To nakładka Microsoftu na Visual Studio (korzysta z tego samego IDE, co Visual J++ czy InterDev). Pozwala zarówno automatycznie utworzyć pakiet instalacyjny na podstawie projektu Visual Basic, jak i samodzielnie zbudować instalację, podając pliki do zainstalowania (program w ograniczonym zakresie wykrywa zależności między plikami).

Można definiować pliki Merge (.msm), które są specjalnymi pakietami przechowującymi wszystkie informacje potrzebne do zainstalowania jednego "współdzielonego" komponentu. Są one później wykorzystywane przy tworzeniu instalacji. Programista ma jednak ograniczone możliwości edycji okien dialogowych, jakie pojawiają się podczas instalowania produktu. Jedyną możliwością jest ustawianie pewnych właściwości, np. rysunek tła. Chcąc utworzyć polską wersję okien, należy skompilować odpowiednie pliki DLL z definicjami zasobów.

Licencjonowani użytkownicy Visual Studio mogą bezpłatnie pobrać pakiet z internetowej strony Microsoftu.

InstallShield for Windows Installer

Produkt firmy InstallShiel pozwala obejść pewne ograniczenia związane z instalacją mechanizmu data-driven. Oprócz wygodnego edytora do okien dialogowych, istnieje wersja zawierająca gotowe definicje okien w różnych językach (w tym polski, rosyjski, czeski).

Produkt, mimo że oparty na Windows Installer, ma pewne cechy związane z "tradycyjnymi" instalatorami skryptowymi. Programista może definiować ciąg operacji (kolejne operacje są połączone specjalnymi warunkami), które są wykonywane w odpowiedzi na określone zdarzenia, np. zamknięcie okna czy naciśnięcie przycisku. Przypomina to nieco programowanie w Delphi czy VB, gdzie program reaguje na systemowe zdarzenia.

W InstallShield łatwo można definiować własne operacje (jako skrypty w VBScript, JScript czy wręcz jako funkcje wbudowane w DLL czy EXE). Jedną z operacji jest zwykłe "zainstalowanie" aplikacji. Pozostałe pozwalają określać dokładnie, jakie pakiety mają być zainstalowane, pod jakimi warunkami, czy wręcz umożliwiają tworzenie oryginalnych programów instalacyjnych wyglądających inaczej niż standardowe kreatory instalacji. Pakiet nie ma dobrze opracowanej dokumentacji. Producent dodał natomiast prezentacje multimedialne i wiele kreatorów podpowiadających, jakie czynności należy w danym momencie wykonać. Brakuje jednak dokładnego opisu wszystkich funkcji.

InstallShield ma specyficzny język pozwalający tworzyć wyrażenia logiczne. Definiując odpowiednio warunki, można określać kolejność wykonywanych operacji. Nie ma natomiast wbudowanego narzędzia pozwalającego na testowanie instalacji. Można jedynie sprawdzić, czy instalator działa, nie można podejrzeć, w którym miejscu wystąpił błąd.

Dużym ułatwieniem dla programistów jest wbudowany moduł określający potencjalne problemy, jakie mogą się pojawić podczas instalacji, a jednocześnie sprawdzający, czy instalacja jest zgodna ze specyfikacją aplikacji dla Windows 2000.

InstallShield for Windows Installer jest częścią pakietu InstallShield Professional 2000, który zawiera także InstallShield Professional 6. Pakiet kosztuje ok. 1000 USD.

Wise for Windows Installer

Wise to komercyjny pakiet do tworzenia instalacji wykorzystujących Windows Installer. Podobnie jak VSI, pozwala na łatwe tworzenie pakietów instalacyjnych na podstawie projektu Visual Basic. Może także utworzyć pakiet, wzorując się na innej instalacji powstałej przy użyciu poprzednich wersji instalatora Wise czy przechwycić stan systemu operacyjnego przed i po zainstalowaniu programu, a na podstawie zmian utworzyć definicję instalacji. Wise może w trakcie działania aplikacji przechwycić odwołania do wszystkich bibliotek, składników COM czy OCX, a także np. wpisy do rejestru/pliku ini. W ten sposób można niemal automatycznie utworzyć instalację programu.

W pakiecie znajduje się specjalny edytor okien dialogowych, a także wiele udogodnień pozwalających np. definiować własne operacje wykonywane podczas instalacji. Sposób definiowania sekwencji okien dialogowych i warunków rozwiązano podobnie, jak w InstallShield, jednak dostęp do poszczególnych opcji jest bardziej skomplikowany. Warto natomiast podkreślić, że w Wise wbudowano specjalny kreator do tworzenia wyrażeń logicznych. Nie ma jednak narzędzia do testowania instalacji.

Wise kosztuje ok. 800 USD.

Dwa instalatory

Aby aplikacja uzyskała logo Designed for Windows 2000, musi korzystać z Windows Installer. Motor WI jest dostępny także na platformy Windows 95/98/NT 4.0. Pozostaje jednak pewien problem. W Windows 2000 jest zalecane, by dzielone komponenty były instalowane w folderze aplikacji (możliwe jest, by w systemie był więcej niż jeden komponent danego typu). Nie zawsze jest to możliwe w Windows 95/98/NT, gdzie zwykle zakłada się, że w systemie znajduje się ostatnia wersja danego komponentu (czyli instalator zastępuje plik tylko wtedy, gdy dysponuje nowszą wersją). Może się więc zdarzyć, że w przypadku Windows 9x/NT będzie konieczna inna wersja programu instalacyjnego niż w aplikacji dla Windows 2000.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200