根据在线文件设置 Inno Setup 安装程序版本
Set Inno Setup installer version based on an online file
在我的 Inno Setup 项目中,我从服务器下载了所有文件,还下载了一个有版本号的文件。现在我想从文件中读取版本并将其分配给 Code
部分中的 [Setup]
部分 AppVersion
。我的问题是可以在 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;
在我的 Inno Setup 项目中,我从服务器下载了所有文件,还下载了一个有版本号的文件。现在我想从文件中读取版本并将其分配给 Code
部分中的 [Setup]
部分 AppVersion
。我的问题是可以在 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;