; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "My Program" #define MyAppVerName "My Program 1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{753F2C1F-EA02-488E-A204-A047F1EFA0BC} AppName={#MyAppName} AppVerName={#MyAppVerName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes [Languages] Name: english; MessagesFile: compiler:Default.isl [CustomMessages] english.ProgressTitle=Searching english.ProgressCaption=Searching for files english.ProgressText=Searching for files... [Code] var ProgressPage: TOutputProgressWizardPage; ProgressValue: Integer; ArrayLen: LongInt; bExitSetup: Boolean; procedure ProcessDirectory (RootDir: String; Progress: Boolean); var NewRoot: String; FilePath: String; FindRec: TFindRec; begin if bExitSetup then Exit; NewRoot := AddBackSlash (RootDir); if FindFirst (NewRoot + '*', FindRec) then begin try repeat if (FindRec.Name <> '.') AND (FindRec.Name <> '..') then begin FilePath := NewRoot + FindRec.Name; if FindRec.Attributes AND FILE_ATTRIBUTE_DIRECTORY > 0 then ProcessDirectory (FilePath, Progress) else begin // Start action --> // . // Add your custom code here. // FilePath contains the file name // including its full path name. // Try not to call a function for every file // as this could take a very long time. // . // <-- End action. ArrayLen := ArrayLen + 1; if (Progress) then begin if (ArrayLen mod 1000) = (ArrayLen / 1000) then begin ProgressValue := ProgressValue + 1; if ProgressValue = 100 then ProgressValue := 0; ProgressPage.SetProgress (ProgressValue, 100); end; end; end; end; if (bExitSetup) then Exit; until NOT FindNext (FindRec); finally FindClose(FindRec); end; end; end; function MessageBox (hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer; external 'MessageBoxA@user32.dll stdcall'; procedure CancelButtonClick (CurPageID: Integer; var Cancel, Confirm: Boolean); begin Confirm := FALSE; if (MessageBox (0, SetupMessage (msgExitSetupMessage), SetupMessage (msgExitSetupTitle), 4 + 32) = 6) then begin bExitSetup := TRUE; end; end; procedure CurStepChanged (CurStep: TSetupStep); var lI: LongInt; Dir: String; begin if (CurStep = ssInstall) then begin // The folder to scan. Dir := 'C:\'; // The progress page. ProgressPage := CreateOutputProgressPage (CustomMessage ('ProgressTitle'), CustomMessage ('ProgressCaption')); ProgressPage.SetText (CustomMessage ('ProgressText'), Dir); ProgressPage.SetProgress(0, 0); ProgressPage.Show; // Make the Cancel button visible during the operation. ;WizardForm.CancelButton.Visible := TRUE; // Scan the folder. ProcessDirectory (Dir, TRUE); // Hide the progress page. try finally ProgressPage.Hide; end; end; end;