首页 > 解决方案 > WiX:比较版本“7.xxx”和“10.xxx”

问题描述

我有一个 WiX 文件,我必须在其中进行版本比较以检查先决条件。表达式看起来像这样:

<Publish (attributes...)>
    <![CDATA[(VERSION<"7.0") OR (other expressions)]]>
</Publish>

到目前为止,这一直运行良好,因为主要版本号从 7 到 8 到 9。我们现在正在移动到版本 10,字符串比较失败,因为“1”小于“7”。我想"10.0"<"7.0"评估为,false因为我打算比较版本,但true由于正在发生字符串比较,表达式评估为。

我已经检查了几个 StackOverflow 答案以及 WiX 文档,但似乎缺少版本比较操作。

理想情况下,在编程语言中,如果没有版本解析机制,我会将字符串除以 并将.字符串转换为整数并比较相应的条目。

我可以对 WiX 使用什么方法?

标签: wixwindows-installer

解决方案


MSI SDK:是的,正如 MSI SDK 所说:Note that the installer will not do direct comparisons of the Version data type in conditional statements。例如,您不能使用比较运算符在条件语句中比较“01.10”和“1.010”等版本。而是使用有效的方法来搜索版本,例如如搜索现有应用程序、文件、注册表项或 .ini 文件项中所述,然后设置属性。”

如果搜索和设置属性对您来说是一种可行的方法,那么问题仍然存在。如果您确实需要,您还可以使用自定义操作并以更灵活的方式检查系统。

你在那个 Publish 元素中到底在做什么?


推荐阅读