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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *