使用NAnt在构建脚本中安装/卸载Windows服务

时间:2010-08-05 16:21:12

标签: windows windows-services build-automation nant installutil

NAnt是否能够使用InstallUtil实用程序或其他任何方式安装或卸载Windows服务?

4 个答案:

答案 0 :(得分:3)

您可以调用Nant的exec任务来调用InstallUtil,并可以传递参数以轻松安装或卸载服务

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

答案 1 :(得分:1)

Nant还是MSBuild?自己运行installutil会有什么问题 - 这就是你在MSBuild中所做的事情。 (一般来说,构建不要像这样做这样的安装作为规则,因为通常你的构建应该能够在随机构建服务器上运行。)

另一个选项是将{read >>添加到adding a self-install option to your service like this之内(通过查找self install windows service来搜索更多内容)

答案 2 :(得分:1)

如果您的服务可以安装在不同的地方,您也可以使用SC.EXE通过其名称卸载它,如下所示:

<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 :(得分:0)

如果您使用应用程序中的TopShelf Project来托管服务,则可以使用基于命令行的工具来安装/删除服务,而无需使用InstallUtil。

ServiceName.exe服务安装 ServiceName.exe服务卸载

您可以直接运行该服务并获得一个很好的控制台窗口,您可以按CTRL + C来停止。您可以通过执行程序将其直接集成到nant或msbuild中。