gpt4 book ai didi

wix - 配置 WiX 项目以安装多个版本,但删除相同的次要版本

转载 作者:行者123 更新时间:2023-12-04 14:23:48 24 4
gpt4 key购买 nike

我需要配置我的 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 文件和 MajorMinorVersion 中定义的 guid与 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>

详情请看我的回答。

最佳答案

所以我按照 WiX 手册( Part 1Part 2 )编写了一个扩展。

我做了一个预处理器扩展,它接受一个版本号字符串(例如:1.2.3.4)并通过解析和拆分字符串来操作版本。

所以现在我可以在我的 .wxs 文件中写这个:

<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion Property="SAMEMINORFOUND" OnlyDetect="no"
Minimum="$(var.MajorMinorVersion).0" IncludeMinimum="yes"
Maximum="$(version.NextMinor($(var.VersionNumber)))" IncludeMaximum="no" />
<UpgradeVersion Property="OLDERVERSIONFOUND" OnlyDetect="yes"
Maximum="$(var.MajorMinorVersion).0" IncludeMaximum="no"/>
<UpgradeVersion Property="NEWERVERSIONFOUND" OnlyDetect="yes"
Minimum="$(version.NextMinor($(var.VersionNumber)))" IncludeMinimum="yes"/>
</Upgrade>

<InstallExecuteSequence>
<RemoveExistingProducts After="InstallValidate"/>
</InstallExecuteSequence>

哪里 version.NextMinor是对我的预处理器扩展的调用。

所以我的安装程序只会检测产品的安装,除非次要版本匹配,否则它将被卸载。

关于wix - 配置 WiX 项目以安装多个版本,但删除相同的次要版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com