Tworzenie instalatora usługi systemu Windows
Podczas tworzenia usługi systemu Windows platformy .NET (aby nie pomylić się z usługą .NET Framework dla systemu Windows), możesz utworzyć instalatora dla usługi. Bez instalatora użytkownicy musieliby wiedzieć, jak zainstalować i skonfigurować usługę. Instalator pakuje pliki wykonywalne aplikacji i uwidacznia dostosowywalne środowisko użytkownika instalacji. Ten samouczek jest kontynuacją samouczka Tworzenie usługi systemu Windows. Pokazano w nim, jak utworzyć instalatora dla usługi systemu Windows platformy .NET.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Zainstaluj rozszerzenie Instalator programu Visual Studio Projects.
- Utwórz projekt instalacyjny.
- Zaktualizuj istniejący projekt procesu roboczego platformy .NET, aby obsługiwał instalację.
- Zautomatyzuj instalację i odinstalowywanie za pomocą Menedżera sterowania usługami systemu Windows.
Wymagania wstępne
- Oczekuje się, że ukończysz samouczek Tworzenie usługi systemu Windows lub przygotujesz się do sklonowania przykładowego repozytorium.
- Zestaw .NET 8.0 SDK lub nowszy
- System operacyjny Windows
- Zintegrowane środowisko projektowe (IDE) platformy .NET
- Korzystanie z programu Visual Studio jest bezpłatne
- Istniejąca usługa systemu Windows platformy .NET
Instalowanie zależności narzędzi
Zacznij od zainstalowania zestawu narzędzi Wix. Zestaw narzędzi Wix to zestaw narzędzi, które tworzą pakiety instalacyjne systemu Windows z kodu źródłowego XML.
dotnet tool install --global wix
Następnie zainstaluj rozszerzenie HeatWave dla programu VS2022. Po zainstalowaniu uruchom ponownie program Visual Studio i zobaczysz dostępne nowe szablony projektów.
Pobieranie istniejącego projektu
Ten samouczek jest oparty na aplikacji utworzonej w ramach samouczka Tworzenie usługi systemu Windows przy użyciu usługi BackgroundService . Możesz sklonować przykładowe repozytorium lub użyć aplikacji utworzonej w poprzednim samouczku.
Napiwek
Cały przykładowy kod źródłowy "Pracownicy na platformie .NET" jest dostępny w przeglądarce Samples Browser do pobrania. Aby uzyskać więcej informacji, zobacz Przeglądanie przykładów kodu: Procesy robocze na platformie .NET.
Otwórz rozwiązanie w programie Visual Studio i wybierz pozycję F5 , aby upewnić się, że aplikacja kompiluje i działa zgodnie z oczekiwaniami. Naciśnij klawisze Ctrl+C, aby zatrzymać aplikację.
Dodawanie nowego projektu instalacyjnego
Aby dodać nowy projekt instalacyjny Wix, kliknij prawym przyciskiem myszy rozwiązanie w Eksplorator rozwiązań i wybierz polecenie Dodaj > nowy projekt:
Wybierz pozycję Pakiet MSI (Wix v4) z dostępnych szablonów, a następnie wybierz pozycję Dalej. Podaj żądaną nazwę i lokalizację, a następnie wybierz pozycję Utwórz.
Konfigurowanie projektu instalatora
Aby skonfigurować projekt instalacyjny, należy najpierw dodać odwołanie do App.WindowsService
projektu. Kliknij prawym przyciskiem myszy projekt instalacyjny w Eksplorator rozwiązań, a następnie wybierz polecenie Dodaj > odwołanie do projektu.
Szablon zawiera przykładowe pliki składników i lokalizacji. Usuń te pliki, pozostawiając tylko plik Package.wxs . Projekt powinien teraz zawierać ProjectReference
element podobny do następującego:
<Project Sdk="WixToolset.Sdk/4.0.0">
<ItemGroup>
<ProjectReference Include="..\App.WindowsService.csproj" />
</ItemGroup>
</Project>
Po dodaniu odwołania do projektu skonfiguruj plik Package.wxs . Otwórz plik w edytorze, a następnie zastąp zawartość następującym kodem:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Define the variables in "$(var.*) expressions" -->
<?define Name = ".NET Joke Service" ?>
<?define Manufacturer = "Microsoft" ?>
<?define Version = "1.0.0.0" ?>
<?define UpgradeCode = "9ED3FF33-8718-444E-B44B-69A2344B7E98" ?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Package Name="$(Name)"
Manufacturer="$(Manufacturer)"
Version="$(Version)"
UpgradeCode="$(var.UpgradeCode)"
Compressed="true">
<!-- Allow upgrades and prevent downgrades -->
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
<!-- Define the directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<!-- Create a folder inside program files -->
<Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
<!-- Create a folder within the parent folder given the name -->
<Directory Id="INSTALLFOLDER" Name="$(Name)" />
</Directory>
</Directory>
</Directory>
<!-- The files inside this DirectoryRef are linked to
the App.WindowsService directory via INSTALLFOLDER -->
<DirectoryRef Id="INSTALLFOLDER">
<!-- Create a single component which is the App.WindowsService.exe file -->
<Component Id="ServiceExecutable" Bitness="always64">
<!-- Copies the App.WindowsService.exe file using the
project reference preprocessor variables -->
<File Id="App.WindowsService.exe"
Source="$(var.App.WindowsService.TargetDir)publish\App.WindowsService.exe"
KeyPath="true" />
<!-- Remove all files from the INSTALLFOLDER on uninstall -->
<RemoveFile Id="ALLFILES" Name="*.*" On="both" />
<!-- Tell WiX to install the Service -->
<ServiceInstall Id="ServiceInstaller"
Type="ownProcess"
Name="App.WindowsService"
DisplayName="$(Name)"
Description="A joke service that periodically logs nerdy humor."
Start="auto"
ErrorControl="normal" />
<!-- Tell WiX to start the Service -->
<ServiceControl Id="StartService"
Start="install"
Stop="both"
Remove="uninstall"
Name="App.WindowsService"
Wait="true" />
</Component>
</DirectoryRef>
<!-- Tell WiX to install the files -->
<Feature Id="Service" Title="App.WindowsService Setup" Level="1">
<ComponentRef Id="ServiceExecutable" />
</Feature>
</Package>
</Wix>
Podczas kompilowania projektu dane wyjściowe to plik MSI, którego można użyć do zainstalowania i odinstalowania usługi.
Instalacja testowa
Aby przetestować instalator, opublikuj projekt App.WindowsService . Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań, a następnie wybierz pozycję Publikuj. Po opublikowaniu przy użyciu profilu utworzonego w poprzednim samouczku plik wykonywalny będzie znajdować się w katalogu publikowania. Następnie skompilujesz projekt instalacyjny i uruchomisz instalatora.
Musisz uruchomić instalację jako administrator. W tym celu kliknij prawym przyciskiem myszy plik MSI, a następnie wybierz polecenie Uruchom jako administrator.
Po zainstalowaniu usługi możesz otworzyć usługę, aby wyświetlić uruchomioną usługę. Aby odinstalować usługę, użyj funkcji Dodaj lub Usuń programy systemu Windows, aby wywołać instalatora.