WiX"重大升级"并未在降级时完全安装应用程序

Dav*_*vy8 9 windows-installer wix wix3 downgrade

目前,只要更新到更新的版本号,所有升级都可以正常工作,但是在降级时我会遇到奇怪的行为.它似乎将卸载现有版本,然后部分安装我正在尝试安装的版本,目标位置尚不存在主exe,但会创建广告快捷方式.当打开广告的快捷方式时,它将完成安装(可能是修复)然后它将运行正常.

有没有人有任何想法为什么会这样?

我的升级块看起来像这样:

<UpgradeVersion Minimum="0.0.0.0" Maximum="99.0.0.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" IgnoreRemoveFailure="yes" />

(IgnoreRemoveFailure尝试解决此问题,但似乎没有做任何事情)

在我的InstallExecuteSequence中我有 <RemoveExistingProducts After="InstallValidate" />

我也有Product Id="*"Package Id="*"

需要降级的原因是因为客户端应用程序需要运行与服务器相同的版本以确保兼容性,并且整个过程需要自动化,因此如果客户端/服务器版本在登录时不匹配,则用户可以单击"是",下载,安装并启动正确的版本.这是工作迄今升级,但降级需要额外的步骤直观是手动重新启动应用程序,然后看到一个Windows安装程序对话框弹出它启动之前.

最终的结果是,无论升级或降级,目前的版本需要完全卸载和下载的版本完全安装,所以如果有另一种方式来实现这一目标,这也将是一个很好的答案.

Gia*_*rdi 5

这对我有用:

<Wix ...>
  <Product ...>
    <Property Id="REINSTALLMODE" Value="amus" />
    <MajorUpgrade AllowDowngrades="yes" />
Run Code Online (Sandbox Code Playgroud)


Mic*_*man 2

允许降级并不被认为是最佳实践,至少部分是因为在仍然可以修复它们的同时测试您将支持的每个组合非常困难。是不是无法检测并阻止这种情况(建议先删除较新的版本),并且仅自动支持前进?

如果您必须让这个工作正常,那么详细日志中是否有用于降级安装(或用于修复 - 您需要设置计算机的日志记录策略来创建这个)的任何内容,以确认主要升级(我会查看 FindRelatedProducts 附近)或讨论为什么您的 exe 组件未安装?一定要检查任何日志行,SELMGR因为它们可能会在较小的升级场景中解释这一点。

由于已发布了广告快捷方式,因此听起来该组件已被广告了。这可能表明在次要升级中违反了组件规则(特别是在较新版本中添加了一个组件,看起来就像在旧版本中删除了组件 - 请参阅 HeathS 的评论),尽管看起来Product/@Id='*'应该强制进行重大升级。

您还可以尝试使用示例项目,从具有单个功能、单个组件和带有快捷方式的单个文件的基本版本开始。如果相关,将另一个组件和文件添加到升级版本中;否则只需增加文件版本。然后尝试相反的场景。慢慢添加一些东西,直到找到罪魁祸首。然后希望它是您可以从实际产品中删除的东西,或者可以通过其他方式解决。