Instalator dla usługi Windows

Każdy średnio zaawansowany użytkownik systemu Windows wie, co to jest usługa systemowa. W niniejszym artykule nie demonstruję jak taką usługę zaimplementować, ani jak ona działa, lecz prezentuję jak można utworzyć instalator dla takiej usługi w środowisku Visual Studio.

Rozpoczynamy od solucji z projektem usługi. Odnajdujemy w Solution Explorer komponent usługi i otwieramy go w trybie Desig. Prawym myszy klikamy gdzieś na designerze i wybieramy opcję Add Installer. W tym momencie do projektu zostanie dodana odpowiednia referencja oraz komponent instalatora ProjectInstaller. Otwieramy ów komponent również w trybie Design, a następnie wyświetlamy okno z właściwościami instalatora usługi (serviceInstaller1). W tym miejscu konfigurujemy podstawowe parametry usługi:

Instalator dla usługi Windows - Ustawienia usługi

To co może nas zainteresować to: opóźnienie startu (DelayedAutoStart), zależność od innych usług (ServicesDependedOn) oraz rodzaj startu (StartType).

Okno właściwości instalatora procesu skojarzonego z usługą (serviceProcessInstaller1) zawiera tylko jedną ciekawą opcję – Account. Definiuje ona rodzaj konta, pod którym zostanie uruchomiona usługa. Jeżeli chcemy uniknąć pytania o login i hasło podczas startu usługi, powinniśmy zmienić wartość tego ustawienia na LocalSystem.

Kolejnym etapem jest dodanie do solucji nowego projektu – Setup Project. Jest to projekt odpowiedzialny za instalator usługi w postaci kreatora. Klikamy prawym przyciskiem myszy na dodanym projekcie, następnie w Add oraz Project Output. W okienku, które wyskoczyło, wybieramy usługę oraz zaznaczamy Primary output. Zapewni nam to przekopiowanie do wybranego w kreatorze folderu wszystkich plikow usługi (włącznie z zależnymi plikami dll). Następnie dodajemy Custom Action w celu uruchomienia instalatora usługi. Klikamy zatem prawym w projekt instalatora, potem w View i następnie Custom Actions. W okienku, które ukazało się naszym oczom, klikamy prawym na główny element i później w Add Custom Action. W kolejnym okienku w Application Folder i finalnie Primary Output. Po tych wszystkich operacjach usługa będzie zarejestrowana w usługach systemowych.
W tym momencie instalator usługi jest gotowy. Wystarczy przebudować projekt instalatora, który automatycznie skompiluje projekt usługi oraz wszystkie projekty podrzędne. Aby uruchomić utworzony plik msi, klikamy prawym przyciskiem na projekcie instalatora i wybieramy opcję Install.

Dość istotne parametry konfiguracyjne znajdują się w oknie z właściwościami instalatora projektu (w Solution Explorer lewy myszy na projekcie, a następnie F4):

Instalator dla usługi Windows - Ustawienia instalatora

Ciekawą opcją jest również określenie, które komponenty wymagane są przed zainstalowaniem usługi. Aby otrzymać okno z elementami możliwymi do zaznaczenia, powinniśmy kliknać prawym myszy w projekt instalatora, potem w Properties i na końcu w przycisk Prerequisites.

Instalator dla usługi Windows - Wymagania

Jeżeli chcemy, żeby z projektu usługi został skopiowany jakiś plik (np. konfiguracja NLog’a) do folderu docelowego instalatora, to we właściwościach tego pliku, w opcji Build Action, wybieramy Content oraz w opcji Copy to Output Directory wybieramy Copy always. Następnie w projekcie instalatora, na konfiguracji Primary output klikamy w Add,
Project Output. I w kolejnym okienku wybieramy Content Files.

Instalator dla usługi Windows - Kopiowanie plików

Na koniec dodam, iż projekt typu instalator posiada wiele ciekawych możliwości i funkcjonalności, toteż zachęcam do klikania i eksperymentowania na własną rękę, według własnych zapotrzebowań.

Podbij

What do you think?
Like Love Haha Wow Sad Angry

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *