我们当前使用 vdproj 创建的设置项目需要迁移到 WiX。在此过程中,我们在将现有的 vdproj msi 升级到 WiX msi 时遇到了问题。现有实现对 Installer 的“BeforeUninstall”事件执行一些操作,升级时不应调用,但在使用 WiX msi 时,会调用此操作。使用 WiX 安装程序升级时如何跳过此事件?
我尝试设置诸如“PREVIOUSVERSIONSINSTALLED”、“NEWERPRODUCTFOUND”之类的属性,但仍然调用了该操作。
我们当前使用 vdproj 创建的设置项目需要迁移到 WiX。在此过程中,我们在将现有的 vdproj msi 升级到 WiX msi 时遇到了问题。现有实现对 Installer 的“BeforeUninstall”事件执行一些操作,升级时不应调用,但在使用 WiX msi 时,会调用此操作。使用 WiX 安装程序升级时如何跳过此事件?
我尝试设置诸如“PREVIOUSVERSIONSINSTALLED”、“NEWERPRODUCTFOUND”之类的属性,但仍然调用了该操作。
如果您在 WiX 中进行重大升级,您应该使用 MajorUpgrade 元素。如果正在进行升级,它将设置 WIX_UPGRADE_DETECTED 属性,如此处所述:
http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html
我强烈建议您远离运行自定义操作代码的安装程序类方法,并查看 DTF 托管代码自定义操作。我不知道您是否可以从 WiX 调用安装程序类,因为在 VS 中它们依赖于 Visual Studio 专有的基础结构(installutilb Dll)。