MSI / Wix安装程序,安装或升级

时间:2014-09-25 15:59:59

标签: wix installation windows-installer updates

我设法创建了一个可以安装或升级我的产品的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

我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

请记住,您无法安装相同的MSI两次,以防万一您的“已经是最新”消息。无论如何,您不能将从升级派生的属性用作启动条件,因为升级(或不升级)的事实在FindRelatedProducts操作运行之后才会得到解决,这是在启动条件之后。因此,您的属性没有值(= false)并阻止安装。

简短的回答是,我认为如果您使用WiX MajorUpgrade元素,它将执行您想要的操作,允许升级但不降级。如果您不想这样做,那么在FindRelatedProducts在UI序列中运行后,在某处显示您的消息(或将它们添加到对话框中)。

相关问题