wix - 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 使用什么方法?
解决方案
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 元素中到底在做什么?
推荐阅读
- docker - 如何列出特定架构的可用 Docker 镜像
- javafx - 无法在 Javafx 中旋转形状
- java - 如何在 Spring Boot 中反序列化/序列化类型 Geometry?
- pandas - 合并 DataFrames 导致 Int 值错误
- sass - 如何在 Visual Studio 中将 scss 文件从一个项目导入另一个项目
- python - pip list 显示已安装的模块,但仍然出现导入错误
- algorithm - 为什么加权联合查找算法中的操作的时间复杂度为 O(lgN)?
- arrays - 对象和数组的混合
- python - 如何覆盖 Flask Admin 上的删除逻辑?
- sorting - 如何根据结构的lastName变量对结构列表进行排序