Загрузка дополнительных файлов на основе содержимого первой загрузки с использованием IDP - PullRequest
1 голос
/ 11 октября 2019

Хотите загружать файлы на основе содержимого первой загрузки с помощью Inno Download Plugin (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;

Здесь второй файл начинает загружаться до того, как первый файл заканчивается. Так как сделать это один за другим?

1 Ответ

2 голосов
/ 11 октября 2019

Скажите 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;
...