Usted podría condicionalmente invocar el comando SC.exe de su archivo de proyecto de servicio de Windows (* .csproj) para instalar el servicio de Windows en una máquina remota.
He aquí un ejemplo:
<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>
Aquí estamos definiendo la costumbre propiedades MSBuild DeployWinService
y TargetWinServiceHost
que se utiliza para controlar si se instalará el producto del proyecto de servicio de Windows después de la compilación y al cual la máquina. La propiedad WinServiceName
simplemente especifica el nombre que el Servicio de Windows tendrá en la máquina de destino.
En su definición del build que tendrá que establecer explícitamente los DeployWinService
y TargetWinServiceHost
propiedades en los Argumentos MSBuild campo de la sección avanzada:
/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
relacionados: