【发布时间】:2016-12-30 19:20:02
【问题描述】:
我正在尝试创建一个批处理文件来自动卸载、构建和重新安装 Windows 服务。 卸载后尝试重新安装时出现错误:指定的服务已标记为删除。
这里是批处理脚本:
@ECHO off
set filePath=<myfilepath>
set serviceName=<myservicename>
sc query %serviceName% > nul
if %ERRORLEVEL% EQU 0 net stop %serviceName% & sc delete %serviceName%
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe C:\Users\Christopher\Desktop\TFS\MOC\LaneUpdateService\LaneUpdateService.sln /property:Configuration=Debug
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe %filePath%
sc start %serviceName%
我没有打开任务管理器、服务或事件查看器,没有其他用户登录。我尝试删除我的服务的 reg 密钥,但没有成功。如果我在失败后再次运行我的脚本,它将正确安装。有没有办法手动确保服务被完全删除?
【问题讨论】:
-
嗯,所以你不信任
sc delete会完成服务还是什么? -
在尝试安装之前,您可能只需要等待一小段时间。在一个循环中,最好使用
sc query来检查删除是否完成。 (但请注意,在运行安装之前可能不需要删除服务。)
标签: batch-file windows-services