; -- CodeDownloadFiles.iss -- ; ; This script shows how the CreateDownloadPage support function can be used to ; download temporary files while showing the download progress to the user. [Setup] AppName=My Program AppVersion=1.5 WizardStyle=modern DefaultDirName={autopf}\My Program DefaultGroupName=My Program UninstallDisplayIcon={app}\MyProg.exe OutputDir=userdocs:Inno Setup Examples Output [Files] ; Place any regular files here Source: "MyProg.exe"; DestDir: "{app}"; Source: "MyProg.chm"; DestDir: "{app}"; Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme; ; These files will be downloaded Source: "{tmp}\innosetup-latest.exe"; DestDir: "{app}"; Flags: external Source: "{tmp}\ISCrypt.dll"; DestDir: "{app}"; Flags: external [Icons] Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" [Code] var DownloadPage: TDownloadWizardPage; function OnDownloadProgress(const Url, FileName: String; const Progress, ProgressMax: Int64): Boolean; begin if Progress = ProgressMax then Log(Format('Successfully downloaded file to {tmp}: %s', [FileName])); Result := True; end; procedure InitializeWizard; begin DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), @OnDownloadProgress); DownloadPage.ShowBaseNameInsteadOfUrl := True; end; function NextButtonClick(CurPageID: Integer): Boolean; begin if CurPageID = wpReady then begin DownloadPage.Clear; // Use AddEx to specify a username and password DownloadPage.Add('https://jrsoftware.org/download.php/is.exe?dontcount=1', 'innosetup-latest.exe', ''); DownloadPage.Add('https://jrsoftware.org/download.php/iscrypt.dll?dontcount=1', 'ISCrypt.dll', '2f6294f9aa09f59a574b5dcd33be54e16b39377984f3d5658cda44950fa0f8fc'); DownloadPage.Show; try try DownloadPage.Download; // This downloads the files to {tmp} Result := True; except if DownloadPage.AbortedByUser then Log('Aborted by user.') else SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbCriticalError, MB_OK, IDOK); Result := False; end; finally DownloadPage.Hide; end; end else Result := True; end;