0

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

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

如何让 MMC 在安装时看到此服务?

4

1 回答 1

1

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

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

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

于 2014-01-15T09:45:15.920 回答