Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.
Zazwyczaj aby stworzyć instalator dodajemy projekt instalacji do projektu. No ale . NET Framework pozwala zaimplementować swój własny niestandardowy instalator. W ćwiczeniu pierwszym pod tym rozdziałem w training kit jest przedstawione stworzenie standardowego instalatora w drugim natomiast niestandardowego. Jako, że certyfikat 70-536 nie obejmuje tematyki tworzenia standardowych instalatorów omówmy sobie ten drugi typ.
Tworzenie niestandardowego instalatora
Jeżeli potrzebujemy większej kontroli nad procesem instalacji naszej aplikacji możemy skorzystać z klasy Installer z przestrzeni nazw System.Configuration.Install . Klasa ta oferuje cztery wirtualne metody które pomagają nam sterować procesem instalacji i deinstalacji:
Install – metoda ta jest odpowiedzialna za sprawdzenie warunków wstępnych tj. np. czy użytkownik ma odpowiednie uprawnienia. Poza tym metoda ta odpowiada za kopiowanie plików i konfigurowanie innych środków wymaganych przez aplikacje.
Commit – metoda ta jest wywoływana po tym jak metoda Install wykona się pomyślnie. Jest wykorzystywana do zakończenia procesu instalacji.
Rollback – metoda ta jest wywoływana podczas niepowodzenia instalacji bądź jej przerwania. W niej powinny znaleźć sie elementy usunięcia wszystkich plików, ustawień które wykonaliśmy do danego momentu instalacji aby nie pozostawić po niej śladu.
Uninstall- wywołanie metody jest możliwe po udanej instalacji. Ma ona na celu usunięcie aplikacji.
W każdej z czterech metod aby wykonać proces instalacji musimy je wywołać z metody base. Zarówno przed jak i po wywołaniu metody bazowej możemy dodać dodatkowe zadania. Poniższy przykład demonstruje najbardziej z możliwych podstawową implementacje niestandardowego instalatora, który zawsze powinien zawierać atrybut RunInstaller. Spójrzmy:
1: // C#
2: [RunInstaller(true)]
3: public class CustomInstaller : Installer
4: {
5: public CustomInstaller()
6: : base()
7: {
8: }
9: public override void Commit(IDictionary mySavedState)
10: {
11: base.Commit(mySavedState);
12: }
13: public override void Install(IDictionary stateSaver)
14: {
15: base.Install(stateSaver);
16: }
17: public override void Uninstall(IDictionary savedState)
18: {
19: base.Uninstall(savedState);
20: }
21: public override void Rollback(IDictionary savedState)
22: {
23: base.Rollback(savedState);
24: }
25: }
Aby wykonać instalacje programowo należałby wywołać metodę Install kiedy ta metoda powiedzie się wywołać Commit, w przeciwnym wypadku Rollback. Kiedy użytkownik sobie zażyczy odinstalowania aplikacji wywołać metode Uninstall . Wszystkie te metody wymagają jednej instancji IDictionary, która jest wykorzystywana do śledzenia zmian w trakcie instalacji.
Instalacje możemy wywołać z linii poleceń bądź użyć InstallUtil.exe które jest w folderze %Windir%\Microsoft.NET\Framework\v2.0.50727\ .
Na dzisiaj tylko tyle:) Pozdrawiam i zapraszam w piątek :) Dzięki za poświęcenie czasu ;)
Kolejny artykuł z serii to 70-536: Logging Application State