杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2433|回复: 0

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

[复制链接]
发表于 2019-8-28 20:43:17 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

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


  1. //从注册表中获取SVN客户端TortoiseSVN的版本号
  2. function getSVNClientVersion (): String;
  3. begin
  4.   RegQueryStringValue(HKCU , 'Software\TortoiseSVN','CurrentVersion', result);
  5. end;

  6. //此函数用于截取版本号数字
  7. procedure DecodeVersion (verstr: String; var verint: array of Integer);
  8. var
  9.   i,p: Integer; s: string;
  10. begin
  11.   verint := [0,0,0,0];
  12.   i := 0;
  13.   while ((Length(verstr) > 0) and (i < 4)) do
  14.   begin
  15.     p := pos (',', verstr);
  16.     if p > 0 then
  17.     begin
  18.       if p = 1 then s:= '0' else s:= Copy (verstr, 1, p - 1);
  19.       verint[i] := StrToInt(s);
  20.       i := i + 1;
  21.       verstr := Copy (verstr, p+1, Length(verstr));
  22.     end
  23.     else
  24.     begin
  25.       verint[i] := StrToInt (verstr);
  26.       verstr := '';
  27.     end;
  28.   end;
  29. end;


  30. // 此函数用于比较版本字符串
  31. // 若 ver1 > ver2 返回值  1
  32. // 若 ver1 = ver2 返回值  0
  33. // 若 ver1 < ver2 返回值 -1
  34. function CompareVersion (ver1, ver2: String) : Integer;
  35. var
  36.   verint1, verint2: array of Integer;
  37.   i: integer;
  38. begin
  39.   SetArrayLength (verint1, 4);
  40.   DecodeVersion (ver1, verint1);
  41.   SetArrayLength (verint2, 4);
  42.   DecodeVersion (ver2, verint2);
  43.   Result := 0; i := 0;
  44.   while ((Result = 0) and (i < 4)) do
  45.   begin
  46.     if verint1[i] > verint2[i] then
  47.       Result := 1
  48.     else
  49.       if verint1[i] < verint2[i] then
  50.         Result := -1
  51.       else
  52.         Result := 0;
  53.     i := i + 1;
  54.   end;
  55. end;

复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-7-16 17:47 , Processed in 0.104552 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表