【问题标题】:installing windows service from command line "The specified service has been marked for deletion"从命令行安装 Windows 服务“指定的服务已被标记为删除”
【发布时间】: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


【解决方案1】:

问题是停止我的服务后仍有一个进程在运行。我改变了我的 onstop 方法以确保所有进程都正确停止。现在批处理文件可以正常工作。正如@Harry Johnston 建议的那样,我将在批处理文件中添加一个 while 循环。

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 2013-12-31
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2018-10-26
    • 2011-04-23
    相关资源
    最近更新 更多