首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从VS安装MSI升级到被视为卸载的Wix MSI

从VS安装MSI升级到被视为卸载的Wix MSI
EN

Stack Overflow用户
提问于 2017-06-06 17:32:34
回答 1查看 84关注 0票数 2

场景:

到目前为止,我们已经使用VS 2010安装项目。将新的构建迁移到Wix上。

发行:

Msiexec将升级视为卸载+新鲜安装,而不仅仅是升级。

详细信息:

  • 我在新的WIX设置中使用了相同的UpgradeCode Guid。
  • 我已经根据需要添加了MajorUpgrade标记
  • 我也尝试过使用UpgradeUpgradeVersion而不是MajorUpgrade
  • 版本号被更新
  • 我对WXS进行了重组,看看这是否是问题所在

Note -系统正确地识别出同一产品,并在安装过程中自动删除旧产品。

问题是,旧产品的运行方式是卸载而不是升级。我在卸载时设置了一个自定义操作,它将删除用户数据。现在的问题是,由于某种原因,这个自定义操作是在升级期间触发的。

如果是2010 to 2010Wix to Wix,则不会发生这个问题,只有当它是时,才会发生这个问题

场景

  • 1.0(使用2010年构建) -> 1.1(使用2010年构建)-没有自定义操作触发
  • -> 1.1(使用Wix构建)-卸载自定义操作
  • 1.1(使用Wix构建) -> 1.2(使用Wix构建)-不触发自定义操作

我在日志里注意到的唯一不同-

For VS 2010至2010

代码语言:javascript
复制
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 -

代码语言:javascript
复制
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.

我不知道为什么会发生这种卸载。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2017-06-06 18:04:35

没有足够的信息可以确定,但这应该会有所帮助:

一个重大的升级总是卸载正在升级的产品。这是基于新的ProductCode、相同的UpgradeCode和增量版本以及相同的安装上下文的主要升级的定义。这意味着您的问题取决于您对“卸载自定义操作”的假设。

Visual“卸载”自定义操作并不是真正的“卸载”自定义操作。当移除组件(由组件id表示)时,将调用它们。当您从VS 2010构建到VS 2010构建时,组件id保持不变(内部参考数),组件仍然安装。同样的情况发生在WiX构建中。当您从VS 2010构建到WiX构建时,组件is可能已经更改,因此移除VS 2010构建的MSI中的组件,因此调用自定义操作。

换句话说,这个问题很可能是,您的VS 2010构建中的组件In (因为VS 2010甚至没有暗示它们的存在)与您的WiX构建中的组件in不一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44396328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档