使用 Inno setup 和 IDP 根据另一个下载文件的内容下载文件(不同时间的多个下载过程)

问题描述 投票:0回答:1

大家好,提前感谢您的帮助。 语境: 我正在尝试创建网络安装程序,下载文件,读出其内容(文件名),将它们填充为组件,然后“继续”仅下载用户选择的组件(文件)。 问题:除了配置 inno 下载管理器以在 wpWelcome 之后开始下载一个文件以及在自定义选择组件页面之后开始下载其他文件之外的所有步骤。那么本质上,是否可以将 idp 配置为在同一安装程序中的不同时间下载多个文件? 我尝试了什么:

[Code]
procedure InitializeWizard();
var
SelectComponentsLabel: TNewStaticText;
begin
idpDownloadAfter(wpWelcome); 
idpAddFile('ftp://host.com/filesToDownload.txt', ExpandConstant('{tmp}\filesToDownload.txt'));
CustomSelectComponentsPage := CreateCustomPage(wpSelectComponents, SetupMessage(msgWizardSelectComponents),SetupMessage(msgSelectComponentsDesc));
.....//continue creating CustomSelectTasksPage 
ende;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  Url, AppName: string;
  Lines: array of string;
  I: Integer;
begin
  Result := True;
 if CurPageID = IDPForm.Page.ID then // or maybe Check for custom page?
  begin
      idpClearFiles;
      ReadTextFile(ExpandConstant('{tmp}\filesToDownload.txt'), Lines);
      for I := 0 to GetArrayLength(Lines) - 1 do
      begin
        AppName := Lines[I];
        if not ListDownloaded then
         ComponentsList.AddCheckBox(AppName, '', 0, False, True, False, False, nil);
         if ComponentsList.Checked[I] then  // Check if checkbox is selected
         begin
           idpAddFile('ftp://host.com/'+AppName', ExpandConstant('{tmp}\' + AppName)); 
           idpDownloadAfter(CustomSelectComponentsPage.ID);    
        end;
      end;  
      ListDownloaded:= True; 
      idpFormActivate(nil); { This restarts the download }
      Result := False;
  end;
end;

因此,我希望 idpForm 启动两次,一次是在欢迎屏幕下载主文本文件之后,另一次是在自定义 SelectComponentsPage 中选择组件之后。但发生的情况是,在欢迎向导页面和第二次配置之后,所有文件都会下载一次(idpDownloadAfter(CustomSelectComponentsPage.ID));

inno-setup inno-download-plugin
1个回答
0
投票

回答你的字面问题:我会在第一次下载完成后尝试调用

idpDownloadAfter
进行第二次下载。

但我宁愿建议您使用以下两种替代解决方案之一:

© www.soinside.com 2019 - 2024. All rights reserved.