如何从Internet资源中读取文本文件?

时间:2012-01-14 15:04:22

标签: download inno-setup

我想从Internet资源中读取包含版本号的文本文件。然后我需要在我的脚本中使用这个版本号。

如何在InnoSetup中执行此操作?

1 个答案:

答案 0 :(得分:10)

如何从InnoSetup中的Internet获取文件有很多方法。您可以使用外部库,例如InnoTools Downloader,编写自己的库,或使用其中一个Windows COM对象。在下面的示例中,我使用WinHttpRequest COM对象进行文件接收。

当WinHTTP函数没有引发任何异常时,此脚本中的DownloadFile函数返回True,否则返回False。然后,由AURL参数指定的对HTTP的HTTP GET请求的响应内容将传递给声明的AResponse参数。当脚本在异常运行时失败时,AResponse参数将包含异常错误消息:

[Code]
function DownloadFile(const AURL: string; var AResponse: string): Boolean;
var
  WinHttpRequest: Variant;
begin
  Result := True;
  try
    WinHttpRequest := CreateOleObject('WinHttp.WinHttpRequest.5.1');
    WinHttpRequest.Open('GET', AURL, False);
    WinHttpRequest.Send;
    AResponse := WinHttpRequest.ResponseText;
  except
    Result := False;
    AResponse := GetExceptionMessage;
  end;
end;

procedure InitializeWizard;
var
  S: string;
begin
  if DownloadFile('http://www.example.com/versioninfo.txt', S) then
    MsgBox(S, mbInformation, MB_OK)
  else
    MsgBox(S, mbError, MB_OK)
end;