升级期间未停止和卸载Win服务

时间:2017-01-25 12:29:28

标签: windows service wix windows-installer major-upgrade

我遇到了使用Wix 3.7构建的安装程序的问题。我有一个安装Windows服务的产品。 问题是在产品升级期间(从版本1.1到版本1.2,使用相同的UpgradeCode,不同的ProductCode Guid和MajorUpgrade属性)我想替换服务运行的可执行文件。该文件由旧进程(即Windows服务)使用。 我怀疑1.1安装程序用于卸载1.1产品,并且在该安装程序中ServiceControl无效(即在卸载时未设置为停止)。

我的猜测:

  1. 1.2安装程序检测现有产品(由于升级代码)
  2. 卸载旧产品
  3. 由于1.1安装程序中的错误
  4. ,服务未停止/卸载
  5. 1.2尝试替换可执行文件,但进程仍在运行可执行文件。
  6. 请注意,我已使用Orca调整了1.1安装程序以获得正确的ServiceControl,该服务会在卸载时停止并删除该服务。我们称之为 1.1tweaked 。如果我使用 1.1tweaked 安装产品,然后使用我的1.2安装程序,那么一切都按预期工作。

    我已在1.2安装程序中尝试过任何可能的ServiceControl配置,但如果上述步骤正确,则无用。

    如何强制停止当前" 1.2安装程序中的Windows服务? 看起来我需要一个自定义操作。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:0)

在评论之后,这些是可能的解决方案:

  • 按照此SO question
  • 为1.1安装程序创建补丁
  • 在MajorUpgrade中使用属性Schedule="afterInstallExecute"。如果组件定义良好且文件版本正确,则可能会有效。
  • 通知用户停止服务。