我正在尝试重新安装我用C#编写的服务。 这是第一次有效。我使用installutil来处理安装,服务列表中出现了服务,我可以启动它。 然后我对代码进行了一些更新并卸载了服务。在弄清楚我必须关闭服务窗口后,服务似乎已经消失(即成功卸载)。 但是,在尝试再次安装服务时,我收到了消息:
System.ComponentModel.Win32Exception: The specified service already exists
这看起来很奇怪,因为我在服务窗口看不到它。我终于认为在删除关于我的服务的注册表项后发现了问题,但不幸的是,这并没有解决任何问题。
此外,再次卸载对解决问题没有太大作用,因为这会导致相互矛盾的消息:
System.ComponentModel.Win32Exception: The specified service does not exist as an installed service
我应该相信什么?该服务是否存在?我觉得自己像一个物理学家试图弄清楚猫是死了还是活着。我希望有人能够帮助解决这个问题。
答案 0 :(得分:7)
一个相关的SO答案最终指出了我正确的方向(为什么我没有在谷歌或SO自己的搜索中发现我不知道)。 无论如何,显然Visual Studio生成的Designer.c也创建了一个进程和服务安装程序。当然,这些服务的安装名称与我手动创建的安装程序相同。 删除我自己的安装程序解决了这个问题。
答案 1 :(得分:5)
实际问题是您添加了serviceProcessInstaller&的对象。 serviceInstaller在你的代码中多次.. 它应该只添加一次..
打开projectinstaller的designer.cs文件,你会看到它已经添加到那里......
答案 2 :(得分:2)
我也遇到了同样的错误,所以要解决,我做的是:
除了默认值2 之外,您将看到一个新的安装程序,即 serviceprocessInstaller1 和 ServiceInstaller1 。
只需删除自动生成的安装程序即可。现在构建和安装,它将工作。
答案 3 :(得分:2)
检查Service Installer中的服务名称属性。
答案 4 :(得分:0)
我已经尝试了上述所有解决方案。但是我的服务在注册表中安装了其他名称。因此,只需尝试删除该注册表即可。
在注册表中的链接下面打开
Hkey_Local_Macine>System>CurrentControlSet>Service>
但是我没有在此路径下找到我的服务。所以我试图在注册表中找到它。只需按Ctrl + F,然后输入服务名称即可。或一些猜名字。您将获得确切的位置。
只需删除它。它将起作用。
答案 5 :(得分:0)
如果设计器中已存在同一行,则需要删除“ Me.Installers.AddRange(New System.Configuration.Install.Installer(){Me.ServiceInstaller1,Me.ServiceProcessInstaller1})”行,然后将其安装。
ServiceProcessInstaller1是我的项目中的名称。