首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

Inno Setup获取软件版本值而且对比

2012-07-20 
Inno Setup获取软件版本值并且对比项目中最近做了个SVN代码变更的插件,需要做一个安装盘,发现插件只能用在

Inno Setup获取软件版本值并且对比

项目中最近做了个SVN代码变更的插件,需要做一个安装盘,发现插件只能用在TortoiseSVN 1.6.x或者以上的版本,这就需要安装盘中在安装时提醒用户安装1.6.x或者以上的SVN客户端版本写了几个公共方法实现如下的版本对比。
//从注册表中获取SVN客户端TortoiseSVN的版本号
function getSVNClientVersion (): String;
begin
??RegQueryStringValue(HKCU , 'Software\TortoiseSVN','CurrentVersion', result);
end;

//此函数用于截取版本号数字
procedure DecodeVersion (verstr: String; var verint: array of Integer);
var
??i,p: Integer; s: string;
begin
??verint := [0,0,0,0];
??i := 0;
??while ((Length(verstr) > 0) and (i < 4)) do
??begin
????p := pos (',', verstr);
????if p > 0 then
????begin
??????if p = 1 then s:= '0' else s:= Copy (verstr, 1, p - 1);
??????verint[i] := StrToInt(s);
??????i := i + 1;
??????verstr := Copy (verstr, p+1, Length(verstr));
????end
????else
????begin
??????verint[i] := StrToInt (verstr);
??????verstr := '';
????end;
??end;
end;


// 此函数用于比较版本字符串
// 若 ver1 > ver2 返回值??1
// 若 ver1 = ver2 返回值??0
// 若 ver1 < ver2 返回值 -1
function CompareVersion (ver1, ver2: String) : Integer;
var
??verint1, verint2: array of Integer;
??i: integer;
begin
??SetArrayLength (verint1, 4);
??DecodeVersion (ver1, verint1);
??SetArrayLength (verint2, 4);
??DecodeVersion (ver2, verint2);
??Result := 0; i := 0;
??while ((Result = 0) and (i < 4)) do
??begin
????if verint1[i] > verint2[i] then
??????Result := 1
????else
??????if verint1[i] < verint2[i] then
????????Result := -1
??????else
????????Result := 0;
????i := i + 1;
??end;
end;


来源:Heck's Blog
地址:http://www.hecks.tk/Inno-SetUp-Compare-Software-version/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!

热点排行