我设法创建了一个MSI,可以安装或升级我的产品。但我想更进一步,显示消息,如您的版本已经是最新的/已安装更高版本。
为了做到这一点,我把它放在我的代码中:
<Upgrade Id="{{MYGUID}}">
<UpgradeVersion Minimum = "0.0.0"
Maximum = "{{MY_CURRENT_VERSION}}
IncludeMinimum="Yes"
IncludeMaximum="No"
Property="UPGRADEOLDERVERSION"/>
<UpgradeVersion Minimum = "{{MY_CURRENT_VERSION}}
OnlyDetect = "Yes"
IncludeMinimum = "Yes"
Property="UPTODATE"/>
<UpgradeVersion Minimum = "{{MY_CURRENT_VERSION}}"
Maximum = "99.99.99"
IncludeMinimum="No"
IncludeMaximum="No"
Property="UPPERVERSIONINSTALLED"/>
</Upgrade>
<Condition Message = "Already up to date">UPTODATE</Condition>
<Condition Message = "Upper version already installed">UPPERVERSIONINSTALLED</Condition>
而且效果很好。但问题是,如果不是这样的话,我希望安装软件,通过添加这些Condition
,每当我试图安装软件时,都会弹出消息,不允许我安装软件,除非我删除了这些。
这个想法是做一些类似的事情
if(not installed)
# Apply the update rules
else
install soft
我该怎么做?谢谢
请记住,您不能两次安装同一个MSI,以防这就是您的"已更新"消息。无论如何,您不能使用从升级派生的属性作为启动条件,因为只有在启动条件之后运行FindRelatedProducts操作才能解决升级(或不升级)的问题。因此,您的属性没有值(=false)并阻止安装。
简单的答案是,我认为如果你使用WiX MajorUpgrade元素,它会做你想做的事情,允许升级,但不允许降级。如果您不想这样做,请在FindRelatedProducts在UI序列中运行后的某个位置显示消息(或将消息添加到对话框中)。