Вы можете условно вызвать команду SC.exe из файла проекта службы Windows (* .csproj) для установки службы Windows на удаленном компьютере.
Вот пример:
<PropertyGroup>
<DeployWinService>false</DeployWinService>
<WinServiceName>MyService</WinServiceName>
<TargetWinServiceHost Condition="'$(TargetWinServiceHost)' == ''">localhost</TargetWinServiceHost>
</PropertyGroup>
<Target Name="AfterCompile">
<CallTarget Targets="PublishWinService" />
</Target>
<Target Name="PublishWinService"
Condition="'$(DeployWinService)' == 'true'">
<Exec Command="sc stop $(WinServiceName)" ContinueOnError="true" />
<Exec Command="sc \\$(TargetWinServiceHost) create $(WinServiceName) binpath= '$(OutDir)\$(AssemblyName).exe' start= auto" />
</Target>
Здесь мы определяем пользовательские свойства MSBuild DeployWinService
и TargetWinServiceHost
, которые используются для управления тем, будут ли выходные данные проекта службы Windows установлены после компиляции, и на которыемашина.Свойство WinServiceName
просто указывает имя, которое служба Windows будет иметь на целевом компьютере.
В вашем определении сборки вам придется явно установить DeployWinService
и TargetWinServiceHost
свойства в Аргументы MSBuild поля Advanced :
/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
Связанные ресурсы: