Share via


Skapa ett Windows Service-installationsprogram

När du skapar en .NET Windows-tjänst (ska inte förväxlas med en .NET Framework Windows-tjänst) kanske du vill skapa ett installationsprogram för tjänsten. Utan ett installationsprogram skulle användarna behöva veta hur de installerar och konfigurerar tjänsten. Ett installationsprogram paketar appens körbara filer och exponerar en anpassningsbar installationsanvändarupplevelse. Den här självstudien är en fortsättning på självstudien Skapa en Windows-tjänst . Den visar hur du skapar ett installationsprogram för .NET Windows-tjänsten.

I den här självstudien får du lära dig att:

  • Installera tillägget Visual Studio Installer Projects.
  • Skapa ett konfigurationsprojekt.
  • Uppdatera ett befintligt .NET Worker-projekt för att stödja installation.
  • Automatisera installationen och avinstallationen med Windows Service Control Manager.

Förutsättningar

Installera beroenden för verktyg

Börja med att installera Wix Toolset. Wix Toolset är en uppsättning verktyg som skapar Windows-installationspaket från XML-källkod.

dotnet tool install --global wix

Installera sedan tillägget HeatWave för VS2022. När du har installerat startar du om Visual Studio så visas nya projektmallar tillgängliga.

Hämta befintligt projekt

Den här självstudien baseras på appen som skapats som en del av självstudien Skapa en Windows-tjänst med BackgroundService . Du kan antingen klona exempelrepo eller använda den app som du skapade i föregående självstudie.

Dricks

Alla exempelkällkoden "Arbetare i .NET" finns i exempelwebbläsaren för nedladdning. Mer information finns i Bläddra bland kodexempel: Arbetare i .NET.

Öppna lösningen i Visual Studio och välj F5 för att säkerställa att appen byggs och körs som förväntat. Tryck på Ctrl+C för att stoppa appen.

Lägga till ett nytt installationsprojekt

Om du vill lägga till ett nytt Wix-konfigurationsprojekt högerklickar du på lösningen i Solution Explorer och väljer Lägg till > nytt projekt:

Add new project dialog: New MSI Package (Wix v4) Project.

Välj MSI-paket (Wix v4) från de tillgängliga mallarna och välj sedan Nästa. Ange önskat namn och plats och välj sedan Skapa.

Konfigurera installationsprojekt

Om du vill konfigurera konfigurationsprojektet måste du först lägga till en referens till App.WindowsService projektet. Högerklicka på installationsprojektet i Solution Explorer och välj sedan Lägg till > projektreferens.

Mallen innehåller exempelkomponent- och lokaliseringsfiler. Ta bort dessa filer och lämna endast filen Package.wxs . Projektet bör nu innehålla ett ProjectReference element som liknar följande:

<Project Sdk="WixToolset.Sdk/4.0.0">
  <ItemGroup>
    <ProjectReference Include="..\App.WindowsService.csproj" />
  </ItemGroup>
</Project>

När projektreferensen har lagts till konfigurerar du filen Package.wxs . Öppna filen i redigeraren och ersätt sedan innehållet med följande:

<?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>

När du skapar projektet är utdata en MSI-fil som kan användas för att installera och avinstallera tjänsten.

Testinstallation

Om du vill testa installationsprogrammet publicerar du Projektet App.WindowsService . Högerklicka på projektet i Solution Explorer och välj sedan Publicera. När den har publicerats med den profil som du skapade i den föregående självstudien finns den körbara filen i publiceringskatalogen. Sedan skapar du installationsprojektet och kör installationsprogrammet.

Du måste köra installationen som administratör. Det gör du genom att högerklicka på MSI-filen och sedan välja Kör som administratör.

När tjänsten har installerats kan du öppna Tjänster för att se att tjänsten körs. Om du vill avinstallera tjänsten använder du funktionen Lägg till eller ta bort program i Windows för att anropa installationsprogrammet.

Se även