目前,所有升级工作的罚款,只要升级到更新的版本号,当降级但是我发现了一个奇怪的行为。 看来,它会卸载现有版本,然后安装部分,我试图安装的版本,主要的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安装程序对话框弹出它启动之前。
最终的结果是,无论升级或降级,目前的版本需要完全卸载和下载的版本完全安装,所以如果有另一种方式来实现这一目标,这也将是一个很好的答案。
这是对我工作:
<Wix ...>
<Product ...>
<Property Id="REINSTALLMODE" Value="amus" />
<MajorUpgrade AllowDowngrades="yes" />
允许降级不被认为是最好的做法,至少部分是因为它是如此难以测试,你会支持,同时它还是有可能解决这些问题每一个组合。 难道不检测,而是阻止这种情况下是可行的(建议第一删除更新的版本),并且只支持自动前进?
如果你一定要得到这个一个工作,有没有详细的日志何事降级安装(或修复 - 你需要设置机器的日志记录策略来获得这一个创建)这印证了重大升级(我会看近处FindRelatedProducts)或讨论为什么没有安装您的exe文件的组成部分? 当然检查与任何日志行SELMGR
,因为他们可能解释这一个微小的升级方案。
由于播发快捷到位,这听起来像组件做了广告来代替。 这可能表明组件规则违反小幅升级(特别是除了在新版本的组件看起来像在旧版本的去除-看到荒地的评论 ),虽然它出现在Product/@Id='*'
要强迫一个重大升级。
您也可以尝试在一个样本项目工作,从具有单一功能,单一成分,并与快捷单个文件基本版本开始。 如有必要,可添加其他组件和文件的升级版; 否则只是增加文件版本。 然后试试你相反的情况。 慢慢地,直到你找到你的罪魁祸首添加的东西。 然后希望它的东西,你可以从你的真正的产品中移除,或者以其他方式周围的工作。
我的建议是一个小的“使工作”的一面 - 你可以在降级的情况下,尝试一种无声的修复自定义操作。
你怎么才能在InstallExecuteSequence操作?
如果执行安装后(它给你最佳的升级性能),你可能会看到的问题,如果文件版本改变为降低版本卸载; 这可能是对你降级的情况。
Windows安装程序将无法与较新版本覆盖旧版本,除非明确要求。
重新排列安装应帮助,如果是这样的话之前卸载。
如果您使用两个“UpgradeVersion”的元素,会发生什么?
<UpgradeVersion Maximum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no" />
<UpgradeVersion Minimum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="no" />