1

想要使用 Inno 下载插件 (IDP) 根据第一次下载的内容下载文件。怎么做?

这是我的代码

[Code]
procedure InitializeWizard();
var
  line: string;
  line2: string;
  url: string;
  appname: string;
begin
  idpAddFile('http://download.website.com/files.txt', ExpandConstant('{tmp}\files.txt'));
  idpDownloadAfter(wpReady);
  TryGetFileLine(expandConstant('{tmp}\files.txt'), 0, line);
  TryGetFileLine(expandConstant('{tmp}\files.txt'), 1, line2);
  url := line;
  appname := line2;    
  idpAddFile(url, ExpandConstant('{tmp}\'+appname));
  idpDownloadAfter(wpReady);
end;

这里第二个文件在第一个文件完成之前开始下载。那么如何才能一个接一个呢?

4

1 回答 1

1

告诉 IDP 最初只下载列表。然后等待下载完成(请参阅在 Inno Setup 的代码部分下载程序后运行程序)并根据结果创建新的下载列表并重新开始下载。

var
  ListDownloaded: Boolean;

procedure InitializeWizard();
begin
  idpAddFile('http://www.example.com/files.txt', ExpandConstant('{tmp}\files.txt'));
  idpDownloadAfter(wpReady);
  ListDownloaded := False;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  Url, AppName: string;
begin
  Result := True;
  if CurPageID = IDPForm.Page.ID then
  begin
    if not ListDownloaded then
    begin
      TryGetFileLine(ExpandConstant('{tmp}\files.txt'), 0, Url);
      TryGetFileLine(ExpandConstant('{tmp}\files.txt'), 1, AppName);

      idpClearFiles;
      idpAddFile(Url, ExpandConstant('{tmp}\' + AppName));
      idpFormActivate(nil); { This restarts the download }
      Result := False;
      ListDownloaded := True;
    end;
  end;
end;
于 2019-10-11T06:58:58.267 回答