Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При создании службы .NET Windows (не ошибаться со службой Windows .NET Framework) может потребоваться создать установщик для службы. Без установщика пользователям потребуется узнать, как установить и настроить службу. Установщик объединяет исполняемые файлы приложения и предоставляет настраиваемый опыт установки. Это руководство является продолжением руководства по созданию службы Windows . В нем показано, как создать установщик для службы Windows .NET.
В этом руководстве описано, как:
- Установите расширение Visual Studio Installer Projects.
- Создайте проект установки.
- Обновите существующий рабочий проект .NET для поддержки установки.
- Автоматизация установки и удаления с помощью диспетчера управления службами Windows.
Предпосылки
- Ожидается, что вы завершили руководство по созданию службы Windows или готовы клонировать репозиторий примера.
- Пакет SDK .NET 8.0 или более поздней версии
- ОС Windows
- Интегрированная среда разработки .NET (IDE)
- Не стесняйтесь использовать Visual Studio
- Существующая служба Windows .NET
Установка зависимостей программных инструментов
Начните с установки набора инструментов Wix. Набор инструментов Wix — это набор средств, которые создают пакеты установки Windows из исходного кода XML.
dotnet tool install --global wix
Затем установите расширение HeatWave для VS2022. После установки перезапустите Visual Studio и увидите доступные новые шаблоны проектов.
Получите существующий проект
Это руководство основано на приложении, созданном в рамках руководства по созданию службы Windows с помощью BackgroundService. Вы можете клонировать пример репозитория или использовать приложение, созданное в предыдущем руководстве.
Подсказка
Все примеры исходного кода из "Workers in .NET" доступны в обзоре примеров для загрузки. Дополнительные сведения см. в разделе Примеры кода: рабочие процессы в .NET.
Откройте решение в Visual Studio и выберите F5 , чтобы убедиться, что приложение создает и выполняется должным образом. Чтобы остановить приложение, нажмите клавиши CTRL+C.
Добавление нового проекта установки
Чтобы добавить новый проект установки Wix, щелкните правой кнопкой мыши решение в обозревателе решений и выберите команду Добавить > новый проект:
Выберите пакет MSI (Wix версии 4) из доступных шаблонов, а затем нажмите кнопку "Далее". Укажите нужное имя и расположение, а затем нажмите кнопку "Создать".
Настройка проекта установщика
Чтобы настроить проект установки, сначала необходимо добавить ссылку на App.WindowsService
проект. Щелкните правой кнопкой мыши проект установки в обозревателе решений и выберите "Добавить > ссылку на проект".
Шаблон включает примеры компонентов и файлы локализации. Удалите эти файлы, оставив только файл Package.wxs . Теперь проект должен включать элемент, аналогичный ProjectReference
следующему:
<Project Sdk="WixToolset.Sdk/4.0.0">
<ItemGroup>
<ProjectReference Include="..\App.WindowsService.csproj" />
</ItemGroup>
</Project>
После добавления ссылки на проект настройте файл Package.wxs . Откройте файл в редакторе и замените содержимое следующим образом:
<?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>
При сборке проекта выходные данные — это MSI-файл, который можно использовать для установки и удаления службы.
Тестовая установка
Чтобы протестировать установщик, опубликуйте проект App.WindowsService . Щелкните проект правой кнопкой мыши в обозревателе решений и выберите "Опубликовать". После публикации с профилем, созданным в предыдущем руководстве, исполняемый файл будет находиться в каталоге публикации. Затем вы создадите проект установки и запустите установщик.
Необходимо запустить установку от имени администратора. Для этого щелкните файл MSI правой кнопкой мыши и выберите команду "Запуск от имени администратора".
После установки службы можно открыть службы , чтобы увидеть запущенную службу. Чтобы удалить службу, используйте функцию "Добавление или удаление программ" Windows для вызова установщика.