【发布时间】:2012-10-22 04:02:27
【问题描述】:
问题:
我已经制作了一个 Windows Service i VS2010 (C#) 和一个相应的 .msi 来安装和启动它。版本、产品代码、升级代码等设置正确。 RemovePreviousVersions 设置为 true。工作正常。
现在我想做一个新版本的服务,我希望更新后的 .msi 来更新服务,而不需要用户先手动卸载旧服务。
我要做的是:
- 我更新了我的服务的源代码
- 在 .msi 项目中,我更改了版本号和 ProductCode (同时保持 UpgradeCode 不变)
- 我重建了整个东西。
但是,当我之后启动更新的 .msi 时,它会失败并显示以下消息:“错误 1001. .... 服务的实例已经在运行”。
问题:
为什么安装前没有自动卸载服务 更新后的版本?
我该怎么做才能让它发挥作用?
【问题讨论】:
-
停止服务运行。 (
net stop servicename应该测试这是否是问题) -
这没有多大帮助。然后我得到“错误1001。指定的服务已经存在”。注意:如果我手动卸载应用程序(通过控制面板中的添加/删除程序),服务会停止并正常卸载。
-
在 MSI v5.0 中添加了对服务配置的几处更改。您可能想查看 MSDN 文档中的 Using Services Configuration。我不记得这些是否能解决像你这样的问题。
-
您确定升级过程中卸载了之前的版本吗?如果不是,那么在这种情况下,您尝试在现有版本上安装新版本 - 这可能会导致类似的错误。
标签: visual-studio-2010 windows-services windows-installer