Megosztás a következőn keresztül:


Windows-szolgáltatás telepítőjének létrehozása

Ha .NET Windows-szolgáltatást hoz létre (nem tévesztendő össze a .NET-keretrendszer Windows-szolgáltatásával), érdemes lehet létrehoznia egy telepítőt a szolgáltatáshoz. Telepítő nélkül a felhasználóknak tudniuk kell, hogyan kell telepíteni és konfigurálni a szolgáltatást. A telepítő összecsomagozza az alkalmazás végrehajtható fájljait, és testre szabható telepítési felhasználói élményt tesz elérhetővé. Ez az oktatóanyag a Windows-szolgáltatás létrehozása oktatóanyag folytatása. Bemutatja, hogyan hozhat létre telepítőt a .NET Windows-szolgáltatáshoz.

Ebben az oktatóanyagban megtanulhatja, hogyan:

  • Telepítse a Visual Studio Installer Projects bővítményt.
  • Hozzon létre egy telepítőprojektet.
  • Frissítsen egy meglévő .NET-feldolgozó projektet a telepítés támogatásához.
  • Automatizálja a telepítést és az eltávolítást a Windows Service Control Managerrel.

Előfeltételek

Eszközfüggőségek telepítése

Először telepítse a Wix Toolsetet. A Wix Toolset olyan eszközök készlete, amelyek XML-forráskódból windowsos telepítési csomagokat építenek ki.

dotnet tool install --global wix

Ezután telepítse a HeatWave for VS2022 bővítményt. A telepítés után indítsa újra a Visual Studiót, és új projektsablonok érhetők el.

Meglévő projekt lekérése

Ez az oktatóanyag a Windows-szolgáltatás létrehozása a BackgroundService oktatóanyag részeként létrehozott alkalmazáson alapul. Klónozhatja a mintaadattárat, vagy használhatja az előző oktatóanyagban létrehozott alkalmazást.

Jótanács

Az összes ".NET munkások" példaforráskód az Mintaböngésző-ból letölthető. További információért lásd: Kódminták böngészése: .NET munkavégzők.

Nyissa meg a megoldást a Visual Studióban, és válassza az F5 lehetőséget, hogy az alkalmazás a várt módon épüljön fel és fusson. Az alkalmazás leállításához nyomja le a Ctrl+C.

Új beállítási projekt hozzáadása

Új Wix-beállítási projekt hozzáadásához kattintson a jobb gombbal a megoldásra a Megoldáskezelőben, és válassza az Új projekt hozzáadása >lehetőséget:

Új projekt hozzáadása párbeszédpanel: Új MSI-csomag (Wix v4) projekt.

Válassza az MSI-csomag (Wix v4) lehetőséget az elérhető sablonok közül, majd válassza a Tovább lehetőséget. Adja meg a kívánt nevet és helyet, majd válassza a Létrehozás lehetőséget.

Telepítőprojekt konfigurálása

A beállítási projekt konfigurálásához először hozzá kell adnia egy hivatkozást a App.WindowsService projekthez. Kattintson a jobb gombbal a beállítási projektre a Megoldáskezelőben, majd válassza a Projekthivatkozás hozzáadása lehetőséget>.

A sablon példaösszetevőt és honosítási fájlokat tartalmaz. Törölje ezeket a fájlokat, és csak a Package.wxs fájlt hagyja meg. A projektnek mostantól tartalmaznia kell egy ProjectReference , a következőhöz hasonló elemet:

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

A projekthivatkozás hozzáadása után konfigurálja a Package.wxs fájlt. Nyissa meg a fájlt a szerkesztőben, majd cserélje le a tartalmat a következőre:

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

A projekt létrehozásakor a kimenet egy MSI-fájl, amely a szolgáltatás telepítéséhez és eltávolításához használható.

Teszttelepítés

A telepítő teszteléséhez tegye közzé az App.WindowsService projektet. Kattintson a jobb gombbal a projektre a Megoldáskezelőben, majd válassza a Közzététel lehetőséget. Miután közzétette az előző oktatóanyagban létrehozott profilt, a végrehajtható fájl a közzétételi könyvtárban lesz. Ezután létrehozza a telepítőprojektet, és futtatja a telepítőt.

A telepítést rendszergazdaként kell futtatnia. Ehhez kattintson a jobb gombbal az MSI-fájlra, majd válassza a Futtatás rendszergazdaként lehetőséget.

A szolgáltatás telepítése után megnyithatja a Services szolgáltatást, hogy láthassa a szolgáltatás futását. A szolgáltatás eltávolításához hívja meg a telepítőt a Windows Programok hozzáadása vagy törlése funkciójával.

Lásd még