Install/Uninstall a Windows Service in a build scr

2019-08-01 15:48发布

Does NAnt have the ability to install or uninstall a windows service, using the InstallUtil utility or whatever else?

4条回答
女痞
2楼-- · 2019-08-01 16:15

If your service can be installed at different places, you can also uninstall it through its name using SC.EXE, as follows:

<property name="serviceName" value="Name of the service"/>
<exec program="sc" failonerror="false" verbose="true" if="${service::is-installed(serviceName,'.')}">
 <arg value="delete"/>
 <arg value="${serviceName}"/>
</exec>
查看更多
对你真心纯属浪费
3楼-- · 2019-08-01 16:16

You can call Nant's exec task to call InstallUtil and can pass parameters to install or uninstall a service easily

 <target name="install-service">
    <exec program="${framework::get-framework-directory('net-2.0')}\InstallUtil.exe">
      <arg value="-i" />
      <arg value="/name=V1" />
      <arg value="C:\Service\SomeService.exe" />      
    </exec>
  </target>
查看更多
在下西门庆
4楼-- · 2019-08-01 16:20

If you use the TopShelf Project in your application to host your services, you can get command-line based tools for installing / removing the services without needing InstallUtil.

ServiceName.exe service install ServiceName.exe service uninstall

And you can run the service directly and get a nice console window that you can CTRL+C to stop. You can integrate this directly into nant or msbuild by executing the program.

查看更多
时光不老,我们不散
5楼-- · 2019-08-01 16:27

Nant or MSBuild? What's the problem with just running installutil yourself - that's what you'd do in MSBuild. (In general, builds dont do the installs for things like this as rule as typically your build should be able to run on a random build server).

Another option, which would take installutil out of the equation is adding a self-install option to your service like this (have a search for more by looking for self install windows service)

查看更多
登录 后发表回答