【发布时间】:2017-06-06 17:32:34
【问题描述】:
场景:
到目前为止,我们一直在使用 VS 2010 安装项目。未来将新版本迁移到 Wix。
问题:
Msiexec 将升级视为卸载 + 全新安装,而不仅仅是升级。
详情:
- 我在新的 WIX 设置中使用了相同的
UpgradeCodeGuid - 我根据需要添加了
MajorUpgrade标签 - 我也尝试过使用
Upgrade和UpgradeVersion而不是MajorUpgrade - 版本号已更新
- 我已对 WXS 进行了重组,看看是否是问题所在
注意 - 系统正确地将两者识别为同一产品,并在安装过程中自动删除旧产品。
问题是,旧产品作为卸载而不是升级运行。 我设置了在卸载期间运行的自定义操作,它将删除用户数据。现在的问题是,由于某种原因,在升级期间会触发此自定义操作。
如果是2010 to 2010 或Wix to Wix,则不会出现此问题,只有在2010 to Wix 时才会出现此问题。
场景
- 1.0(使用 2010 构建)-> 1.1(使用 2010 构建)- 未触发自定义操作
- 1.0(使用 2010 构建)-> 1.1(使用 Wix 构建)-卸载自定义操作
- 1.1(使用 Wix 构建)-> 1.2(使用 Wix 构建)- 未触发自定义操作
我在日志中注意到的唯一区别 -
对于 VS 2010 到 2010
Action ended: MsiUnpublishAssemblies. Return value 1.
MSI (s) (90:A4) : Skipping action: _[guid].uninstall.SetProperty (condition is false)
MSI (s) (90:A4): Skipping action: _[guid].uninstall (condition is false)
MSI (s) (90:A4) [21:54:10:299]: Doing action: UnpublishComponents
Action start 21:54:10: UnpublishComponents.
2010 年到 WIX -
MsiUnpublishAssemblies. Return value 1.
Doing action: [guid].uninstall.SetProperty
Action start : [guid].uninstall.SetProperty.
MSI (s) (90:D4) :
Note:
1: 2235
2:
3: ExtendedType
4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = '[guid].uninstall.SetProperty'
MSI (s) (90:D4) : PROPERTY CHANGE: Adding [guid].uninstall property. Its value is '/installtype=notransaction /action=uninstall /LogFile= ... "[custom-action].exe" "oldmsi.tmp"'.
Action ended _[guid].SetProperty. Return value 1.
MSI (s) (90:D4) : Doing action: _[guid].uninstall
Action start : _[guid].uninstall.
MSI (s) (90:D4):
Note:
1: 2235
2:
3: ExtendedType
4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = '_[guid].uninstall'
Action ended: _[guid].uninstall. Return value 1.
MSI (s) (90:D4): Doing action: UnpublishComponents
Action start : UnpublishComponents.
我不知道为什么会发生这种卸载。任何帮助表示赞赏。
【问题讨论】:
标签: installation wix windows-installer setup-project