【问题标题】:How to skip action defined in Installer's BeforeUninstall function when upgrading to WiX升级到 WiX 时如何跳过安装程序的 BeforeUninstall 功能中定义的操作
【发布时间】:2015-03-17 06:16:27
【问题描述】:

我们当前使用 vdproj 创建的设置项目需要迁移到 WiX。 在此过程中,我们在将现有的 vdproj msi 升级到 WiX msi 时遇到了问题。 现有实现对安装程序的“BeforeUninstall”事件执行一些操作,升级时不应调用,但在使用 WiX msi 时,会调用此操作。 使用 WiX 安装程序升级时如何跳过此事件?

我已尝试设置“PREVIOUSVERSIONSINSTALLED”、“NEWERPRODUCTFOUND”等属性,但仍会调用该操作。

【问题讨论】:

  • 你能解决这个问题吗?
  • 我创建了自定义操作并为自定义操作设置条件,如下所示 (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") 属性组合详情请见stackoverflow.com/a/731700/3214994

标签: deployment wix vdproj visual-studio-setup-proje wix3.9


【解决方案1】:

如果您在 WiX 中进行重大升级,您应该使用 MajorUpgrade 元素。如果正在进行升级,它将设置 WIX_UPGRADE_DETECTED 属性,如此处所述:

http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html

我强烈建议您摆脱运行自定义操作代码的安装程序类方法,并查看 DTF 托管代码自定义操作。我不知道您是否可以从 WiX 调用安装程序类,因为在 VS 中它们依赖于 Visual Studio 专有的基础结构(installutilb Dll)。

【讨论】:

  • 是的,我在 WiX 项目中使用了 DTF 自定义操作,并且从 WiX 设置升级到 WiX 设置可以正常工作。问题是在升级由 VS 使用 WiX 安装程序创建的安装程序安装的产品时。
  • 它没有 :( 此属性仅在通过使用 WiX 创建的安装程序安装要升级的产品时有效。我的要求是升级由 vdproj 安装程序安装的产品。
  • 新的 Wix 构建的 MSI 将在升级时设置该属性,当它检测到具有相同 UpgradeCode 的旧产品正在升级时。升级的 MSI 产品或构建的产品无关因为它是由 WiX 构建的 MSI 设置的。如果它不起作用,请在其他地方寻找问题,例如由于某种原因没有进行升级。创建详细日志。
猜你喜欢
  • 1970-01-01
  • 2012-03-21
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多