我一直在使用Wix,使用自动生成的安装程序和三个版本来测试可升级性1.0,1.1和2.0的小应用程序。使用Wix MSI检测启动条件下的卸载
1.1意味着能够从1.0升级,并且不允许用户在1.1已经存在的情况下安装1.1。
<Upgrade Id="MY_UPGRADECODE_GUID">
<UpgradeVersion Minimum="1.0.0"
IncludeMinimum="yes"
Maximum="1.0.0"
IncludeMaximum="yes"
Property="OLDERVERSIONBEINGUPGRADED" />
<UpgradeVersion Minimum="1.1.0"
IncludeMinimum="yes"
OnlyDetect="yes"
Property="NEWERVERSIONDETECTED" />
</Upgrade>
<Condition Message="A later version of [ProductName] is already installed. Setup will now exit.">
NOT (NEWERVERSIONDETECTED OR Installed)
</Condition>
问题#1:1.1不能被卸载,因为在条件设置和在卸载过程中检查。
2.0意味着能够从1.1升级,而不是从1.0升级('太旧')。它不应该能够自行安装。
<Upgrade Id="MY_UPGRADECODE_GUID">
<UpgradeVersion Minimum="1.1.0"
IncludeMinimum="yes"
Maximum="1.1.0"
IncludeMaximum="yes"
Property="OLDERVERSIONBEINGUPGRADED" />
</Upgrade>
<Upgrade Id="MY_UPGRADECODE_GUID">
<UpgradeVersion Minimum="2.0.0"
OnlyDetect="yes"
Property="NEWERVERSIONDETECTED" />
</Upgrade>
<Upgrade Id="MY_UPGRADECODE_GUID">
<UpgradeVersion Minimum="1.0.0"
IncludeMinimum="yes"
Maximum="1.0.0"
IncludeMaximum="yes"
Property="TOOOLDVERSIONDETECTED" />
</Upgrade>
<Condition Message="A later version of [ProductName] is already installed. Setup will now exit.">
NOT NEWERVERSIONDETECTED OR Installed
</Condition>
<Condition Message="A version of [ProductName] that is already installed is too old to be upgraded. Setup will now exit.">
NOT TOOOLDVERSIONDETECTED
</Condition>
问题2:如果我试图从1.1升级,我打到了我的修改后的版本条件。 (错误:主应用程序的更高版本1.1已安装,安装程序现在将退出。) 问题3:安装程序允许我在其自身顶部安装2.0。
我在做什么错我的升级代码和条件在我的MSIs中得到这些问题?
严格地说,这只是因为WiX在LaunchConditions之前对FindRelatedProducts操作进行排序。因此,例如,如果UI为您提供了每个用户和每台机器之间的选择,则只有在用户做出选择之后才能运行FindRelatedProducts,因为搜索需要知道安装上下文。因此它不能用在发光条件下。 – PhilDW 2015-10-24 18:26:15