Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deploy Windows Service projects with Team Build 2010

I have a VS2010 solution, which includes several Windows Service projects. I need to deploy these services as part of a build in Team Build 2010, and the Windows Services have to be deployed on several Windows Server machines.

How can I do this?

like image 779
Rotte2 Avatar asked Apr 26 '11 09:04

Rotte2


1 Answers

You could conditionally invoke the SC.exe command from your Windows Service project file (*.csproj) to install the Windows Service on a remote machine.

Here's an example:

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

Here we are defining the custom MSBuild properties DeployWinService and TargetWinServiceHost that are used to control whether the output of the Windows Service project will be installed after compilation and to which machine. The WinServiceName property simply specifies the name that the Windows Service will have on the target machine.

In your build definition you'll have to explicitly set the DeployWinService and TargetWinServiceHost properties in the MSBuild Arguments field of the Advanced section:

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME

Related resources:

  • How to create a Windows service by using Sc.exe
  • Common MSBuild Project Properties
like image 178
Enrico Campidoglio Avatar answered Sep 21 '22 14:09

Enrico Campidoglio