Sdílet prostřednictvím


Vytvoření instalačního programu služby systému Windows

Při vytváření služby systému Windows .NET (není omylem se službou windows rozhraní .NET Framework), můžete chtít vytvořit instalační program pro vaši službu. Bez instalačního programu by uživatelé museli vědět, jak nainstalovat a nakonfigurovat vaši službu. Instalační program seskupí spustitelné soubory vaší aplikace a zpřístupní přizpůsobitelné uživatelské prostředí instalace. Tento kurz je pokračováním kurzu Vytvoření služby systému Windows. Ukazuje, jak vytvořit instalační program pro službu windows .NET.

V tomto kurzu se naučíte:

  • Nainstalujte rozšíření Instalační program pro Visual Studio Projects.
  • Vytvořte projekt nastavení.
  • Aktualizujte existující projekt pracovního procesu .NET tak, aby podporoval instalaci.
  • Automatizujte instalaci a odinstalaci pomocí Správce řízení služeb systému Windows.

Požadavky

Instalace závislostí nástrojů

Začněte instalací sady nástrojů Wix. Sada nástrojů Wix Je sada nástrojů, které sestavují instalační balíčky systému Windows ze zdrojového kódu XML.

dotnet tool install --global wix

Dále nainstalujte rozšíření HeatWave pro VS2022. Po instalaci restartujte Visual Studio a uvidíte dostupné nové šablony projektů.

Získání existujícího projektu

Tento kurz je založený na aplikaci vytvořené v rámci kurzu Vytvoření služby Windows pomocí služby BackgroundService . Ukázkové úložiště můžete naklonovat nebo použít aplikaci, kterou jste vytvořili v předchozím kurzu.

Tip

Všechny ukázkové zdrojové kódy Pracovních procesů v .NET jsou k dispozici v prohlížeči ukázek ke stažení. Další informace najdete v tématu Procházení ukázek kódu: Pracovní procesy v .NET.

Otevřete řešení v sadě Visual Studio a výběrem klávesy F5 ověřte, že se aplikace sestaví a spustí podle očekávání. Stisknutím kláves Ctrl+C aplikaci zastavte.

Přidání nového projektu instalace

Pokud chcete přidat nový projekt nastavení Wixu, klikněte pravým tlačítkem na řešení v Průzkumník řešení a vyberte Přidat > nový projekt:

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

V dostupných šablonách vyberte balíček MSI (Wix v4) a pak vyberte Další. Zadejte požadovaný název a umístění a pak vyberte Vytvořit.

Konfigurace projektu instalačního programu

Chcete-li nakonfigurovat projekt nastavení, musíte nejprve přidat odkaz na App.WindowsService projekt. Pravým tlačítkem myši klikněte na projekt nastavení v Průzkumník řešení a pak vyberte Přidat > odkaz projektu.

Šablona obsahuje ukázkové komponenty a lokalizační soubory. Odstraňte tyto soubory a ponechejte pouze soubor Package.wxs . Projekt by teď měl obsahovat ProjectReference prvek podobný následujícímu:

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

Po přidání odkazu na projekt nakonfigurujte soubor Package.wxs . Otevřete soubor v editoru a nahraďte jeho obsah následujícím kódem:

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

Při sestavování projektu je výstupem soubor MSI, který lze použít k instalaci a odinstalaci služby.

Test instalace

Pokud chcete instalační program otestovat, publikujte projekt App.WindowsService . Klikněte pravým tlačítkem myši na projekt v Průzkumník řešení a pak vyberte Publikovat. Po publikování s profilem, který jste vytvořili v předchozím kurzu, bude spustitelný soubor v adresáři publikování. Dále sestavíte projekt instalace a spustíte instalační program.

Instalaci musíte spustit jako správce. Uděláte to tak, že kliknete pravým tlačítkem myši na soubor MSI a pak vyberete Spustit jako správce.

Po instalaci služby můžete službu otevřít a zobrazit spuštěnou službu. K odinstalaci služby použijte funkci Přidat nebo odebrat programy systému Windows k volání instalačního programu.

Viz také