根据在线文件设置Inno Setup安装程序版本

问题描述

在我的Inno Setup项目中,我从服务器下载了所有文件,还下载了具有版本号的文件。现在,我想从文件中读取版本,并将其分配给[Setup]部分中的AppVersion部分Code。我的问题是可以在Code部分中设置应用版本吗?

解决方法

结合这两个问题:

[Setup]
AppVersion={code:GetAppVersion}

[Code]
var
  Version: string;

function GetAppVersion(Param: string): string;
var
  WinHttpReq: Variant;
begin
  if Version = '' then
  begin
    WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
    WinHttpReq.Open('GET','https://www.example.com/version.txt',False);
    WinHttpReq.Send('');
    if WinHttpReq.Status <> 200 then
    begin
      Log('HTTP Error: ' + IntToStr(WinHttpReq.Status) + ' ' + WinHttpReq.StatusText);
      MsgBox('Cannot obtain version',mbError,MB_OK);
      Abort();
    end
      else
    begin
      Version := Trim(WinHttpReq.ResponseText);
      Log('Version: ' + Version);
      // you may want to validate that the value is meaningful here
    end;
  end;
  Result := Version;
end;