ExpeditorR,
Genri,
htuos - прогрессбар, который не прерывает выполнение скрипта, проще реализовать через mciSendString.
Вот
полный комплект (скрипт с авишкой, всего 6 Кб), а вот только [more=пример кода]
[Setup]
AppName=WaitProgress
AppVerName=WaitProgress
CreateAppDir=false
OutputDir=.
[Files]
Source: Waiting.avi; DestDir: {tmp}; DestName: WaitProgress.avi; Flags: dontcopy
[Code]
type
TagMonitorInfo = record cbSize: DWord; Monitor, Work: TRect; dwFlags: DWord; end;
var
WaitForm: TForm; n: Integer; MonitorInfo: TagMonitorInfo;
const
AviFrameWidth=272; AviFrameHeight=60; FormLeft=100; FormTop=100;
function GetMonitorInfo(hMonitor: Integer; var lpMonitorInfo: TagMonitorInfo): Boolean; external 'GetMonitorInfoA@user32';
function mciSendString(lpstrCommand, lpstrReturnString: PChar; uReturnLength, hWndCallback: Integer): Integer; external 'mciSendStringA@winmm stdcall delayload';
Function InitializeSetup: Boolean;
Begin
ExtractTemporaryFile('WaitProgress.avi')
MonitorInfo.cbSize:= SizeOf(MonitorInfo); GetMonitorInfo(1, MonitorInfo)
WaitForm:= TForm.Create(nil);
WaitForm.ClientWidth:= AviFrameWidth; WaitForm.ClientHeight:= 60
WaitForm.Left:= trunc((MonitorInfo.Work.Right - WaitForm.Width)/100* FormLeft)
WaitForm.Top:= trunc((MonitorInfo.Work.Bottom - WaitForm.Height)/100 * FormTop)
WaitForm.Caption:= 'Please wait...';
WaitForm.Show
mciSendString('open '+ ExpandConstant('{tmp}\WaitProgress.avi') +' type AVIVideo alias Background parent '+ IntToStr(WaitForm.Handle) +' style child','',0,0)
mciSendString('put Background window at 0 0 '+ IntToStr(WaitForm.ClientWidth) +' '+ IntToStr(WaitForm.ClientHeight),'',0,0)
mciSendString('play Background repeat','',0,0) { проигрывание анимации не останавливает выполнение скрипта}
for n:= 1 to 4 do begin { цикл дан для примера, вставьте здесь свой код}
Sleep(2000)
WaitForm.Caption:= 'Extracting file '+IntToStr(n);
end;
mciSendString('Close Background','',0,0)
WaitForm.Free;
Result:= true;
End;
[/more] (для которого необходим AVI-файл)