我已成功安装了主要升级版(例如#206)并包含了代码(#206):
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" IncludeMinimum="no" OnlyDetect="yes" Language="1033" Property="NEWPRODUCTFOUND" />
<UpgradeVersion Minimum="1.0.0.178" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" IncludeMaximum="no" Language="1033" Property="UPGRADEFOUND" />
</Upgrade>
场景是: 我已经安装了#177,然后升级到#206。它仍然允许安装#177,我想阻止这种降级。
从构建#178开始,我已经更改了主要升级的产品GUID,并且工作正常。
请建议如何防止这种情况。我不想将版本降级到177以下。如果我在build no <= 177
上进行了重大升级。
答案 0 :(得分:2)
您的问题是默认情况下在MSI中完成版本比较的方式 - 1.0.0.123的处理方式与例如1.0.0.33。您必须增加修订版本以使安装程序将其检测为旧版本或使用变通方法。
例如,您可以创建一个自定义操作来检查此修订版本并将其放置在例如在InstallValidate之前:
<CustomAction Id='MyVersionCheck' Return='check' (...) />
<InstallExecuteSequence>
<Custom Action='MyVersionCheck' Before='InstallValidate' />
</InstallExecuteSequence>
可以找到更多信息in this article,有关如何创建自定义操作的信息,我建议this blog entry作为起点。