Для этого я использую инструмент Phil Wilsons ReadSvcXml.exe, который при запуске в качестве события после сборки в проекте установки обновляет MSI-файл установщика с конкретной информацией, относящейся к службе (т. Е. Включая зависимости, чтобы остановить службу при удалении,зарегистрировать это и т. д.).Это самый простой и надежный способ автоматического запуска службы после завершения установки.
Например, событие после сборки для проекта установки: .. \ ReadSvcXml.exe MyApplication.msi .. \ ServiceSetup.xml
Где ServiceSetup.xml выглядит следующим образом:
<ServiceData>
<FileName>MyServiceHost.exe</FileName>
<ServiceInstall>
<Id>ServiceInstallColumn</Id>
<Name>GatewayServer</Name>
<DisplayName>Company MyServer</DisplayName>
<ServiceType>ownprocess </ServiceType> <!-- or shareprocess-->
<Interactive>no</Interactive>
<Start>auto</Start> <!--auto demand or disabled-->
<ErrorControl>
<!--ignore normal critical -->
normal
</ErrorControl>
<Dependencies>MSSQLSERVER</Dependencies>
<Description>MyServer for blar blar blar</Description>
</ServiceInstall>
<ServiceControl>
<Name>MyServerName</Name>
<Id>MyServerId</Id>
<!-- install, uninstall or both-->
<Start>install</Start>
<Stop>both</Stop>
<Remove>uninstall</Remove>
<Wait>no</Wait> <!-- no yes -->
</ServiceControl>
</ServiceData>
SvcInstall можно скачать здесь:
скачать svcinstall bin и источник