我需要配置我的 WiX 项目,以便能够安装产品的多个次要版本。IE:我可以安装 1.0、1.1 和 1.3。如果我尝试安装 1.2,它将工作,但如果我尝试使用 1.1,它将在继续之前卸载以前的 1.1 安装。
到目前为止,这就是我的Upgrade
标签中的内容:
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes"
Maximum="$(var.VersionNumber)" IncludeMaximum="no" Property="OLDERMINORFOUND"/>
</Upgrade>
UpgradeCode
是在我的 wxi 文件中定义的 guid,MajorMinorVersion
与 相同VersionNumber
,但构建为 0(版本为 1.1.12 时为 1.1.0)。
我猜我有两种可能:
我制作另一个UpgradeVersion
标签或更新当前标签以在下一个次要版本中具有最大值,并将其从搜索中排除:
<UpgradeVersion Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes"
Maximum="$(var.NextMinorVersion)" IncludeMaximum="no"/>
使用自定义操作以NextMinorVersion
某种方式设置。也许改用属性。
或者,每次次要版本更改时手动更改 UpgradeCode。还是 guid 的前几个字符代表版本,其余字符是唯一的?虽然我怀疑这是个好主意...
所以基本上,实现这一目标的最佳方法是什么,希望所有版本都只有一个设置项目?
编辑
我已经查看了MajorUpgrade
标签,但我认为我不能将它配置为同时具有许多次要版本。对此表示赞赏。
我还研究了一个预处理器扩展,它可以使用函数来操纵版本号,所以我可以这样做:
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Property="OLDERMINORFOUND"
Minimum="$(var.MajorMinorVersion)" IncludeMinimum="yes"
Maximum="$(myprefix.NextMinor($(var.VersionNumber)))" IncludeMaximum="no"/>
</Upgrade>
有关详细信息,请参阅我的答案。