Hell_Dog2011
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #define MyAppName "Assosins Creed bla-bla-bla" #define NeedSize 6100 #define NeedMem 512 ///с компонентами и без #define Components ////с слайдами или просто с картинкой ;#define Slides #define Image ///////////////////////////////////// ;#define records ;#define facompress ;#define PrecompInside #define SrepInside ;#define MSCInside //на будущее ;#define precomp "0.42" #define unrar ;#define XDelta ;#define PackZIP [Setup] AppName={#MyAppName} AppVersion=2.0 AppPublisher=dvd4el DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma2/ultra64 SolidCompression=true [Languages] Name: rus; MessagesFile: compiler:Languages\Russian.isl //Name: eng; MessagesFile: compiler:Languages\English.isl [Files] Source: dll\b2p.dll; Flags: dontcopy Source: dll\botva2.dll; Flags: dontcopy Source: dll\gdiplus.dll; Flags: dontcopy Source: dll\isSlideShow.dll; Flags: dontcopy Source: dll\InnoCallback.dll; Flags: dontcopy #ifdef Slides Source: SlidesFiles\*; Flags: dontcopy #endif #ifdef Image Source: Files\fonAC.jpg; Flags: dontcopy #endif Source: Files\about.png; Flags: dontcopy Source: Files\aboutlog.png; Flags: dontcopy Source: Files\Button.png; Flags: dontcopy Source: Files\cb.png; Flags: dontcopy Source: Files\dir.png; Flags: dontcopy Source: Files\edit.png; Flags: dontcopy Source: Files\exit.png; Flags: dontcopy Source: Files\group.png; Flags: dontcopy Source: Files\min.png; Flags: dontcopy Source: Files\pb.png; Flags: dontcopy Source: Files\pb1.png; Flags: dontcopy Source: Files\tasks.png; Flags: dontcopy Source: Files\t&c.bmp; Flags: dontcopy Source: Files\ready.png; Flags: dontcopy #ifdef Components Source: Files\work1.jpg; Flags: dontcopy Source: Files\work2.jpg; Flags: dontcopy Source: Files\work3.jpg; Flags: dontcopy Source: Files\work4.jpg; Flags: dontcopy Source: Files\work5.jpg; Flags: dontcopy Source: Files\work6.jpg; Flags: dontcopy Source: Files\work7.jpg; Flags: dontcopy Source: Files\work8.jpg; Flags: dontcopy Source: Files\workerror.jpg; Flags: dontcopy #else Source: Files\2work1.jpg; Flags: dontcopy Source: Files\2work2.jpg; Flags: dontcopy Source: Files\2work3.jpg; Flags: dontcopy Source: Files\2work4.jpg; Flags: dontcopy Source: Files\2work5.jpg; Flags: dontcopy Source: Files\2work6.jpg; Flags: dontcopy Source: Files\2work7.jpg; Flags: dontcopy Source: Files\2workerror.jpg; Flags: dontcopy #endif Source: ISDone\English.ini; DestDir: {tmp}; Flags: dontcopy Source: ISDone\unarc.dll; DestDir: {tmp}; Flags: dontcopy Source: ISDone\ISDone.dll; DestDir: {tmp}; Flags: dontcopy #ifdef records Source: records.inf; DestDir: {tmp}; Flags: dontcopy #endif #ifdef PrecompInside Source: ISDone\CLS-precomp.dll; DestDir: {tmp}; Flags: dontcopy Source: ISDone\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy Source: ISDone\packjpg_dll1.dll; DestDir: {tmp}; Flags: dontcopy Source: ISDone\precomp.exe; DestDir: {tmp}; Flags: dontcopy Source: ISDone\zlib1.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef SrepInside Source: ISDone\CLS-srep.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef MSCInside Source: ISDone\CLS-MSC.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef facompress Source: ISDone\facompress.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef precomp #if precomp == "0.38" ; Source: ISDone\precomp038.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.4" ; Source: ISDone\precomp040.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.41" ; Source: ISDone\precomp041.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.42" ; Source: ISDone\precomp042.exe; DestDir: {tmp}; Flags: dontcopy #else ; Source: ISDone\precomp038.exe; DestDir: {tmp}; Flags: dontcopy ; Source: ISDone\precomp040.exe; DestDir: {tmp}; Flags: dontcopy ; Source: ISDone\precomp041.exe; DestDir: {tmp}; Flags: dontcopy ; Source: ISDone\precomp042.exe; DestDir: {tmp}; Flags: dontcopy #endif #endif #endif #endif #endif #ifdef unrar Source: ISDone\Unrar.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef XDelta Source: ISDone\XDelta3.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef PackZIP Source: ISDone\7z.dll; DestDir: {tmp}; Flags: dontcopy Source: ISDone\packZIP.exe; DestDir: {tmp}; Flags: dontcopy #endif [CustomMessages] rus.Welcome1=Вас приветствует Мастер установки игры %n«{#MyAppName}» rus.Welcome2=Рекомендуется закрыть антивирусные программы, а также все прочие приложения перед тем, как продолжить.%n%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки. rus.Dir1=Программа установит «{#MyAppName}» в следующую папку. rus.Dir2=Нажмите «Далее», чтобы продолжить. Если Вы хотите выбрать другую папку, нажмите «Обзор». rus.Group1=Программа создаст ярлыки в следующей папке меню «Пуск». rus.FreeSpace=Доступно места на диске:..... rus.NeedSpace=Требуется места для установки:..... rus.AfterInstallSpace=После установки игра займет:..... rus.nic=Не создавать папку в меню «Пуск» rus.Comp=Выберите компоненты, которые Вы хотите установить; %nснимите флажки с компонентов, устанавливать которые не требуется. %nНажмите «Далее», когда Вы будете готовы продолжить. rus.dop=Выберите дополнительные задачи, которые необходимо выполнить rus.ic=Добавить ярлык на рабочий стол rus.Fin1=Установка игры «{#MyAppName}» %nуспешно завершена rus.Fin2=%n%nДля ее запуска выберите соответствующий ярлык в меню "Пуск" %nили на Рабочем столе. %n%nНажмите "Завершить", чтобы выйти из программы установки. rus.ExtractedFile=Извлекается файл: rus.Extracted=Установка... rus.Error=Ошибка распаковки! rus.ElapsedTime=Прошло: rus.RemainingTime=Осталось времени: rus.rbc=Откат установки... rus.p=Прогресс: rus.exit=Выход rus.Error1=Установка игры «{#MyAppName}» не завершена. rus.Error2=%nВо время установки произошла ошибка, пожалуйста отключите сторонние программы и повторите попытку установки. %n%nНажмите «Завершить», чтобы выйти из программы установки. rus.DX=Обновить DirectX rus.VC=Установить Microsoft Visual C++ rus.ready1=Программа установки готова начать установку «{#MyAppName}» на Ваш компьютер. rus.ready2=Информация: rus.ready3=Игра будет установлена в rus.ready4=Папка в меню пуск rus.ready5=Будет создан ярлык на рабочем столе rus.ready6=Ярлык на рабочем столе создан не будет rus.doppo=Установить дополнительное программное обеспечение rus.ready7=Будет установлено дополнительное программное обеспечение rus.ready8=Дополнительное программное обеспечение установлено не будет [Icons] Name: {userdesktop}\{#MyAppName}; Filename: {app}\Data\Engine\KapowMulti.exe; WorkingDir: {app}; IconFilename: {app}\Data\Engine\KapowMulti.exe; Check: CheckError and IconsChecks Name: {group}\{cm:UninstallProgram}; Filename: {uninstallexe}; Check: CheckError [Run] Filename: {src}\Redist\dxwebsetup.exe; WorkingDir: {src}\Redist\; Flags: waituntilterminated; Check: CheckError and DpoChecks Filename: {src}\Redist\vcredist_x86.exe; WorkingDir: {src}\Redist\; Parameters: /Q; Flags: waituntilterminated; Check: not IsWin64 and CheckError and DpoChecks Filename: {src}\Redist\vcredist_x64.exe; WorkingDir: {src}\Redist\; Parameters: /Q; Flags: waituntilterminated; Check: IsWin64 and CheckError and DpoChecks [Tasks] Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist #ifdef Components [Types] Name: full; Description: Full installation; Flags: iscustom [Components] Name: text; Description: Язык субтитров; Types: full; Flags: fixed Name: text\rus; Description: Русский; Flags: exclusive Name: text\eng; Description: Английский; Flags: exclusive Name: voice; Description: Язык озвучки; Types: full; Flags: fixed Name: voice\rus; Description: Русский; Flags: exclusive Name: voice\eng; Description: Английский; Flags: exclusive #endif [UninstallDelete] Type: filesandordirs; Name: {app} [Code] const PCFonFLY = true; notPCFonFLY = false; VK_ESCAPE = 27; var img1, img2: longint; Cancel: Integer; Error: Boolean; ISDoneError: Boolean; PCFVer: Double; edit, dir, group, work1, work2, work3, work4, work5, work6, work7, work8, workerror, tasks, ready: Longint; hCancelBtn, hNextBtn, hBackBtn, hDirBrowseBtn, hGroupBrowseBtn, Min, CloseBtn, nic, IconsCheck, CancelBtn, MinBtn, AboutBtn, dpo: HWND; WFButtonFont: TFont; UpdBtn, UpdTasks: TTimer; WelcomeLabel1, MainLabel, WelcomeLabel2, dir1, IconsCheckLbl, NeedSpaceLabel, Dir1Label, FreeSpaceLabel, niclabel, doplbl, Pct, CurrFileName, Time1, Time2, i, dxlbl, vclbl, complbl, ready0, ready1, ready2, ready3, ready4, ready5, ready6, ready7, ready8, ready9, dpolbl: TLabel; FreeMB, TotalMB: Cardinal; SizeInt: Longint; Enabled: Boolean; LogoForm: TForm; closebnt: HWND; TimerID: LongWord; CurrentPicture:integer; PicList: TStringlist; imgpanel: tpanel; #include "AddIss\botva2.iss" #include "AddIss\progressbar.iss" var pb: TImgPB; function ReleaseCapture: Longint; external 'ReleaseCapture@user32.dll stdcall'; /// type TCallback = function (OveralPct, CurrentPct: Integer; CurrentFile, TimeStr1, TimeStr2, TimeStr3: PAnsiChar): longword; type TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord); function GetKeyState(nVirtKey: Integer): ShortInt; external 'GetKeyState@user32 stdcall delayload'; function WrapCallback(callback: TCallback; paramcount: Integer): longword;external 'wrapcallback@files:ISDone.dll stdcall delayload'; function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile: Boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload'; function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload'; function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload'; function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload'; function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload'; function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload'; function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload'; function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload'; function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload'; function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload'; function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload'; function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload'; function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload'; function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload'; function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload'; function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload'; function FileSearchInit(RecursiveSubDir: Boolean): Boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload'; function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall'; function ISDoneStop: Boolean; external 'ISDoneStop@files:ISDone.dll stdcall'; function ChangeLanguage(Language: AnsiString): Boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload'; function SuspendProc: Boolean; external 'SuspendProc@files:ISDone.dll stdcall'; function ResumeProc: Boolean; external 'ResumeProc@files:ISDone.dll stdcall'; /// #ifdef Slides function WrapTimerProc(callback:TProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall'; function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32.dll stdcall'; function GetSystemMetrics(nIndex:Integer):Integer; external 'GetSystemMetrics@user32.dll stdcall'; procedure InitializeSlideShow(Hwnd:Thandle; l,t,w,h:integer;Animate:boolean; Stretch:integer); external 'InitializeSlideShow@files:isslideshow.dll stdcall'; procedure DeinitializeSlideShow; external 'DeinitializeSlideShow@files:isslideshow.dll stdcall'; procedure ShowImage_(file_: PAnsiChar; effect_: longint); external 'ShowImage@files:isslideshow.dll stdcall'; #endif //// procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(WizardForm.Handle,$0112,$F012,0) end; function ProgressCallback(OveralPct, CurrentPct: Integer; CurrentFile, TimeStr1, TimeStr2, TimeStr3: PAnsiChar): longword; begin if (GetKeyState(VK_ESCAPE) < 0) then begin if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:= 1; end; if OveralPct<=1000 then ImgPBSetPosition(pb, OveralPct); Pct.Caption := ExpandConstant('{cm:p} ')+IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%'; CurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, CurrFileName.Font, CurrFileName.Width-ScaleX(100)); Time1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2; Time2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1; Result := Cancel; end; function IconsChecks: Boolean; begin Result:= BtnGetChecked(IconsCheck); end; function DpoChecks: Boolean; begin Result:= BtnGetChecked(dpo); end; procedure CancelButtonOnClick(h: HWND); begin SuspendProc; if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then Cancel:= 1; ResumeProc; end; function cm(s: PAnsiChar): String; begin Result:= ExpandConstant('{cm:'+s+'}'); end; #ifdef Slides procedure ShowImage(file: string); begin if Pos(ExpandConstant('{tmp}\'), File)>0 then StringChange(File, ExpandConstant('{tmp}\'), ''); if Pos('{tmp}\', File)>0 then StringChange(File, '{tmp}\', ''); ExtractTemporaryFile(file); ShowImage_(ExpandConstant('{tmp}\'+File), 1); DeleteFile(ExpandConstant('{tmp}\'+File)); end; #endif procedure HideControls; begin Pct.Hide; i.Hide; CurrFileName.Hide; Time1.Hide; Time2.Hide; ImgPBDelete(pb); if Error then begin i.Show; i.Caption:= cm('rbc'); end; end; procedure CreateControls; begin Pct := TLabel.Create(WizardForm); with Pct do begin AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; Parent:= WizardForm; AutoSize:= false; Left:= ScaleX(55); Top:= ScaleY(420); Width:= ScaleX(180); Transparent:= true; BringToFront; end; CurrFileName := TLabel.Create(WizardForm); with CurrFileName do begin Parent:= WizardForm; AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; AutoSize:= false; Width:= ScaleX(300); Left:= ScaleX(55); Top:= ScaleY(375); Transparent:= true; end; Time1 := TLabel.Create(WizardForm); with Time1 do begin AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; Parent:= WizardForm; AutoSize:= false; Width:= ScaleX(200); Left:= ScaleX(55); Top:= ScaleY(390); Transparent:= true; end; Time2 := TLabel.Create(WizardForm); with Time2 do begin AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; Parent:= WizardForm; AutoSize:= false; Width:= Time1.Width+ScaleX(40); Left:= ScaleX(55); Top:= Time1.Top+ScaleY(15); Transparent:= true; end; i := TLabel.Create(WizardForm); with i do begin AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; Parent:= WizardForm; AutoSize:= false; Width:= Time1.Width+ScaleX(40); Left:= ScaleX(55); Top:= ScaleY(360); Transparent:= true; Caption:= cm('Extracted'); end; end; function CheckError: Boolean; begin Result:= not Error; end; /// procedure FrameMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin WizardForm.SetFocus; ReleaseCapture; SendMessage(WizardForm.Handle,$0112,$F012,0); end; function InitializeSetup:boolean; begin if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll'); if not FileExists(ExpandConstant('{tmp}\b2p.dll')) then ExtractTemporaryFile('b2p.dll'); if not FileExists(ExpandConstant('{tmp}\gdiplus.dll')) then ExtractTemporaryFile('gdiplus.dll'); Result:=True; end; //************************************************ [Начало - Загрузка изображений и подготовка визарда] ***************************************************// procedure CreateWizardImg; begin with WizardForm do begin BorderStyle := bsNone; ClientWidth:=ScaleX(733); ClientHeight:=ScaleY(506); InnerNotebook.Hide; OuterNotebook.Hide; Bevel.Hide; Center; Color:= $191919; end; #ifdef Slides imgPanel := TPanel.Create(WizardForm); imgPanel.Top := ScaleY(73); imgPanel.Left := ScaleX(19); imgPanel.Width := ScaleX(695); imgPanel.Height := ScaleY(225); imgPanel.BevelOuter := bvNone; imgPanel.Parent := WizardForm; InitializeSlideShow(imgPanel.Handle, ScaleX(0), ScaleY(0), ScaleX(695), ScaleY(225), true, 8); #endif #ifdef Components work1:= ImgLoad(WizardForm.handle, ExpandConstant('work1.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work2:= ImgLoad(WizardForm.handle, ExpandConstant('work2.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work3:= ImgLoad(WizardForm.handle, ExpandConstant('work3.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work4:= ImgLoad(WizardForm.handle, ExpandConstant('work4.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work5:= ImgLoad(WizardForm.handle, ExpandConstant('work5.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work6:= ImgLoad(WizardForm.handle, ExpandConstant('work6.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work7:= ImgLoad(WizardForm.handle, ExpandConstant('work7.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work8:= ImgLoad(WizardForm.handle, ExpandConstant('work8.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); workerror:= ImgLoad(WizardForm.handle, ExpandConstant('workerror.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); #else work1:= ImgLoad(WizardForm.handle, ExpandConstant('2work1.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work2:= ImgLoad(WizardForm.handle, ExpandConstant('2work2.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work3:= ImgLoad(WizardForm.handle, ExpandConstant('2work3.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work4:= ImgLoad(WizardForm.handle, ExpandConstant('2work4.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work5:= ImgLoad(WizardForm.handle, ExpandConstant('2work5.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work6:= ImgLoad(WizardForm.handle, ExpandConstant('2work6.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); work7:= ImgLoad(WizardForm.handle, ExpandConstant('2work7.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); workerror:= ImgLoad(WizardForm.handle, ExpandConstant('2workerror.jpg'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); #endif #ifdef Image ImgLoad(WizardForm.handle, ExpandConstant('fonAC.jpg'), ScaleX(19), ScaleY(73), ScaleX(695), ScaleY(225), True, True); #endif edit:= ImgLoad(WizardForm.handle, ExpandConstant('edit.png'), ScaleX(145), ScaleY(380), ScaleX(328), ScaleY(24), True, True); ready:= ImgLoad(WizardForm.handle, ExpandConstant('ready.png'), ScaleX(0), ScaleY(0), WizardForm.ClientWidth, WizardForm.ClientHeight, True, True); dir:= ImgLoad(WizardForm.handle, ExpandConstant('dir.png'), ScaleX(143), ScaleY(327), ScaleX(65), ScaleY(48), True, True); group:= ImgLoad(WizardForm.handle, ExpandConstant('group.png'), ScaleX(143), ScaleY(327), ScaleX(65), ScaleY(48), True, True); tasks:= ImgLoad(WizardForm.handle, ExpandConstant('tasks.png'), ScaleX(143), ScaleY(327), ScaleX(65), ScaleY(48), True, True); ImgApplyChanges(WizardForm.Handle); end; //************************************************ [Конец - Загрузка изображений и подготовка визарда] ***************************************************// //************************************************ [Начало - Текстуры кнопок] ***************************************************// procedure SetStateNewButtons; begin with WizardForm.BackButton do begin BtnSetText(hBackBtn,PAnsiChar(Caption)); BtnSetVisibility(hBackBtn,Visible); BtnSetEnabled(hBackBtn,Enabled); BtnRefresh(hBackBtn); end; with WizardForm.NextButton do begin BtnSetText(hNextBtn,PAnsiChar(Caption)); BtnSetVisibility(hNextBtn,Visible); BtnSetEnabled(hNextBtn,Enabled); BtnRefresh(hNextBtn); end; with WizardForm.CancelButton do begin BtnSetText(hCancelBtn, PAnsiChar(cm('exit'))); BtnSetVisibility(hCancelBtn,Visible); BtnSetEnabled(hCancelBtn,Enabled); BtnRefresh(hCancelBtn); end; BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption)); BtnSetText(hGroupBrowseBtn,PAnsiChar(WizardForm.GroupBrowseButton.Caption)); end; procedure TimerRefreshBtn(S: TObject); begin BtnRefresh(hBackBtn); BtnRefresh(hNextBtn); BtnRefresh(hCancelBtn); BtnRefresh(hDirBrowseBtn); BtnRefresh(hGroupBrowseBtn); if BtnGetChecked(nic) then ready3.Caption:= cm('ready4') + ': ' + '-- --' else ready3.Caption:= cm('ready4') + ': ' + WizardForm.GroupEdit.Text; end; procedure WizardFormBtnClick(hBtn: HWND); var Btn:TButton; begin case hBtn of hCancelBtn: Btn:=WizardForm.CancelButton; hNextBtn: Btn:=WizardForm.NextButton; hBackBtn: Btn:=WizardForm.BackButton; hDirBrowseBtn: Btn:=WizardForm.DirBrowseButton; hGroupBrowseBtn: Btn:=WizardForm.GroupBrowseButton; end; Btn.OnClick(Btn); SetStateNewButtons; BtnRefresh(hBtn); end; procedure MinimizeBtnClick(h: HWND); begin WizardForm.SetFocus; ReleaseCapture; SendMessage(WizardForm.Handle,$112,61472,0); end; procedure CancelBtnClick(h: HWND); begin WizardForm.CancelButton.OnClick(WizardForm.CancelButton); end; procedure CancelBtnClick1(h: HWND); begin LogoForm.Hide; BtnSetEnabled(AboutBtn, not LogoForm.Visible); end; procedure NoIconsClick(hBtn: HWND); var Check:boolean; begin Check:= BtnGetChecked(hBtn); BtnSetEnabled(hGroupBrowseBtn, not Check); WizardForm.GroupEdit.Enabled:= not Check; WizardForm.NoIconsCheck.Checked:= Check; WizardForm.GroupEdit.Color:= $ffffff; end; procedure DpoOnClick(hBtn: TObject); begin BtnSetChecked(dpo, not BtnGetChecked(dpo)); if BtnGetChecked(dpo) then dpolbl.Font.Color:= $363636 else dpolbl.Font.Color:= clgray; end; procedure DpoOnClick1(hBtn: HWND); begin if BtnGetChecked(hBtn) then dpolbl.Font.Color:= $363636 else dpolbl.Font.Color:= clgray; end; procedure AboutClick(hBtn: HWND); var ok: HWND; begin closebnt:= BtnCreate(LogoForm.Handle, ScaleX(473 - 20), ScaleY(0), ScaleX(11), ScaleY(33), ExpandConstant('exit.png'), 1, False); BtnSetEvent(closebnt, BtnClickEventID,WrapBtnCallback(@CancelBtnClick1, 1)); ok:=BtnCreate(LogoForm.Handle, ScaleX(373), ScaleY(403), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False); BtnSetEvent(ok,BtnClickEventID,WrapBtnCallback(@CancelBtnClick1,1)); BtnSetFont(ok,WFButtonFont.Handle); BtnSetFontColor(ok, $363636, $363636, $363636, clgray); BtnSetText(ok,'OK'); ImgLoad(LogoForm.Handle, 'aboutlog.png', 0, 0, ScaleX(473), ScaleY(440), true, true); LogoForm.Show; BtnSetEnabled(AboutBtn, not LogoForm.Visible); ImgApplyChanges(LogoForm.Handle); end; procedure IconsClick(hBtn: HWND); var Check: Boolean; begin if BtnGetChecked(IconsCheck) then IconsCheckLbl.Font.Color:= $363636 else IconsCheckLbl.Font.Color:= clgray; end; procedure nicOnClick(Sender: TObject); begin BtnSetChecked(nic, not BtnGetChecked(nic)); NoIconsClick(nic); end; procedure IconsOnClick(Sender: TObject); begin BtnSetChecked(IconsCheck, not BtnGetChecked(IconsCheck)); if BtnGetChecked(IconsCheck) then IconsCheckLbl.Font.Color:= $363636 else IconsCheckLbl.Font.Color:= clgray; end; procedure ButtonsTextures; begin WFButtonFont:=TFont.Create; WFButtonFont.Name:= 'Tahoma'; WFButtonFont.Size:= 9; WFButtonFont.Color:= $363636; with WizardForm.NextButton do begin hNextBtn:=BtnCreate(WizardForm.Handle, ScaleX(500), ScaleY(470), ScaleX(93), ScaleY(33), 'button.png', 5, False); BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1)); BtnSetFont(hNextBtn,WFButtonFont.Handle); BtnSetFontColor(hNextBtn, $363636, $363636, $363636, $363636); Width:=0; Height:=0; end; with WizardForm.BackButton do begin hBackBtn:=BtnCreate(WizardForm.Handle, ScaleX(400), ScaleY(470), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False); BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1)); BtnSetFont(hBackBtn,WFButtonFont.Handle); BtnSetFontColor(hBackBtn, $363636, $363636, $363636, $363636); Width:=0; Height:=0; end; with WizardForm.CancelButton do begin hCancelBtn:=BtnCreate(WizardForm.Handle, ScaleX(620), ScaleY(470), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False); BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1)); BtnSetFont(hCancelBtn,WFButtonFont.Handle); BtnSetFontColor(hCancelBtn, $363636, $363636, $363636, $363636); Width:=0; Height:=0; end; CancelBtn:=BtnCreate(WizardForm.Handle, ScaleX(717), ScaleY(0), ScaleX(11), ScaleY(33), ExpandConstant('exit.png'), 1, False); BtnSetEvent(CancelBtn, BtnClickEventID,WrapBtnCallback(@CancelBtnClick,1)); BtnSetFont(CancelBtn, WFButtonFont.Handle); BtnSetText(CancelBtn,''); MinBtn:=BtnCreate(WizardForm.Handle, ScaleX(704), ScaleY(4), ScaleX(8), ScaleY(33), ExpandConstant('min.png'), 1, false); BtnSetEvent(MinBtn, BtnClickEventID,WrapBtnCallback(@MinimizeBtnClick,1)); AboutBtn:=BtnCreate(WizardForm.Handle, ScaleX(20), ScaleY(470), ScaleX(29), ScaleY(35), ExpandConstant('about.png'), 5, false); BtnSetChecked(AboutBtn, true); BtnSetEvent(AboutBtn, BtnClickEventID,WrapBtnCallback(@AboutClick,1)); with WizardForm.DirBrowseButton do begin hDirBrowseBtn:=BtnCreate(WizardForm.Handle, ScaleX(502), ScaleY(375), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False); BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1)); BtnSetFont(hDirBrowseBtn,WFButtonFont.Handle); BtnSetFontColor(hDirBrowseBtn, $363636, $363636, $363636, $363636); Width:=0; Height:=0; end; with WizardForm.GroupBrowseButton do begin hGroupBrowseBtn:=BtnCreate(WizardForm.Handle, ScaleX(502), ScaleY(375), ScaleX(93), ScaleY(33), ExpandConstant('button.png'), 1, False); BtnSetEvent(hGroupBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1)); BtnSetFont(hGroupBrowseBtn,WFButtonFont.Handle); BtnSetFontColor(hGroupBrowseBtn, $363636, $363636, $363636, $363636); Width:=0; Height:=0; end; nic:=BtnCreate(WizardForm.Handle, ScaleX(140),ScaleY(405), ScaleX(30),ScaleY(30), ExpandConstant('cb.png'), 1, true); BtnSetChecked(nic, false); BtnSetEvent(nic,BtnClickEventID,WrapBtnCallback(@NoIconsClick,1)); IconsCheck:=BtnCreate(WizardForm.Handle, ScaleX(200), ScaleY(380), ScaleX(30), ScaleY(30), ExpandConstant('cb.png'), 1, true); BtnSetChecked(IconsCheck, true); BtnSetEvent(IconsCheck, BtnClickEventID, WrapBtnCallback(@IconsClick, 1)); dpo:=BtnCreate(WizardForm.Handle, ScaleX(200), ScaleY(410), ScaleX(30), ScaleY(30), ExpandConstant('cb.png'), 1, true); BtnSetChecked(dpo, true); BtnSetEvent(dpo, BtnClickEventID, WrapBtnCallback(@DpoOnClick1, 1)); end; //************************************************ [Конец - Текстуры кнопок] ***************************************************// //************************************************[Начало - Проверка места на диске]*************************************************************// Function NumToStr(Float: Extended): String; Begin Result:= Format('%.2n', [Float]); StringChange(Result, ',', ','); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = ',')) and (Pos(',', Result) > 0) do SetLength(Result, Length(Result)-1); End; function CompareNum(FirstNum, SecondNum: Integer): Boolean; begin if FirstNum < SecondNum then Result:= False else Result:= True; end; Function MbOrTb(Byte: Extended): AnsiString; begin if Byte < 1024 then Result:= NumToStr(Byte) + ' MB' else if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' GB' else Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' TB' end; procedure GetFreeSpaceCaption(Sender: TObject); var Path: AnsiString; gsod: Boolean; begin Path := ExtractFileDrive(WizardForm.DirEdit.Text); gsod:= GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if gsod then begin FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTB(FreeMb) + ' (' + IntToStr((FreeMb*100) div TotalMB) + ' %)'; NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt); BtnSetEnabled(hNextBtn, true); WizardForm.NextButton.Enabled:= true; end else if not gsod then begin FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} 0 MB'); NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTb(SizeInt) BtnSetEnabled(hNextBtn, false); WizardForm.NextButton.Enabled:= false; Exit; end; ready2.Caption:=ready2.Caption + ': ' + WizardForm.DirEdit.Text; end; procedure NeedSpace; begin SizeInt:= {#NeedSize} FreeSpaceLabel := TLabel.Create(WizardForm); FreeSpaceLabel.SetBounds(ScaleX(145), ScaleY(410), ScaleX(209), ScaleY(13)) FreeSpaceLabel.Parent := WizardForm; FreeSpaceLabel.Font.Name:='Arial'; FreeSpaceLabel.Font.Size:= 8; FreeSpaceLabel.Font.Color:= $363636; FreeSpaceLabel.Transparent:=true; FreeSpaceLabel.Font.Style := [fsBold]; NeedSpaceLabel := TLabel.Create(WizardForm); NeedSpaceLabel.SetBounds(ScaleX(145), ScaleY(430), ScaleX(209), ScaleY(13)) NeedSpaceLabel.Parent := WizardForm; NeedSpaceLabel.Font.Name:='Arial'; NeedSpaceLabel.Font.Size:= 8; NeedSpaceLabel.Font.Color:= $363636; NeedSpaceLabel.Transparent:=true; NeedSpaceLabel.Font.Style:= [fsBold]; WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption; WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0; end; //************************************************[Конец - Проверка места на диске]*************************************************************// //************************************************ [Начало - Создание лебелов] ***************************************************// procedure CreateLabel; begin //Без этого кнопки нормально не перерисовываются, если запустить сетап и при этом навести курсор на кнопку. UpdBtn:= TTimer.Create(nil); UpdBtn.Interval:= 1; UpdBtn.OnTimer:= @TimerRefreshBtn; /////////////////////////////////////////////////////////////////////////////////////////////////////////// MainLabel:= TLabel.Create(WizardForm); with MainLabel do begin Left:= ScaleX(0); Top:= ScaleY(7); Width:= ScaleX(752); Height:= ScaleY(34); AutoSize:= false; Transparent:= true; WordWrap:= true; Font.Name:='Corbel'; Alignment:= taCenter; Font.Size:= 10; Font.Color:= $aeacac; Font.Style := [fsBold]; Parent:= WizardForm; OnMouseDown:=@LabelOnMouseDown; Caption:= WizardForm.Caption; end; //Welcome WelcomeLabel1:= TLabel.Create(WizardForm); with WelcomeLabel1 do begin Left:= ScaleX(140); Top:= ScaleY(330); Width:= ScaleX(450); Height:= ScaleY(65); AutoSize:= false; Transparent:= true; WordWrap:= true; Font.Name:='Arial'; Font.Size:= 10; Font.Color:=$363636; Font.Style := [fsBold]; Alignment := taCenter; Parent:= WizardForm; Caption:= cm('Welcome1'); end; WelcomeLabel2:=TLabel.Create(WizardForm); with WelcomeLabel2 do begin Left:= ScaleX(140); Top:= ScaleY(370);; Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:='Arial'; Font.Size:= 9; Font.Color:=$363636; Alignment := taCenter; Font.Style := [fsBold]; Transparent:= true; Parent:= WizardForm; Caption:= cm('Welcome2'); end; //SelectDir with WizardForm.DirEdit do begin Parent:= WizardForm; Left:= ScaleX(148); Top:= ScaleY(384); BorderStyle:= bsNone; Color:= $ffffff; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:= $363636; Width:= ScaleX(324); Height:= ScaleY(18); end; with WizardForm.GroupEdit do begin Parent:= WizardForm; Left:= ScaleX(148); Top:= ScaleY(384); BorderStyle:= bsNone; Color:= $ffffff; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:= $363636; Width:= ScaleX(324); Height:= ScaleY(18); end; dir1:=TLabel.Create(WizardForm); with dir1 do begin Left:= ScaleX(300); Top:= ScaleY(480); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8 Font.Style := [fsBold]; Transparent:= true; Font.Color:= $363636; Parent:= WizardForm; Caption:= cm('dir1'); end; ///////////////////////// niclabel:=TLabel.Create(WizardForm); with niclabel do begin Left:= ScaleX(170); Top:= ScaleY(412); Width:= ScaleX(250); Height:= ScaleY(16); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('nic'); OnClick:= @nicOnClick; end; ///////////////////////////////// ExtractTemporaryFile('t&c.bmp'); with WizardForm.ComponentsList do begin Left:= ScaleX(435); Top:= ScaleY(330); Width:= ScaleX(275); Height:= ScaleY(110); Color:= WizardForm.Color; Font.Color:= $363636; Font.Style:= [fsBold]; Font.Size:= 8; Font.Name:= 'Arial' BorderStyle:= bsSingle; Font.Color:= $363636; LoadBGBmpFromFile(ExpandConstant('{tmp}\t&c.bmp'), 0, 0); Parent:= WizardForm; end; complbl:=TLabel.Create(WizardForm); with complbl do begin Left:= ScaleX(20); Top:= ScaleY(363); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 9; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('comp'); end; /////////////////////////////// doplbl:=TLabel.Create(WizardForm); with doplbl do begin Left:= ScaleX(215); Top:= ScaleY(348); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('dop'); end; IconsCheckLbl:=TLabel.Create(WizardForm); with IconsCheckLbl do begin Left:= ScaleX(230); Top:= ScaleY(387); Width:= ScaleX(250); Height:= ScaleY(16); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ic'); OnClick:= @IconsOnClick; end; ////////////////////////////////// DeleteFile(ExpandConstant('{tmp}\t&c.bmp')); ready0:=TLabel.Create(WizardForm); with ready0 do begin Left:= ScaleX(140); Top:= ScaleY(340); Width:= ScaleX(470); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready1') end; ready1:=TLabel.Create(WizardForm); with ready1 do begin Left:= ScaleX(143); Top:= ScaleY(370); Width:= ScaleX(550); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready2') end; ready2:=TLabel.Create(WizardForm); with ready2 do begin Left:= ScaleX(160); Top:= ScaleY(385); Width:= ScaleX(460); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready3'); end; ready3:=TLabel.Create(WizardForm); with ready3 do begin Left:= ScaleX(160); Top:= ScaleY(400); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready4'); end; ready4:=TLabel.Create(WizardForm); with ready4 do begin Left:= ScaleX(160); Top:= ScaleY(415); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready5'); end; ready5:=TLabel.Create(WizardForm); with ready5 do begin Left:= ScaleX(160); Top:= ScaleY(415); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready6'); end; dpolbl:=TLabel.Create(WizardForm); with dpolbl do begin Left:= ScaleX(230); Top:= ScaleY(423); Width:= ScaleX(350); Height:= ScaleY(16); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('doppo'); OnClick:= @DpoOnClick; end; ready6:=TLabel.Create(WizardForm); with ready6 do begin Left:= ScaleX(160); Top:= ScaleY(430); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready7'); end; ready7:=TLabel.Create(WizardForm); with ready7 do begin Left:= ScaleX(160); Top:= ScaleY(430); Width:= ScaleX(450); Height:= ScaleY(200); AutoSize:= false; WordWrap:= true; Font.Name:= 'Arial'; Font.Size:= 8; Font.Style := [fsBold]; Transparent:= true; Font.Color:=$363636; Parent:= WizardForm; Caption:= cm('ready8'); end; LogoForm:= TForm.Create(WizardForm); LogoForm.BorderStyle:= bsNone; LogoForm.SetBounds(ScaleX(WizardForm.Width div 2 - 230), ScaleY(40), ScaleX(473), ScaleY(440)); LogoForm.Parent:= WizardForm; end; //************************************************ [Конец - Создание лебелов] ***************************************************// procedure InitializeWizard; begin Enabled:= true; CreateWizardImg; CreateLabel; ButtonsTextures; NeedSpace; #ifdef Slides PicList:=tstringlist.Create; ExtractTemporaryFile('fon1.jpg'); ExtractTemporaryFile('fon2.jpg'); ExtractTemporaryFile('fon3.jpg'); ExtractTemporaryFile('fon4.jpg'); ExtractTemporaryFile('fon5.jpg'); ExtractTemporaryFile('fon6.jpg'); ExtractTemporaryFile('fon7.jpg'); ExtractTemporaryFile('fon8.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon1.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon2.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon3.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon4.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon5.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon6.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon7.jpg'); piclist.add(ExpandConstant('{tmp}') + '\fon8.jpg'); #endif end; #ifdef Slides procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord); begin CurrentPicture:=CurrentPicture+1; if CurrentPicture=piclist.count+1 then CurrentPicture:=1; ShowImage(piclist.strings[CurrentPicture - 1]); end; #endif procedure CurPageChanged(CurPageID: Integer); begin SetStateNewButtons; WelcomeLabel1.Hide; WelcomeLabel2.Hide; BtnSetVisibility(hDirBrowseBtn, false); BtnSetVisibility(hGroupBrowseBtn, false); BtnSetVisibility(nic, false); ImgSetVisibility(edit, false); ImgSetVisibility(dir, false); ImgSetVisibility(group, false); ImgSetVisibility(work1, false); ImgSetVisibility(work2, false); ImgSetVisibility(work3, false); ImgSetVisibility(work4, false); ImgSetVisibility(work5, false); ImgSetVisibility(work6, false); ImgSetVisibility(work7, false); ImgSetVisibility(ready, false); #ifdef Components ImgSetVisibility(work8, false); #endif ImgSetVisibility(workerror, false); ImgSetVisibility(tasks, false); WizardForm.DirEdit.Hide; WizardForm.GroupEdit.Hide; dir1.Hide; FreeSpaceLabel.Hide; NeedSpaceLabel.Hide; niclabel.Hide; WizardForm.ComponentsList.Hide; BtnSetVisibility(IconsCheck, false); doplbl.Hide; IconsCheckLbl.Hide; WizardForm.TasksList.Hide; complbl.Hide; ready0.Hide; ready1.Hide; ready2.Hide; ready3.Hide; ready4.Hide; ready5.Hide; ready6.Hide; ready7.Hide; BtnSetVisibility(dpo, false); dpolbl.Hide; if CurPageID = wpWelcome then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon1.jpg')) #endif LogoForm.Hide; WelcomeLabel1.Show; WelcomeLabel2.Show; ImgSetVisibility(work1, true); CancelBtnClick1(0); ImgSetVisibility(img1, true); end; if CurPageID = wpSelectDir then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon2.jpg')) #endif BtnSetVisibility(hDirBrowseBtn, true); ImgSetVisibility(edit, true); ImgSetVisibility(dir, true); WizardForm.DirEdit.Show; FreeSpaceLabel.Show; NeedSpaceLabel.Show; dir1.Show; dir1.Caption:= cm('dir1'); dir1.Left:= ScaleX(220); dir1.Top:= ScaleX(343); ImgSetVisibility(work2, true); LogoForm.Hide; CancelBtnClick1(0); ImgSetVisibility(img2, true); end; if CurPageID = wpSelectComponents then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon3.jpg')) #endif #ifdef Components WizardForm.ComponentsList.Show; WizardForm.ComponentsList.DragMode; WizardForm.ComponentsList.Dragging; ImgSetVisibility(work3, true); complbl.Show; LogoForm.Hide; CancelBtnClick1(0); #endif end; if CurPageID = wpSelectProgramGroup then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon4.jpg')) #endif BtnSetVisibility(hGroupBrowseBtn, true); ImgSetVisibility(edit, true); WizardForm.GroupEdit.Show; ImgSetVisibility(group, true); dir1.Caption:= cm('group1'); dir1.Left:= ScaleX(220); dir1.Top:= ScaleX(343); dir1.Show; BtnSetVisibility(nic, true); niclabel.Show; #ifdef Components ImgSetVisibility(work4, true); #else ImgSetVisibility(work3, true); #endif LogoForm.Hide; CancelBtnClick1(0); end; if CurPageID = wpSelectTasks then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon5.jpg')) #endif BtnSetVisibility(IconsCheck, true); doplbl.Show; IconsCheckLbl.Show; #ifdef Components ImgSetVisibility(work5, true); #else ImgSetVisibility(work4, true); #endif ImgSetVisibility(tasks, true); BtnSetVisibility(dpo, true); dpolbl.Show; LogoForm.Hide; CancelBtnClick1(0); end; if CurPageID = wpReady then begin #ifdef Slides ShowImage(ExpandConstant('{tmp}\fon6.jpg')) #endif #ifdef Components ImgSetVisibility(work6, true); #else ImgSetVisibility(work5, true); #endif ready0.Show; ready1.Show; ready2.Show; ready3.Show; if BtnGetChecked(IconsCheck) then begin ready5.Hide; ready4.Show end else begin ready4.Hide; ready5.Show; end; if BtnGetChecked(dpo) then begin ready7.Hide; ready6.Show end else begin ready6.Hide; ready7.Show; end; LogoForm.Hide; CancelBtnClick1(0); ImgSetVisibility(ready, true); end; if CurPageID = wpInstalling then begin #ifdef Slides CurrentPicture:=1; TimerID:=SetTimer(0, 0, 3000, WrapTimerProc(@OnTimer, 4)); //задержка 3000 мс (3 секунды) #endif #ifdef Components ImgSetVisibility(work7, true); #else ImgSetVisibility(work6, true); #endif LogoForm.Hide; CancelBtnClick1(0); end; if CurPageID = wpFinished then begin #ifdef Slides KillTimer(0, TimerID); ShowImage(ExpandConstant('{tmp}\fon8.jpg')) #endif #ifdef Components ImgSetVisibility(work8, true); #else ImgSetVisibility(work7, true); #endif WelcomeLabel1.Caption:= cm('Fin1'); WelcomeLabel2.Caption:= cm('Fin2'); WelcomeLabel2.Top:= WelcomeLabel2.Top-ScaleY(23); WelcomeLabel1.Show; WelcomeLabel2.Show; i.Hide; LogoForm.Hide; CancelBtnClick1(0); end; if (CurPageID = wpFinished) and Error then begin WelcomeLabel1.Caption:= cm('Error1'); WelcomeLabel2.Caption:= cm('Error2') ImgSetVisibility(workerror, true); LogoForm.Hide; CancelBtnClick1(0); end; ImgApplyChanges(WizardForm.Handle); end; procedure CurStepChanged(CurStep: TSetupStep); var Comps1, Comps2, Comps3, TmpValue: Cardinal; FindHandle1, ColFiles1, CurIndex1: Integer; ExecError: Boolean; InFilePath, OutFilePath, OutFileName: PAnsiChar; begin if CurStep = ssInstall then begin CreateControls; pb:= ImgPBCreate(WizardForm.Handle, 'pb1.png', 'pb.png', ScaleX(55), ScaleY(440), ScaleX(627), ScaleY(25)); BtnSetEvent(hCancelBtn, BtnClickEventID, WrapBtnCallback(@CancelButtonOnClick, 1)); WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}'); Cancel:=0; ExtractTemporaryFile('unarc.dll'); #ifdef PrecompInside ExtractTemporaryFile('CLS-precomp.dll'); ExtractTemporaryFile('packjpg_dll.dll'); ExtractTemporaryFile('packjpg_dll1.dll'); ExtractTemporaryFile('precomp.exe'); ExtractTemporaryFile('zlib1.dll'); #endif #ifdef SrepInside ExtractTemporaryFile('CLS-srep.dll'); #endif #ifdef MSCInside ExtractTemporaryFile('CLS-MSC.dll'); #endif #ifdef facompress ExtractTemporaryFile('facompress.dll'); #endif #ifdef records ExtractTemporaryFile('records.inf'); #endif #ifdef precomp #if precomp == "0.38" ExtractTemporaryFile('precomp038.exe'); #else #if precomp == "0.4" ExtractTemporaryFile('precomp040.exe'); #else #if precomp == "0.41" ExtractTemporaryFile('precomp041.exe'); #else #if precomp == "0.42" ExtractTemporaryFile('precomp042.exe'); #else ExtractTemporaryFile('precomp038.exe'); ExtractTemporaryFile('precomp040.exe'); ExtractTemporaryFile('precomp041.exe'); ExtractTemporaryFile('precomp042.exe'); #endif #endif #endif #endif #endif #ifdef unrar ExtractTemporaryFile('Unrar.dll'); #endif #ifdef XDelta ExtractTemporaryFile('XDelta3.dll'); #endif #ifdef PackZIP ExtractTemporaryFile('7z.dll'); ExtractTemporaryFile('PackZIP.exe'); #endif ExtractTemporaryFile('English.ini'); Comps1:=0; Comps2:=0; Comps3:=0; #ifdef Components TmpValue:=1; if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; TmpValue:=TmpValue*2; if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; TmpValue:=TmpValue*2; if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; TmpValue:=TmpValue*2; if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; // ..... // см. справку #endif #ifdef precomp PCFVer:={#precomp}; #else PCFVer:=0; #endif Error:=true; if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin repeat // ChangeLanguage('English'); if not SrepInit('',512,0) then break; if not PrecompInit('',128,PCFVer) then break; if not FileSearchInit(true) then break; if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; // далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами) (* if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break; if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\CODMW2.7z'), ExpandConstant('{app}\data1'), false, '') then break; if not ISRarExtract ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break; if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break; if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'), ExpandConstant('{app}\data.7z'), true) then break; if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'), ExpandConstant('{app}\out.dat'), false) then break; if not ISPackZIP ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break; if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break; if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc') then break; // распаковка группы файлов посредством внешнего приложения FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1); ExecError:=false; while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin InFilePath:=ISGetName(0); OutFilePath:=ISGetName(1); OutFileName:=ISGetName(2); ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false); end; ISFindFree(FindHandle1); if ExecError then break; *) Error:=false; until true; ISDoneStop; end; HideControls; end; if (CurStep=ssPostInstall) and Error then begin Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false); end; end; procedure DeinitializeSetup; begin if Enabled then gdipShutdown; #ifdef Slides DeinitializeSlideShow; KillTimer(0, TimerID); #endif end; |