我有一个.NET Windows服务项目和一个部署项目来为该服务创建一个MSI。我在开发过程中多次安装/卸载了这项服务,但似乎已经破坏了一些东西。该服务似乎安装并且程序文件按预期存在,Windows添加/删除程序看到新程序,但管理控制台(MMC)未列出新安装的服务。
如何让MMC识别此服务存在?它工作正常(按预期出现在MMC中)一段时间了。在一次卸载期间,软件被删除,但服务仍然列在MMC中(显然它不会启动)。我设法通过Regedit从MMC中删除了孤立服务,但是当我现在重新安装服务时,MMC将无法看到它。
如何在安装MMC时让MMC看到此服务?
答案 0 :(得分:1)
我知道这听起来很疯狂,但你试过重启。我知道有时在开发过程中注册/清理服务会很麻烦。我记得在测试安装程序时可能会发生奇怪的事情。另一个老技巧是单击桌面并点击F5,这可能会强制注册表重新加载(或者至少它曾经在很多时候用于工作)。
注册表项是否在注册表中?如果不是那么它就是安装程序。检查以确保服务安装程序(不是msi安装程序,而是添加到服务中的类)正确执行。您可以尝试直接使用InstallUtil.exe,如果可行,则msi项目不会在您的主项目中获取服务安装程序类。如果没有,那么可能没有正确设置服务安装程序类。我将创建一个虚拟服务项目,并将自动代码与我所拥有的代码进行比较。
是否将新版本的文件复制到正确的位置。安装程序也可能认为该服务已经是最新的。这应该会发出一个警告你的对话框,但你可以检查是否所有其他方法都失败了。在这种情况下,您必须再次手动删除文件和reg键。如果这不起作用,您可以使用procmon来查看安装程序在注册表和文件系统中正在执行的操作,使其认为项目已经安装。