【问题标题】:MMC can't see installed .NET serviceMMC 看不到已安装的 .NET 服务
【发布时间】:2014-01-15 01:19:42
【问题描述】:

我有一个 .NET windows 服务项目和一个部署项目来为该服务创建一个 MSI。在开发过程中,我已经多次安装/卸载该服务,但似乎破坏了一些东西。该服务似乎已安装并且程序文件按预期存在,Windows 添加/删除程序会看到新程序,但管理控制台 (MMC) 未列出新安装的服务。

如何让 MMC 识别此服务的存在?它工作正常(按预期出现在 MMC 中)有一段时间了。在一次卸载期间,该软件被删除,但该服务仍列在 MMC 中(显然它不会启动)。我设法通过 Regedit 从 MMC 中删除了孤立的服务,但是当我现在重新安装该服务时,MMC 将看不到它。

如何让 MMC 在安装后看到该服务?

【问题讨论】:

    标签: .net windows service installation mmc


    【解决方案1】:

    我知道这听起来很疯狂,但您是否尝试过重新启动。我知道在开发过程中注册/清理服务有时会很痛苦。我记得在测试安装程序时可能会发生奇怪的事情。另一个老技巧是单击桌面并按 F5,这可以强制重新加载注册表(或者至少它曾经在很多个月前工作过)。

    注册表项是否回到注册表中?如果没有,那么它是安装程序。检查以确保服务安装程序(不是 msi 安装程序,而是您添加到服务的类)正确执行。您可以尝试直接使用 InstallUtil.exe,如果可行,则 msi 项目不会在您的主项目中获取服务安装程序类。如果不是,那么可能服务安装程序类设置不正确。我会创建一个虚拟服务项目并将自动生成代码与我拥有的代码进行比较。

    是否将新版本的文件复制到正确的位置。安装程序也可能认为该服务已经是最新的。那应该会发出一个对话框警告您,但是您可以检查是否所有其他方法都失败了。在这种情况下,您必须再次手动删除文件和注册键。如果这不起作用,您可以使用 procmon 查看安装程序在注册表和文件系统中执行的操作,使其认为项目已安装。

    【讨论】:

    • 有帮助,但不是我需要的解决方案。我发现解决这个问题的唯一方法是回滚我的源代码(失去一天的工作!)。由于旧版本仍然有效,因此问题必须存在于源代码中。因为我只更改了主要服务代码而不是安装程序/部署,所以很奇怪,就像你一样,我确信问题出在安装程序上。无论如何,谢谢你的好建议。
    • @cymorg 没问题,很高兴您使用源代码控制。
    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 2020-07-22
    • 1970-01-01
    • 2014-12-19
    • 2017-08-05
    • 2013-04-20
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多