维克斯“重大升级”并不完全在降级安装应用程序(WiX “Major Upgrade” doesn&#

2019-07-21 18:50发布

目前,所有升级工作的罚款,只要升级到更新的版本号,当降级但是我发现了一个奇怪的行为。 看来,它会卸载现有版本,然后安装部分,我试图安装的版本,主要的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安装程序对话框弹出它启动之前。

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

Answer 1:

这是对我工作:

<Wix ...>
  <Product ...>
    <Property Id="REINSTALLMODE" Value="amus" />
    <MajorUpgrade AllowDowngrades="yes" />


Answer 2:

允许降级不被认为是最好的做法,至少部分是因为它是如此难以测试,你会支持,同时它还是有可能解决这些问题每一个组合。 难道不检测,而是阻止这种情况下是可行的(建议第一删除更新的版本),并且只支持自动前进?

如果你一定要得到这个一个工作,有没有详细的日志何事降级安装(或修复 - 你需要设置机器的日志记录策略来获得这一个创建)这印证了重大升级(我会看近处FindRelatedProducts)或讨论为什么没有安装您的exe文件的组成部分? 当然检查与任何日志行SELMGR ,因为他们可能解释这一个微小的升级方案。

由于播发快捷到位,这听起来像组件做了广告来代替。 这可能表明组件规则违反小幅升级(特别是除了在新版本的组件看起来像在旧版本的去除-看到荒地的评论 ),虽然它出现在Product/@Id='*'要强迫一个重大升级。

您也可以尝试在一个样本项目工作,从具有单一功能,单一成分,并与快捷单个文件基本版本开始。 如有必要,可添加其他组件和文件的升级版; 否则只是增加文件版本。 然后试试你相反的情况。 慢慢地,直到你找到你的罪魁祸首添加的东西。 然后希望它的东西,你可以从你的真正的产品中移除,或者以其他方式周围的工作。



Answer 3:

我的建议是一个小的“使工作”的一面 - 你可以在降级的情况下,尝试一种无声的修复自定义操作。



Answer 4:

你怎么才能在InstallExecuteSequence操作?

如果执行安装后(它给你最佳的升级性能),你可能会看到的问题,如果文件版本改变为降低版本卸载; 这可能是对你降级的情况。

Windows安装程序将无法与较新版本覆盖旧版本,除非明确要求。

重新排列安装应帮助,如果是这样的话之前卸载。



Answer 5:

如果您使用两个“UpgradeVersion”的元素,会发生什么?

<UpgradeVersion Maximum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no" />
<UpgradeVersion Minimum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="no" />


文章来源: WiX “Major Upgrade” doesn't completely install app on downgrade