我设法创建了一个可以安装或升级我的产品的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
我该怎么做?谢谢!
答案 0 :(得分:0)
请记住,您无法安装相同的MSI两次,以防万一您的“已经是最新”消息。无论如何,您不能将从升级派生的属性用作启动条件,因为升级(或不升级)的事实在FindRelatedProducts操作运行之后才会得到解决,这是在启动条件之后。因此,您的属性没有值(= false)并阻止安装。
简短的回答是,我认为如果您使用WiX MajorUpgrade元素,它将执行您想要的操作,允许升级但不降级。如果您不想这样做,那么在FindRelatedProducts在UI序列中运行后,在某处显示您的消息(或将它们添加到对话框中)。