EXE版本号 - 如何正确比较次要版本

时间:2011-10-27 09:26:27

标签: windows version exe

Windows EXE文件附有版本号,由四个以点分隔的数字组成(例如1.0.0.0)。

问题:比较这些数字的正确方法是什么?特别是,1.15.0.0> 1.2.0.0(自15> 2)或反之(从数学角度看,1.15 <1.2)?


背景:我的一个应用程序已达到3.9。*我想知道我可以继续3.10。*没有安装程序或其他组件比较版本号导致麻烦。

2 个答案:

答案 0 :(得分:3)

正确的方法是将每个组件(由句点'。'分隔)依次视为数字而不是字符串值。那么,是的1.15.0.0是&gt; 1.2.0.0

如果您使用Powershell,它有一个内置的版本对象(基于.NET的System.Version类型):[version]将为您执行此功能。

[仅供参考,各个组件为Major.Minor.Build.Revision]

答案 1 :(得分:1)

如MSDN at this page中所述:

  

版本由两个32位整数组成,由四个16位定义   整数。

这意味着,给定两个版本的格式&#34; Major.Minor.Release.Build&#34;,您可以确信您总是有足够的数据将它们组装成64位无符号整数像这样的价值观:

int64_t i1 = (v1->Major << 48) | (v1->Minor << 32) | (v1->Release << 16) | v1->Build;
int64_t i2 = (v2->Major << 48) | (v2->Minor << 32) | (v2->Release << 16) | v2->Build;

所以你现在可以只比较两个64位值,如:

if (i1 > i2) { ... }

很抱歉在5年后解决它,但我四处走动......