损坏的 Windows 服务安装

Posted

技术标签:

【中文标题】损坏的 Windows 服务安装【英文标题】:Broken Windows Service installation 【发布时间】:2022-01-17 21:45:05 【问题描述】:

我有一个正在开发的服务(和一个安装程序),需要对其进行更新(我已经在半年之内完成了很多次,而且大部分时间都很好)。问题可能始于阻止服务启动的错误以及服务应用程序阻止卸载过程的一些常见问题。

现在尝试从程序中卸载我得到错误:

The installed product does not match the installation source(s). Untill... 当点击Cancel 按钮时,会出现另一个错误: The installation resource have not been found

我尝试采纳这个建议:

MsiExec.exe /I foo.msi REINSTALLMODE=voums REINSTALL=ALL

打开了一个 Wizzard,它为我提供了 RepairRemoval,但是这两个选项似乎都无法正常工作。它显示了一些安装/更新文件的努力,而不是要求服务的凭据,然后引发错误:

Error 1001: Entered service already exists

当然,我以前来过这里并尝试过sc delete Service 很多帖子中的建议。

然后在最后一个向导页面中显示The installer was interrupted before Service could be installed. You need to restart installer and try again

我整天都在讨论这个问题。我曾经设法通过手动删除注册表中的所有相关键来摆脱服务,并以某种方式再次安装它只是为了运行相同的问题。我尝试了我发现的每一种方法,但是缺少一些东西并且它保持“损坏”。我觉得我可能需要一种更底层的方法来清除安装并将其带到一个干净的状态。建议表示赞赏。

请注意,有些消息是母语并被翻译成英语,因此可能与英语 Windows 短语不完全匹配。

【问题讨论】:

这是“在野外”还是在你自己的盒子里?您可以try the approaches described here to clean up your own box - 或数量有限的盒子。先试试MS FixIt。如果这是您的安装程序的问题并且它影响所有已部署的版本,您需要更仔细地查看它 - 显然。并且在虚拟机上进行测试——这真的很有帮助——当它们在现场不可用时太糟糕了。 感谢您的建议。我确实有一个虚拟的(用于唯一的测试实例),但我还需要一个本地服务来附加到 VS 以进行调试。我的虚拟机也有问题,但仅限于一些更改后服务无法启动(我可以卸载并安装它);这就是我想在本地调试的原因。我会试试 MS Fixit,看起来是适合这种情况的工具。 不幸的是 MS Fixit 没有帮助,但如果我在问题开始时使用它,它可能会有所帮助(我会记得在未来的问题中使用它)。它声称适用于卸载部分,但在服务安装尝试期间它再次显示Error 1001: Entered service already exist。所以这次我尝试了MS Fixit“安装麻烦”,但是它需要从已安装软件列表中选择一个程序,显然不包含我的服务。 我刚刚在 VM 上收到了相同的错误消息,但只需关闭 ServicesEvent Viewer 即可解决此问题。这些都没有(也没有Task Manager)在我的本地机器上运行,它在启动后基本上是新鲜的...... 这绝对不是你想乱来的地方,但服务应该注册在:HKLM\SYSTEM\CurrentControlSet\Services。您可以尝试重命名您在那里找到的与您的服务匹配的条目。不要做任何其他事情!也导出密钥的备份(File => Export... 选择正确的键 - 导出文本文件,以便您可以添加条目)。然后尝试重新安装,看看是否有帮助。您显然需要确定在升级和维护操作期间导致服务失败的原因。 【参考方案1】:

我终于能够重新安装服务,结合不同帖子的技巧:

手动清除所有相关注册表项(使用regedit),最重要的是HKLM\SYSTEM\CurrentControlSet\Services\<service_name> 手动删除C:\Program Files (x86)\中的应用程序文件夹 重启 确保Task ManagerEvent Managermmc (cmd tasklist | findstr mmc) 和Services 没有运行 确保 Visual Studio 没有运行(简单地说) 重新安装

在我的情况下似乎所有这些都必须执行,缺少一个导致问题坚持。

【讨论】:

好的,很高兴您回到了正常工作的系统。再添加几个链接:Service Installation。 Windows Services FAQ。祝你好运,首先找出导致问题的原因 - 服务可能很难调试。我曾经创建了一个在调试模式下作为 exe 文件运行的文件 - 这很有帮助,但我不确定这是否可能了。 是的,我对服务也有同样的感觉。特别是找出服务未启动的原因可能很困难(没有生成日志条目,进程无法附加到 VS),但至少我现在可以在两个单独的实例上确认它,在本地拥有不同的帐户(服务运行正常服务器上的用户,不同于系统帐户)。 1) Error 1053: The service did not respond to the start or control request in a timely fashion, 2) Why doesn't my Windows Service start automatically after a reboot?, 3) Error 1069: The service did not start due to a logon failure, 4) Common application / service launch problems. 更多链接:1)Windows Services Frequently Asked Questions (FAQ)。 2)Weird launch problem。 3)Service Launch problems.

以上是关于损坏的 Windows 服务安装的主要内容,如果未能解决你的问题,请参考以下文章

安装 Windows 服务 C++

如何把nginx安装成windows服务

Eclipse CVS extssh 在 Windows 7 + Java 7 下损坏

Windows 资源保护无法启动修复服务

求指导:服务器上安装了ESXI7.0,其中新建虚拟机如何在另外一台电脑上登陆改虚拟机??

安装迅雷提示;损坏的图像,导致迅雷无法安装。弹出的对话框显示是:COMCTL32.dll没有被指定在windows运行