admin 发表于 2019-8-28 20:43:17

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

      版本比较主要用于制作补丁时采用,从注册表获取版本字窜代码进行比较或者直接使用文件信息中的版本来进行比较,从而判断是否安装相应的补丁。


//从注册表中获取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 := ;
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 := StrToInt(s);
      i := i + 1;
      verstr := Copy (verstr, p+1, Length(verstr));
    end
    else
    begin
      verint := 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 > verint2 then
      Result := 1
    else
      if verint1 < verint2 then
      Result := -1
      else
      Result := 0;
    i := i + 1;
end;
end;



页: [1]
查看完整版本: Inno Setup 获取软件版本值并且对比