WiX:比较版本“ 7.x.x.x”和“ 10.x.x.x”

时间:2019-03-26 06:41:47

标签: wix windows-installer

我有一个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?

1 个答案:

答案 0 :(得分:0)

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”的版本。而是使用有效的方法搜索诸如Searching for Existing Applications, Files, Registry Entries or .ini File Entries中所述的版本,然后设置属性。”

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

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