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

有帮助吗?

解决方案

您可以致电南特的 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>

其他提示

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

另一种选择是将 installutil 排除在外 像这样向您的服务添加自安装选项 (通过寻找来搜索更多 self install windows service)

如果您的服务可以在不同的地方进行安装,也可以卸载它通过使用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>

如果您使用 TopShelf项目在你的应用程序来承载你的服务,你可以得到命令行基于工具安装/无需InstallUtil移除服务。

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

,您可以直接运行该服务,并得到一个不错的控制台窗口中,你可以CTRL + C停止。可以通过执行该程序这直接集成到恶性或MSBUILD。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top