无法使用.msi更新Windows服务

时间:2012-11-01 14:31:55

标签: visual-studio-2010 windows-services windows-installer

问题:

我已经制作了一个Windows服务i VS2010(C#)和一个安装并启动它的相应.msi。版本,ProductCode,UpgradeCode等已正确设置。 RemovePreviousVersions设置为true。工作正常。

现在我想制作一个新版本的服务,我希望更新的.msi能够更新服务,而无需用户先手动卸载旧服务。

我的工作是:

  1. 我更新了我的服务的源代码
  2. 在.msi项目中,我更改了版本号和ProductCode (同时保持UpgradeCode不变)
  3. 我重建了整个事情。
  4. 但是,当我之后启动更新的.msi时,它失败并显示以下消息:“错误1001. ....服务的实例已在运行”。

    问题:

    • 为什么在安装之前不会自动卸载服务 更新后的版本?

    • 我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

对于这种情况,对Windows Installer 5.0的更改不感兴趣,它们指的是故障配置。

由于从控制面板手动卸载应用程序会删除该服务,因此很明显新版本的安装不会删除以前的版本。检查为什么需要创建详细日志并检查RemoveExistentProducts标准操作。要创建日志,请使用此命令

  

msiexec / i {msi path} / l * v file.log

您应该知道必须更改前三个版本号之一,以确保操作系统认为新软件包是升级版,第四个版本号将被忽略。此外,您应确保包具有相同的安装类型,即每个用户或每台计算机。如果安装类型不同,则跳过升级。