问题:
我已经制作了一个Windows服务i VS2010(C#)和一个安装并启动它的相应.msi。版本,ProductCode,UpgradeCode等已正确设置。 RemovePreviousVersions设置为true。工作正常。
现在我想制作一个新版本的服务,我希望更新的.msi能够更新服务,而无需用户先手动卸载旧服务。
我的工作是:
但是,当我之后启动更新的.msi时,它失败并显示以下消息:“错误1001. ....服务的实例已在运行”。
问题:
为什么在安装之前不会自动卸载服务 更新后的版本?
我该怎么做才能让它发挥作用?
答案 0 :(得分:1)
对于这种情况,对Windows Installer 5.0的更改不感兴趣,它们指的是故障配置。
由于从控制面板手动卸载应用程序会删除该服务,因此很明显新版本的安装不会删除以前的版本。检查为什么需要创建详细日志并检查RemoveExistentProducts标准操作。要创建日志,请使用此命令
msiexec / i {msi path} / l * v file.log
您应该知道必须更改前三个版本号之一,以确保操作系统认为新软件包是升级版,第四个版本号将被忽略。此外,您应确保包具有相同的安装类型,即每个用户或每台计算机。如果安装类型不同,则跳过升级。