Shegorat
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору [Setup] AppId={{B4866999-9FF1-4780-A2E9-A952A5E7BBCA} AppName=[Prototype] AppVerName=[Prototype] AppPublisher=Activision AppVersion=1.0 AppSupportURL=http://activision.custhelp.com/ DefaultDirName={pf}\Prototype OutputDir=D:\Репаки\Prototype DefaultGroupName=Activision\Radical Entertainment\Prototype UninstallFilesDir={app}\Uninstall Compression=lzma/ultra64 InternalCompressLevel=ultra64 SolidCompression=true DiskSpanning=yes SlicesPerDisk=3 DiskSliceSize=1100000000 DisableProgramGroupPage=true DisableReadyPage=true SetupIconFile=D:\Для InstallShield\Prototype\Icon.ico UninstallDisplayIcon={app}\prototypef.exe, 0 UninstallDisplayName=Prototype(TM) [Languages] Name: RUS; MessagesFile: compiler:Languages\Russian.isl [Icons] Name: "{group}\Техническая поддержка\Сайт технической поддержки"; Filename: http://www.activision.com/support; WorkingDir: "{app}"; Check: GroupIcons Name: "{group}\Техническая поддержка\Диагностика DirectX"; Filename: "{sys}\dxdiag.exe"; WorkingDir: "{sys}"; Check: GroupIcons Name: "{group}\Техническая поддержка\Сведения о системе"; Filename: "{pf}\Common Files\Microsoft Shared\MSInfo\msinfo32.exe"; Check: GroupIcons Name: "{group}\Запустить игру"; Filename: "{app}\prototypef.exe"; WorkingDir: "{app}"; Check: GroupIcons Name: "{group}\Сайт компании Activision"; Filename: http://www.activision.com; WorkingDir: "{app}"; Check: GroupIcons Name: "{group}\Сайт компании Radical Entertainment"; Filename: http://www.radical.ca/; WorkingDir: "{app}"; Check: GroupIcons Name: "{group}\Файл Readme"; Filename: {app}\Readme.htm; WorkingDir: {app}; Check: GroupIcons Name: "{group}\Удалить игру"; Filename: {app}\Uninstall\unins000; WorkingDir: {app}; Check: GroupIcons Name: "{userdesktop}\Prototype"; Filename: {app}\prototypef.exe; WorkingDir: {app}; Check: CreateIcons [Files] Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy Source: Vista.cjstyles; DestDir: {tmp}; Flags: dontcopy Source: get_hw_caps.dll; Flags: dontcopy Source: 1.bmp; DestDir: {tmp}; Flags: dontcopy Source: unarc.dll; DestDir: {tmp}; Flags: dontcopy deleteafterinstall Source: InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy Source: D:\Prototype\*; DestDir: {app}; BeforeInstall: FilenameExt(); Flags: ignoreversion recursesubdirs createallsubdirs [Registry] Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: InstallPath; ValueData: {app}; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: Path; ValueData: {app}; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: InstallDrive; ValueData: {src}; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: LanguageCode; ValueData: ENU; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: FE_Language; ValueData: 69; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: LCID; ValueData: 1033; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: StartMenuFolder; ValueData: {group}; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: Version; ValueData: 1.0; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: IntVersion; ValueData: 26.0; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: EXEString; ValueData: {app}\Prototypef.exe; Flags: uninsdeletevalue uninsdeletekeyifempty Root: HKLM; SubKey: SOFTWARE\Activision\Prototype; ValueType: string; ValueName: InstallExePath; ValueData: {app}\Prototypef.exe; Flags: uninsdeletevalue uninsdeletekeyifempty [Run] Filename: "{src}\DirectX\DXSETUP.exe"; Parameters: "\silent"; StatusMsg: ExpandConstant('{cm:UP}'); Check: InstallDirectX Filename: "{src}\Redist\vcredist_x86.exe"; Parameters: "\q"; StatusMsg: "Идет установка Microsoft Visual C++ Redistibutable"; WorkingDir: "{src}\Redist"; Check: InstallRedist [CustomMessages] RUS.BUT=Установить RUS.SPACE=Доступно места на диске: RUS.SPACE1=Требуется места на диске: RUS.DRT=Обновить DirectX RUS.UP=Идет обновление DirectX... RUS.ArcBreak=Установка прервана! RUS.ExtractedInfo=Распаковано %1 Мб из %2 Мб RUS.ArcInfo=Архив: %1 из %2 RUS.ArcTitle=Распаковка архивов FreeArc RUS.ArcError=Распаковщик FreeArc вернул код ошибки: %1 RUS.ArcFail=Распаковка не завершена! RUS.AllProgress=Общий прогресс распаковки: %1%% RUS.ArcBroken=Возможно, архив %1 повреждён%nили недостаточно места на диске назначения. RUS.Extracting=Распаковывается: %1 RUS.taskbar=%1%%, жди %2 RUS.remains=Осталось ждать %1 RUS.LongTime=вечно RUS.ending=завершение RUS.hour= часов RUS.min= мин RUS.sec= сек [Code] const NeedVideo= 127000000; //Видеопамять Byte NeedRAM= 1024; //Оперативная память Mb NeedProcessor= 1800; //Процессор, частота Mg NeedMemory= 1247; //Файл подкачки Mb //Requirements //FreeArc Archives = '{src}\*.arc'; // укажите расположение архивов FreeArc; для внешних файлов строку в [Files] добавлять необязательно totalSize = 200; // укажите общий объем распакованных файлов в Mb PM_REMOVE = 1; CP_ACP = 0; CP_UTF8 = 65001; type #ifdef UNICODE ; если у вас ошибка на этой строке, то установите препроцессор или исправьте скрипт для вашей версии Inno Setup #define A "W" #else #define A "A" ; точка входа в SetWindowText, {#A} меняется на A или W в зависимости от версии PAnsiChar = PChar; // Required for Inno Setup 5.3.0 and higher. (требуется для Inno Setup версии 5.3.0 и ниже) #endif #if Ver < 84018176 AnsiString = String; // There is no need for this line in Inno Setup 5.2.4 and above (для Inno Setup версий 5.2.4 и выше эта строка не нужна) #endif TMyMsg = record hwnd: HWND; message: UINT; wParam: Longint; lParam: Longint; time: DWORD; pt: TPoint; end; TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer; TArc = record Path: string; Size: Extended; end; var DirectX, Redist, Icons, Group, RunProgram: TCheckBox; SelectDirLabel, SelectDirLabelBrowse, RunProgramLabel: TLabel; IconsLabel, GroupLabel, RedistLabel, DirectXLabel: TLabel; PageNameLabel, PageNameLabel1, PageNameLabel2, PageNameLabel3, PageNameLabel4, PageNameLabel5, PageNameLabel6, PageNameLabel7: TLabel; PageDescriptionLabel, PageDescriptionLabel1, PageDescriptionLabel2, PageDescriptionLabel3, PageDescriptionLabel4, PageDescriptionLabel5, PageDescriptionLabel6, PageDescriptionLabel7: TLabel; StatusLabel, FilenameLabel, NeedSpaceLabel,FreeSpaceLabel: TLabel; WelcomeLabel1, WelcomeLabel2,FinishedLabel, FinishedHeadingLabel: TLabel; SelectStartMenuFolderLabel, SelectStartMenuFolderBrowseLabel, ReadyLabel, NoIconsLabel: TLabel; LicenseLabel1, LicenseAcceptedLabel, LicenseNotAcceptedLabel: Tlabel; InfoBeforeClickLabel, InfoAfterClickLabel: TLabel; NeedSize:Integer; FreeMB, TotalMB: Cardinal; BmpFile: TBitmapImage; SystemPequirementPage: TWizardPage; RequirementLabel1,RequirementLabel2:TLabel; ExtractFile, lblExtractFileName: TLabel; btnCancelUnpacking: TButton; CancelCode, n, UnPackError, StartInstall: Integer; Arcs: array of TArc; msgError: string; lastMb, baseMb: Integer; LastTimerEvent: DWORD; PageID,ResultCode: Integer; function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall'; function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall'; function GetVideoCardName(): PChar; external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall'; function GetSoundCardName(): PChar; external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall'; function DetectHardware(): Integer; external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall'; function GetHardDriveFreeSpace(hdd: integer): Integer; external 'hwc_GetHardDriveFreeSpace@files:get_hw_caps.dll stdcall'; function GetHardDriveName(hdd: integer): PChar; external 'hwc_GetHardDriveName@files:get_hw_caps.dll stdcall'; function GetHardDriveTotalSpace(hdd: integer): Integer; external 'hwc_GetHardDriveTotalSpace@files:get_hw_caps.dll stdcall'; function GetHardDrivesCount(): Integer; external 'hwc_GetHardDrivesCount@files:get_hw_caps.dll stdcall'; function GetSoundCards(): Integer; external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall'; function GetSystemPage(): Integer; external 'hwc_GetSystemPage@files:get_hw_caps.dll stdcall'; function GetSystemPhys(): Integer; external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall'; function GetVidMemLocal(): Integer; external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall'; function GetVidMemNonLocal(): Integer; external 'hwc_GetVidMemNonLocal@files:get_hw_caps.dll stdcall'; function GetVideoCardDev(): Integer; external 'hwc_GetVideoCardDev@files:get_hw_caps.dll stdcall'; function GetVideoCardVen(): Integer; external 'hwc_GetVideoCardVen@files:get_hw_caps.dll stdcall'; //FreeArc Function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: string; cbMultiByte: integer; lpWideCharStr: string; cchWideChar: integer): longint; external 'MultiByteToWideChar@kernel32.dll stdcall'; Function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: integer; lpMultiByteStr: string; cbMultiByte: integer; lpDefaultChar: integer; lpUsedDefaultChar: integer): longint; external 'WideCharToMultiByte@kernel32.dll stdcall'; function PeekMessage(var lpMsg: TMyMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall'; function TranslateMessage(const lpMsg: TMyMsg): BOOL; external 'TranslateMessage@user32.dll stdcall'; function DispatchMessage(const lpMsg: TMyMsg): Longint; external 'DispatchMessageA@user32.dll stdcall'; Function OemToChar(lpszSrc, lpszDst: AnsiString): longint; external 'OemToCharA@user32.dll stdcall'; function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload'; function SetWindowText(hWnd: Longint; lpString: String): Longint; external 'SetWindowText{#A}@user32 stdcall delayload'; function GetTickCount: DWord; external 'GetTickCount@kernel32'; function WrapFreeArcCallback (callback: TFreeArcCallback; paramcount: integer):longword; external 'wrapcallback@files:innocallback.dll stdcall'; function FreeArcExtract (callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; external 'FreeArcExtract@files:unarc.dll cdecl'; procedure AppProcessMessage; var Msg: TMyMsg; begin while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end; // Перевод числа в строку с точностью 3 знака (%.3n) с округлением дробной части, если она есть Function NumToStr(Float: Extended): String; Begin Result:= Format('%.3n', [Float]); StringChange(Result, ',', '.'); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Length(Result) > 1) do SetLength(Result, Length(Result)-1); End; function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End; Function Size64(Hi, Lo: Integer): Extended; Begin Result:= Lo; if Lo<0 then Result:= Result + $7FFFFFFF + $7FFFFFFF + 2; for Hi:= Hi-1 Downto 0 do Result:= Result + $7FFFFFFF + $7FFFFFFF + 2; End; // OnClick event function for btnCancel procedure btnCancelUnpackingOnClick(Sender: TObject); begin if MsgBox( SetupMessage( msgExitSetupMessage ), mbInformation, MB_YESNO ) = IDYES then CancelCode:= -127; end; // Scans the specified folders for archives and add them to list function FindArcs(dir: string): Extended; var FSR: TFindRec; Begin Result:= 0; if FindFirst(ExpandConstant(dir), FSR) then begin try repeat // Skip everything but the folders if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY > 0 then CONTINUE; n:= GetArrayLength(Arcs); // Expand the folder list SetArrayLength(Arcs, n +1); Arcs[n].Path:= ExtractFilePath(ExpandConstant(dir)) + FSR.Name; Arcs[n].Size:= Size64(FSR.SizeHigh, FSR.SizeLow); Result:= Result + Arcs[n].Size; until not FindNext(FSR); finally FindClose(FSR); end; end; End; // Converts OEM encoded string into ANSI // Преобразует OEM строку в ANSI кодировку function OemToAnsiStr( strSource: AnsiString): AnsiString; var nRet : longint; begin SetLength( Result, Length( strSource ) ); nRet:= OemToChar( strSource, Result ); end; // Converts ANSI encoded string into UTF-8 // Преобразует строку из ANSI в UTF-8 кодировку function AnsiToUtf8( strSource: string ): string; var nRet : integer; WideCharBuf: string; MultiByteBuf: string; begin strSource:= strSource + chr(0); SetLength( WideCharBuf, Length( strSource ) * 2 ); SetLength( MultiByteBuf, Length( strSource ) * 2 ); nRet:= MultiByteToWideChar( CP_ACP, 0, strSource, -1, WideCharBuf, Length(WideCharBuf) ); nRet:= WideCharToMultiByte( CP_UTF8, 0, WideCharBuf, -1, MultiByteBuf, Length(MultiByteBuf), 0, 0); Result:= MultiByteBuf; end; // Sets the TaskBar title Procedure SetTaskBarTitle(Title: String); var h: Integer; Begin h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title); End; // Converts milliseconds to human-readable time // Конвертирует милисекунды в человеко-читаемое изображение времени Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String; Begin if detail {hh:mm:ss format} then Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) else if Ticks/3600 >= 1000 {more than hour} then Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m else if Ticks/60 >= 1000 {1..60 minutes} then Result:= IntToStr(Ticks/60000) +m+' '+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) +s else Result:= IntToStr(Ticks/1000) +s {less than one minute} End; // The main callback function for unpacking FreeArc archives function FreeArcCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer; var percents, Remaining: Integer; s: String; begin if GetTickCount - LastTimerEvent > 1000 then begin // This code will be executed once each 1000 ms (этот код будет выполняться раз в 1000 миллисекунд) // .... // End of code executed by timer LastTimerEvent := LastTimerEvent+1000; end; if string(what)='filename' then begin // Update FileName label lblExtractFileName.Caption:= FmtMessage( cm( 'Extracting' ), [OemToAnsiStr( str )] ) end else if (string(what)='written') and (totalSize>0) and (Mb>lastMb) then begin // Assign to Mb *total* amount of data extracted to the moment from all archives lastMb := Mb; Mb := baseMb+Mb; // Update progress bar WizardForm.ProgressGauge.Position:= Mb; // Show how much megabytes/archives were processed up to the moment percents:= (Mb*1000) div totalSize; s := FmtMessage(cm('ExtractedInfo'), [IntToStr(Mb), IntToStr(totalSize)]); if GetArrayLength(Arcs)>1 then s := s + '. '+FmtMessage(cm('ArcInfo'), [IntToStr(n+1), IntToStr(GetArrayLength(Arcs))]) ExtractFile.Caption := s // Calculate and show current percents percents:= (Mb*1000) div totalSize; s:= FmtMessage(cm('AllProgress'), [Format('%.1n', [Abs(percents/10)])]); if Mb > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((totalSize - Mb)/Mb)) else Remaining:= 0; if Remaining = 0 then SetTaskBarTitle(cm('ending')) else begin s:= s + '. '+FmtMessage(cm('remains'), [TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false)]) SetTaskBarTitle(FmtMessage(cm('taskbar'), [IntToStr(percents/10), TicksToTime(Remaining, 'h', 'm', 's', false)])) end; WizardForm.FileNameLabel.Caption := s end; AppProcessMessage; Result:= CancelCode; end; // Extracts all found archives function UnPack(Archives: string): Integer; var allSize: Extended; callback: longword; FreeMB, TotalMB: Cardinal; begin // Display 'Extracting FreeArc archive' lblExtractFileName.Caption:= ''; lblExtractFileName.Show; ExtractFile.caption:= cm('ArcTitle'); ExtractFile.Show; // Show the 'Cancel unpacking' button and set it as default button btnCancelUnpacking.Caption:= WizardForm.CancelButton.Caption; btnCancelUnpacking.Show; WizardForm.ActiveControl:= btnCancelUnpacking; WizardForm.ProgressGauge.Position:= 0; WizardForm.ProgressGauge.Max:= totalSize; // Get the size of all archives allSize:= FindArcs(Archives); // Other initializations callback:= WrapFreeArcCallback(@FreeArcCallback,4); //FreeArcCallback has 4 arguments StartInstall:= GetTickCount; {время начала распаковки} LastTimerEvent:= GetTickCount; baseMb:= 0 for n:= 0 to GetArrayLength(Arcs) -1 do begin lastMb := 0 CancelCode:= 0; AppProcessMessage; try // Pass the specified arguments to 'unarc.dll' Result:= FreeArcExtract (callback, 'x', '-o+', '-dp' + AnsiToUtf8( ExpandConstant('{app}') ), '--', AnsiToUtf8(Arcs[n].Path), '', '', '', '', ''); if CancelCode < 0 then Result:= CancelCode; except Result:= -63; // ArcFail end; baseMb:= baseMb+lastMb // Error occured if Result <> 0 then begin msgError:= FmtMessage(cm('ArcError'), [IntToStr(Result)]); GetSpaceOnDisk(ExtractFileDrive(ExpandConstant('{app}')), True, FreeMB, TotalMB); case Result of -1: if FreeMB < 32 {Мб на диске} then msgError:= SetupMessage(msgDiskSpaceWarningTitle) else msgError:= msgError + #13#10 + FmtMessage(cm('ArcBroken'), [ExtractFileName(Arcs[n].Path)]); -127: msgError:= cm('ArcBreak'); //Cancel button -63: msgError:= cm('ArcFail'); end; // MsgBox(msgError, mbInformation, MB_OK); //сообщение показывается на странице завершения Log(msgError); Break; //прервать цикл распаковки end; end; // Hide labels and button WizardForm.FileNameLabel.Caption:= ''; lblExtractFileName.Hide; ExtractFile.Hide; btnCancelUnpacking.Hide; end; //FreeArc function DelSp(const s:string):string;// функция удаления пробелов в начале строки var c, i: integer; stt, st, st1: string; begin c := 0; st := s; for i := 1 to Length(st) do begin stt := copy(st, i, 1); if (stt = ' ') and (c >= 1) then begin st1 := st1; c := c + 1; end else if (stt = ' ') and (c = 0) then begin c := c + 1; st1 := st1 + stt; end else if (stt <> ' ') then begin c := 0; st1 := st1 + stt; end end; Result:= st1; end; function CheckSystemPage(PreviousPageId: Integer): Integer; var ProcessorName:string; Processor,VideoCardPanel,AudioCardPanel,RAMPanel,PageFilePanel: TPanel; ProcessorNamePanel,VideoCardNamePanel,AudioCardNamePanel,RAMTotalPanel,PageFileTotalPanel: TPanel; ProcessorMHZ: Cardinal; VidRam:integer; begin RegQueryStringValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','ProcessorNameString', ProcessorName); RegQueryDWordValue(HKLM, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0','~MHz', ProcessorMHZ); GetVidMemLocal; GetSoundCards; SystemPequirementPage := CreateCustomPage(PreviousPageId,'Апаратное Обеспечение','Программа установки обнаружила следуюшие необходимые компоненты'); Processor := TPanel.Create(SystemPequirementPage); with Processor do begin Parent := SystemPequirementPage.Surface; Caption := ' Процессор'; Left := ScaleX(40); Top := ScaleY(102); Font.Color:= clBlack; alignment:=taLeftJustify; Width := ScaleX(121); Height := ScaleY(25); BevelInner := bvLowered; TabOrder := 0; end; ProcessorNamePanel := TPanel.Create(SystemPequirementPage); with ProcessorNamePanel do begin Parent := SystemPequirementPage.Surface; Caption :=DelSP(ProcessorName)+' '+IntToStr(ProcessorMHZ)+'MHz' ; //новое обработанное значение строки // Caption :=ProcessorName+' '+IntToStr(ProcessorMHZ)+'MHz' ; Left := ScaleX(168); Top := ScaleY(102); Font.Color:= clBlack; alignment:=taLeftJustify; Width := ScaleX(281); Height := ScaleY(25); BevelInner := bvLowered; Color :=$ccffcc; TabOrder := 1; end; if ProcessorMHZ<NeedProcessor then begin ProcessorNamePanel.Color:=clRed; RequirementLabel1.Caption:='Не все компоненты удовлетворяют требованиям игры.'; end; VideoCardPanel:=TPanel.Create(SystemPequirementPage); with VideoCardPanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' Видеоадаптер'; Left:=ScaleX(40); Font.Color:= clBlack; alignment:=taLeftJustify; Top:=Processor.Top+27; Width:=ScaleX(121); Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=0; end; VideoCardNamePanel:=TPanel.Create(SystemPequirementPage); with VideoCardNamePanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' '+GetVideoCardName; //+' ОЗУ-'+inttostr(round(GetVidMemLocal/1000000))+' МБ'; //Caption:=' ОЗУ-'+inttostr(GetVidMemLocal)+' МБ'; VidrAM:= GetVidMemLocal/1000000; if VidRam>127 then begin if VidRam<200 then Caption:=Caption+' 128 МB' else if VidRam<300 then Caption:=Caption+' 256 МB' else if VidRam<400 then Caption:=Caption+' 384 МB' else if VidRam<600 then Caption:=Caption+' 512 МB' else if VidRam<700 then Caption:=Caption+' 678 МB' else if VidRam<800 then Caption:=Caption+' 756 МB' else if VidRam<1000 then Caption:=Caption+' 884 МB' else if VidRam<1100 then Caption:=Caption+' 1024 МB' else if VidRam<1200 then Caption:=Caption+' 1152 МB' else if VidRam<1300 then Caption:=Caption+' 1280 МB'; end; Left:=ScaleX(168); Top:=VideoCardPanel.Top; Font.Color:= clBlack; alignment:=taLeftJustify; Width:=ScaleX(281); Height:=ScaleY(25); BevelInner:=bvLowered; Color :=$ccffcc; TabOrder:=1; end; if GetVidMemLocal<NeedVideo then //128MB begin RequirementLabel1.Caption:='Не все компоненты удовлетворяют требованиям игры.'; VideoCardNamePanel.Color:=clRed; end; AudioCardPanel:=TPanel.Create(SystemPequirementPage); with AudioCardPanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' Звуковая карта'; Left:=ScaleX(40); Top:=VideoCardPanel.Top+27; Font.Color:= clBlack; alignment:=taLeftJustify; Width:=ScaleX(121); Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=0; end; AudioCardNamePanel:=TPanel.Create(SystemPequirementPage); with AudioCardNamePanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' '+GetSoundCardName; Left:=ScaleX(168); Font.Color:= clBlack; alignment:=taLeftJustify; Top:=AudioCardPanel.Top; Width:=ScaleX(281); Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=1; Color :=$ccffcc; end; if GetSoundCards=0 then begin RequirementLabel1.Caption:='Не все компоненты удовлетворяют требованиям игры.'; AudioCardNamePanel.Color:=clRed; end; RAMPanel:=TPanel.Create(SystemPequirementPage); with RAMPanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' ОЗУ' Left:=40; Top:=AudioCardPanel.Top+27; Font.Color:= clBlack; alignment:=taLeftJustify; Width:=ScaleX(121); Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=0; end; RAMTotalPanel:=TPanel.Create(SystemPequirementPage); with RAMTotalPanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' '+IntToStr(GetSystemPhys+1) +' MB' Left:=AudioCardNamePanel.Left; Top:=RAMPanel.Top; Font.Color:= clBlack; alignment:=taLeftJustify; Width:=AudioCardNamePanel.Width; Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=1; Color :=$ccffcc; end; if GetSystemPhys+1<NeedRAM then begin RAMTotalPanel.Color:=clRed; RequirementLabel1.Caption:='Не все компоненты удовлетворяют требованиям игры.'; end; PageFilePanel:=TPanel.Create(SystemPequirementPage); with PageFilePanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' Файл подкачки'; alignment:=taLeftJustify; Left:=40; Top:=RAMPanel.Top+27; Font.Color:= clBlack; Width:=RAMPanel.Width; Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=0; end; PageFileTotalPanel:=TPanel.Create(SystemPequirementPage); with PageFileTotalPanel do begin Parent:=SystemPequirementPage.Surface; Caption:=' '+IntToStr(GetSystemPage)+' MB'; Left:=RAMTotalPanel.Left; Top:=PageFilePanel.Top; Font.Color:= clBlack; alignment:=taLeftJustify; Width:=RAMTotalPanel.Width; Height:=ScaleY(25); BevelInner:=bvLowered; TabOrder:=1; Color :=$ccffcc; end; if GetSystemPage<NeedMemory then begin PageFileTotalPanel.Color:=clRed; RequirementLabel1.Caption:='Не все компоненты удовлетворяют требованиям игры.'; end; Result := SystemPequirementPage.ID; end; function InstallDirectX: Boolean; begin Result:= DirectX.Checked; end; function InstallRedist: Boolean; begin Result:=Redist.Checked; end; function CreateIcons: Boolean; begin Result:=Icons.Checked; end; function GroupIcons: Boolean; begin Result:=Group.Checked; end; function Run: Boolean; begin Result:=RunProgram.Checked; end; // задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox procedure RedistOnClick(Sender: TObject); begin if Redist.Checked = False then Redist.Checked:= True else Redist.Checked:= False; end; procedure DirectXLabelOnClick(Sender: TObject); begin if DirectX.Checked = False then DirectX.Checked:= True else DirectX.Checked:= False; end; procedure IconsOnClick(Sender: TObject); begin if Icons.Checked = False then Icons.Checked:= True else Icons.Checked:= False; end; procedure GroupOnClick(Sender: TObject); begin if Group.Checked = False then Group.Checked:= True else Group.Checked:= False; end; procedure RunProgramOnClick(Sender: TObject); begin if RunProgram.Checked = False then RunProgram.Checked:= True else RunProgram.Checked:= False; end; Procedure NoIconsLabelOnClick (Sender: TObject); begin WizardForm.NoIconsCheck.Checked:=Not(WizardForm.NoIconsCheck.Checked) end; procedure LicenceAcceptedRadioOnClick(Sender: TObject); begin WizardForm.NextButton.Enabled:=True end; procedure LicenceNotAcceptedRadioOnClick(Sender: TObject); begin WizardForm.NextButton.Enabled:=False end; Procedure YesRadioOnClick (Sender: TObject); begin WizardForm.LicenseAcceptedRadio.Checked:=True end; Procedure NoRadioOnClick (Sender: TObject); begin WizardForm.LicenseNotAcceptedRadio.Checked:=True end; // задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox //Свободное место procedure GetFreeSpaceCaption(Sender: TObject); var Path: String; begin Path := ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if FreeMB > 1024 then FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ IntToStr(FreeMB)+ ' MB'; if FreeMB < NeedSize then WizardForm.NextButton.Enabled := False else WizardForm.NextButton.Enabled := True; end; procedure GetNeedSpaceCaption; begin if NeedSize > 1024 then NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ IntToStr(NeedSize)+ ' MB'; end; //Свободное место procedure FilenameExt(); begin FilenameLabel.Caption:= ExpandConstant(ExtractFileDir(CurrentFilename)) + '\' + ExtractFilename(CurrentFilename); end; //Загрузка скина procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall'; procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall'; function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall'; function InitializeSetup(): Boolean; begin ExtractTemporaryFile('Vista.cjstyles'); LoadSkin(ExpandConstant('{tmp}\Vista.cjstyles'), ''); Result := True; end; procedure DeinitializeSetup(); begin ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); UnloadSkin(); if (PageID=wpFinished) and (RunProgram.Checked) then Exec(ExpandConstant('{app}\prototypef.exe'), '', '', SW_SHOWNORMAL, ewNoWait, ResultCode); end; //Загрузка скина procedure InitializeWizard(); begin ExtractTemporaryFile('1.bmp'); CheckSystemPage(wpLicense); NeedSize:= 7980; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.WelcomePage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.LicensePage; BmpFile:= TBitmapImage.Create(SystemPequirementPage); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= SystemPequirementPage.Surface; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.InfoBeforePage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.SelectDirPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.InstallingPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.InfoAfterPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.FinishedPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.SelectProgramGroupPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 497, 360); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.ReadyPage; with WizardForm do begin PageNameLabel.Hide; PageDescriptionLabel.Hide; WelcomeLabel1.Hide; WelcomeLabel2.Hide; DiskSpaceLabel.Hide; SelectDirBitmapImage.Hide; SelectDirBrowseLabel.Hide; SelectDirLabel.Hide; FinishedHeadingLabel.Hide; FinishedLabel.Hide; MainPanel.Hide FilenameLabel.Hide; StatusLabel.Hide; SelectStartMenuFolderLabel.Hide; SelectStartMenuFolderBrowseLabel.Hide; ReadyLabel.Hide; LicenseLabel1.Hide; InfoBeforeClickLabel.Hide; InfoAfterClickLabel.Hide; end; with WizardForm do begin DirBrowseButton.Left:= DirBrowseButton.Left + ScaleX(40); DirBrowseButton.Top:= DirBrowseButton.Top + ScaleY(72); DirEdit.Left:= DirEdit.Left + ScaleX(40); DirEdit.Top:= DirEdit.Top + ScaleY(72); GroupBrowseButton.Left:= GroupBrowseButton.Left + ScaleX(40); GroupBrowseButton.Top:= GroupBrowseButton.Top + ScaleY(72); GroupEdit.Left:= GroupEdit.Left + ScaleX(40); GroupEdit.Top:= GroupEdit.Top + ScaleX(72); GroupEdit.Color:= ClBlack NextButton.BringToFront; BackButton.BringToFront; CancelButton.BringToFront; Font.Style:=[]; Font.Name:= 'MS Sans Serif'; DirEdit.Color:=clBlack; Font.Color:=clWhite; ProgressGauge.Top:=ScaleY(120); ProgressGauge.Left:=ScaleX(20); ProgressGauge.Width:=ScaleX(457); ReadyMemo.Left:=ScaleX(40); ReadyMemo.Top:= WizardForm.ReadyMemo.Top + ScaleY(72) ReadyMemo.Font.Color:= clBlack; ReadyMemo.ScrollBars:= ssVertical; //ssNone end; with WizardForm do begin InnerNotebook.Left := ScaleX(0); InnerNotebook.Top := ScaleY(0); InnerNotebook.Width := ScaleX(497); InnerNotebook.Height := ScaleY(360); OuterNotebook.Left := ScaleX(0); OuterNotebook.Top := ScaleY(0); OuterNotebook.Width := ScaleX(497); OuterNotebook.Height := ScaleY(360); end; WelcomeLabel1:= TLabel.Create(WizardForm); with WelcomeLabel1 do begin Left:= ScaleX(176); Top:= ScaleY(66); Width:= ScaleX(301); Height:= ScaleY(71); AutoSize:= false; Transparent:= true; WordWrap:= true; Font.Size:= 14; Font.Color:=ClWhite Font.Style := [fsBold] Parent:= WizardForm.WelcomePage; Caption:= WizardForm.WelcomeLabel1.Caption; end; //WelcomePage WelcomeLabel2:=TLabel.Create(WizardForm); with WelcomeLabel2 do begin Top:= ScaleY(136); Left:= ScaleX(176); Width:= ScaleX(301); Height:= ScaleY(300); AutoSize:= false; WordWrap:= true; Transparent:= true; Parent:= WizardForm.WelcomePage; Caption:= WizardForm.WelcomeLabel2.Caption; end; //WelcomePage //licensePage LicenseLabel1:=TLabel.Create(WizardForm) with LicenseLabel1 do begin Left:=40 Top:=70 Width:=465 Height:=28 AutoSize:=False WordWrap:=True Transparent:=True Caption:=WizardForm.LicenseLabel1.Caption Parent:=WizardForm.LicensePage end; WizardForm.LicenseMemo.Left:=40 WizardForm.LicenseMemo.Top:=108 WizardForm.LicenseMemo.Parent:=WizardForm.LicensePage WizardForm.LicenseAcceptedRadio.Left:=40 WizardForm.LicenseAcceptedRadio.Top:=265 WizardForm.LicenseAcceptedRadio.Width:=14 WizardForm.LicenseAcceptedRadio.Height:=14 WizardForm.LicenseAcceptedRadio.Color:=clBlack WizardForm.LicenseAcceptedRadio.Parent:=WizardForm.LicensePage LicenseAcceptedLabel:=TLabel.Create(WizardForm) with LicenseAcceptedLabel do begin Left:=56 Top:=265 Transparent:=True Caption:=WizardForm.LicenseAcceptedRadio.Caption Parent:=WizardForm.LicensePage OnClick:= @YesRadioOnClick end; WizardForm.LicenseNotAcceptedRadio.Left:=40 WizardForm.LicenseNotAcceptedRadio.Top:=285 WizardForm.LicenseNotAcceptedRadio.Width:=14 WizardForm.LicenseNotAcceptedRadio.Height:=14 WizardForm.LicenseNotAcceptedRadio.Color:=clBlack WizardForm.LicenseNotAcceptedRadio.Parent:=WizardForm.LicensePage LicenseNotAcceptedLabel:=TLabel.Create(WizardForm) with LicenseNotAcceptedLabel do begin Left:=56 Top:=285 Transparent:=True Caption:=WizardForm.LicenseNotAcceptedRadio.Caption Parent:=WizardForm.LicensePage; OnClick:= @NoRadioOnClick; end; PageNameLabel:= TLabel.Create(WizardForm); with PageNameLabel do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.LicensePage; end; PageDescriptionLabel:= TLabel.Create(WizardForm); with PageDescriptionLabel do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.LicensePage; end; //LicensePage //SystemRequirementPage RequirementLabel1:=TLabel.Create(SystemPequirementPage); with RequirementLabel1 do begin Parent:=SystemPequirementPage.Surface; Caption:='Все компоненты удовлетворяют требованиям игры.'; Left:=40; Top:=65; Height:=14 Width:=360 AutoSize:=False; Transparent:= true; WordWrap:= true; end; RequirementLabel2:=TLabel.Create(SystemPequirementPage); with RequirementLabel2 do begin Parent:=SystemPequirementPage.Surface; Caption:='Когда будете готовы продолжить установку, нажмите «Далее»' Left:=40; Top:=280; Height:=14 Width:=360 AutoSize:=False; Transparent:= true; WordWrap:= true; end; PageNameLabel1:= TLabel.Create(SystemPequirementPage); with PageNameLabel1 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= SystemPequirementPage.Surface; end; PageDescriptionLabel1:= TLabel.Create(SystemPequirementPage); with PageDescriptionLabel1 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= SystemPequirementPage.Surface; end; //SystemRequirementPage //InfoBeforePage InfoBeforeClickLabel:= TLabel.Create(WizardForm); with InfoBeforeClickLabel do begin Left:= ScaleX(40); Top:= ScaleY(70) Width:= WizardForm.InfoBeforeClickLabel.Width; Height:= WizardForm.InfoBeforeClickLabel.Height; Transparent:= true; AutoSize:= False; WordWrap:= true; Parent:= WizardForm.InfoBeforePage; Caption:= WizardForm.InfoBeforeClickLabel.Caption; end; WizardForm.InfoBeforeMemo.left:= ScaleX(40); WizardForm.InfoBeforeMemo.Top:= ScaleY(108); PageNameLabel2:= TLabel.Create(WizardForm); with PageNameLabel2 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.InfoBeforePage; end; PageDescriptionLabel2:= TLabel.Create(WizardForm); with PageDescriptionLabel2 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.InfoBeforePage; end; //InfoBeforePage //SelectDirPage SelectDirLabel:= TLabel.Create(WizardForm); with SelectDirLabel do begin Caption:= WizardForm.SelectDirLabel.Caption; Left:= ScaleX(40); Top:= WizardForm.SelectDirLabel.Top + ScaleY(62); Width:= WizardForm.SelectDirLabel.Width; Height:= WizardForm.SelectDirLabel.Height; Transparent := True; Parent:= WizardForm.SelectDirPage; end; SelectDirLabelBrowse:= TLabel.Create(WizardForm); with SelectDirLabelBrowse do begin Caption:= WizardForm.SelectDirBrowseLabel.Caption; Left:= ScaleX(40); Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(62); Width:= WizardForm.SelectDirBrowseLabel.Width; Height:= WizardForm.SelectDirBrowseLabel.Height; WordWrap:= True; Transparent:= True; Parent:= WizardForm.SelectDirPage; end; PageNameLabel3:= TLabel.Create(WizardForm); with PageNameLabel3 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.SelectDirPage; end; PageDescriptionLabel3:= TLabel.Create(WizardForm); with PageDescriptionLabel3 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.SelectDirPage; end; DirectX:= TCheckBox.Create(WizardForm); with DirectX do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left + 200; Top:= WizardForm.DirEdit.Top + 35; Width:= ScaleX(14); Height:= ScaleY(14); TabOrder:= 0; Checked:= False; end; DirectXLabel:= TLabel.Create(WizardForm); with DirectXLabel do begin Caption:= ExpandConstant('{cm:DRT}'); Left:= WizardForm.DirEdit.Left + 220; Top:= WizardForm.DirEdit.Top + 35; Width:= ScaleX(150); Height:= ScaleY(13); Transparent := True; Parent:= WizardForm.SelectDirPage; OnClick:= @DirectXLabelOnClick; end; Redist:= TCheckBox.Create(WizardForm); with Redist do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left + 200; Top:= WizardForm.DirEdit.Top + 70; Width:= ScaleX(14); Height:= ScaleY(14); TabOrder:= 1; Checked:= False; end; RedistLabel:= TLabel.Create(WizardForm); with RedistLabel do begin Caption:='Установить Microsoft Visual C++'; Left:= WizardForm.DirEdit.Left + 220; Top:= WizardForm.DirEdit.Top + 70; Width:= ScaleX(150); Height:= ScaleY(13); Transparent := True; Parent:= WizardForm.SelectDirPage; OnClick:= @RedistOnClick; end; Icons:= TCheckBox.Create(WizardForm); with Icons do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left; Top:= WizardForm.DirEdit.Top + 35; Width:= ScaleX(14); Height:= ScaleY(14); TabOrder:= 2; Checked:= False; end; IconsLabel:= TLabel.Create(WizardForm); with IconsLabel do begin Caption:='Создать ярлык на рабочем столе'; Left:= WizardForm.DirEdit.Left + 20; Top:= WizardForm.DirEdit.Top + 35; Width:= ScaleX(150); Height:= ScaleY(13); Transparent := True; Parent:= WizardForm.SelectDirPage; OnClick:= @IconsOnClick; end; Group:= TCheckBox.Create(WizardForm); with Group do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left; Top:= WizardForm.DirEdit.Top + 70; Width:= ScaleX(14); Height:= ScaleY(14); TabOrder:= 3; Checked:= False; end; GroupLabel:= TLabel.Create(WizardForm); with GroupLabel do begin Caption:='Создать ярлыки в меню "Пуск"'; Left:= WizardForm.DirEdit.Left + 20; Top:= WizardForm.DirEdit.Top + 70; Width:= ScaleX(150); Height:= ScaleY(13); Transparent := True; Parent:= WizardForm.SelectDirPage; OnClick:= @GroupOnClick; end; NeedSpaceLabel:= TLabel.Create(WizardForm); with NeedSpaceLabel do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left; Top:= ScaleY(262); Width:= ScaleX(209); Height:= ScaleY(13); Transparent:= True; end; FreeSpaceLabel:= TLabel.Create(WizardForm); with FreeSpaceLabel do begin Parent:= WizardForm.SelectDirPage; Left:= WizardForm.DirEdit.Left; Top:= ScaleY(280); Width:= ScaleX(209); Height:= ScaleY(13); Transparent:= True; end; WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption; WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0; //SelectDirPage //ProgrammGroupPage SelectStartMenuFolderLabel:=TLabel.Create(WizardForm) with SelectStartMenuFolderLabel do begin Left:= ScaleX(40); Top:= WizardForm.SelectDirLabel.Top + ScaleY(62); Width:= WizardForm.SelectDirBrowseLabel.Width; Height:= WizardForm.SelectDirBrowseLabel.Height; AutoSize:=False WordWrap:=True Transparent:=True Caption:=WizardForm.SelectStartMenuFolderLabel.Caption Parent:=WizardForm.SelectProgramGroupPage end; SelectStartMenuFolderBrowseLabel:=TLabel.Create(WizardForm) with SelectStartMenuFolderBrowseLabel do begin Left:= ScaleX(40); Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(62); Width:= WizardForm.SelectDirBrowseLabel.Width Height:= WizardForm.SelectDirBrowseLabel.Height AutoSize:=False WordWrap:=True Transparent:=True Caption:=WizardForm.SelectStartMenuFolderBrowseLabel.Caption Parent:=WizardForm.SelectProgramGroupPage end; WizardForm.NoIconsCheck.Left:=ScaleX(40); WizardForm.NoIconsCheck.Top:= WizardForm.DirEdit.Top + ScaleY(140) WizardForm.NoIconsCheck.Width:=13 WizardForm.NoIconsCheck.Height:=13 WizardForm.NoIconsCheck.Visible:=True WizardForm.NoIconsCheck.Parent:= WizardForm.SelectProgramGroupPage NoIconsLabel:=TLabel.Create(WizardForm) with NoIconsLabel do begin Left:=ScaleX(56); Top:= WizardForm.DirEdit.Top + ScaleY(140) Transparent:=True OnClick:= @NoIconsLabelOnClick Caption:=WizardForm.NoIconsCheck.Caption Parent:=WizardForm.SelectProgramGroupPage end; PageNameLabel4:= TLabel.Create(WizardForm); with PageNameLabel4 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.SelectProgramGroupPage; end; PageDescriptionLabel4:= TLabel.Create(WizardForm); with PageDescriptionLabel4 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.SelectProgramGroupPage; end; //ProgrammGroupPage //ReadyPage ReadyLabel:= TLabel.Create(WizardForm); with ReadyLabel do begin Left:= ScaleX(40); Top:= ScaleY(70); Width:= ScaleX(325); Height:= ScaleY(30); AutoSize:= False; Transparent:= true; Caption:= 'Нажмите «Установить», чтобы продолжить, или «Назад», если Вы хотите' + #10 + 'просмотреть или изменить опции установки.' Parent:= WizardForm.ReadyPage; end; PageNameLabel5:= TLabel.Create(WizardForm); with PageNameLabel5 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.ReadyPage; end; PageDescriptionLabel5:= TLabel.Create(WizardForm); with PageDescriptionLabel5 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.ReadyPage; end; //ReadyPage //InstallingPage StatusLabel:= TLabel.Create(WizardForm); with StatusLabel do begin Left:= ScaleX(20); Top:= ScaleY(80); Width:= WizardForm.StatusLabel.Width; Height:= WizardForm.StatusLabel.Height; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; Caption:= 'Распаковка файлов...' end; FilenameLabel:= TLabel.Create(WizardForm); with FilenameLabel do begin Left:= ScaleX(20); Top:= ScaleY(100); Width:= WizardForm.StatusLabel.Width; Height:= WizardForm.StatusLabel.Height; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; end; with WizardForm.ProgressGauge do begin // Create a label to show current FileName being extracted lblExtractFileName:= TLabel.Create(WizardForm); lblExtractFileName.parent:=WizardForm.InstallingPage; lblExtractFileName.autosize:=false; lblExtractFileName.Width:= Width; lblExtractFileName.Left:= ScaleX(20); lblExtractFileName.top:= ScaleY(100); lblExtractFileName.Caption:= ''; lblExtractFileName.Hide; lblExtractFileName.Transparent:= true; // Create a label to show percentage ExtractFile:= TLabel.Create(WizardForm); ExtractFile.parent:=WizardForm.InstallingPage; ExtractFile.autosize:=false; ExtractFile.Width:= Width; ExtractFile.top:=lblExtractFileName.Top + ScaleY(48); ExtractFile.Left:= ScaleX(20); ExtractFile.caption:= ''; ExtractFile.Hide; ExtractFile.Transparent:= true; end; // Create a 'Cancel unpacking' button and hide it for now. btnCancelUnpacking:=TButton.create(WizardForm); btnCancelUnpacking.Parent:= WizardForm; btnCancelUnpacking.SetBounds(WizardForm.CancelButton.Left, WizardForm.CancelButton.top, WizardForm.CancelButton.Width, WizardForm.CancelButton.Height); btnCancelUnpacking.OnClick:= @btnCancelUnpackingOnClick; btnCancelUnpacking.Hide; PageNameLabel6:= TLabel.Create(WizardForm); with PageNameLabel6 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.InstallingPage; end; PageDescriptionLabel6:= TLabel.Create(WizardForm); with PageDescriptionLabel6 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.InstallingPage; end; //InstallingPage //InfoAfterPage InfoAfterClickLabel:= TLabel.Create(WizardForm); with InfoAfterClickLabel do begin Left:= ScaleX(40); Top:= ScaleY(70) Width:= WizardForm.InfoAfterClickLabel.Width; Height:= WizardForm.InfoAfterClickLabel.Height; Transparent:= true; AutoSize:= False; WordWrap:= true; Parent:= WizardForm.InfoAfterPage; Caption:= WizardForm.InfoAfterClickLabel.Caption; end; WizardForm.InfoAfterMemo.left:= ScaleX(40); WizardForm.InfoAfterMemo.Top:= ScaleY(108); PageNameLabel7:= TLabel.Create(WizardForm); with PageNameLabel7 do begin Left:= WizardForm.PageNameLabel.Left; Top:= WizardForm.PageNameLabel.Top; Width:= ScaleX(300); Height:= ScaleY(14); AutoSize:= False; Font.Style:= [fsBold]; Font.Color:= ClWhite; Transparent := True; Parent:= WizardForm.InfoAfterPage; end; PageDescriptionLabel7:= TLabel.Create(WizardForm); with PageDescriptionLabel7 do begin Left:= WizardForm.PageDescriptionLabel.Left; Top:= WizardForm.PageDescriptionLabel.top; Width:= ScaleX(400); Height:= WizardForm.PageDescriptionLabel.Height; AutoSize:= False; Wordwrap:= True; Transparent := True; Parent:= WizardForm.InfoAfterPage; end; //InfoAfterPage //FinishedPage FinishedHeadingLabel:=TLabel.Create(WizardForm); with FinishedHeadingLabel do begin Top:= ScaleY(66); Left:= ScaleX(176); Width:= ScaleX(301); Height:= ScaleY(53); AutoSize:= false; WordWrap:= true; Font.Size:= 14; Font.Color:=ClWhite Font.Style := [fsBold] Transparent:= true; Parent:= WizardForm.FinishedPage; Caption:= WizardForm.FinishedHeadingLabel.Caption; end; FinishedLabel:= TLabel.Create(WizardForm); with FinishedLabel do begin Left:= ScaleX(176); Top:= ScaleY(136); Width:= ScaleX(301); Height:= ScaleY(54); AutoSize:= false; WordWrap:= true; Transparent:= true; Parent:= WizardForm.FinishedPage; Caption:= 'Игра [Prototype] установлена на Ваш компьютер.' + #10#13#10 + 'Нажмите «Завершить», чтобы выйти из программы' + #10 + 'установки.' end; RunProgram:= TCheckBox.Create(WizardForm); with RunProgram do begin Parent:= WizardForm.FinishedPage; Left:= ScaleX(176); Top:= ScaleY(200); Width:= ScaleX(14); Height:= ScaleY(14); TabOrder:= 4; Checked:= False; end; RunProgramLabel:= TLabel.Create(WizardForm); with RunProgramLabel do begin Caption:='Запустить Prototype'; Left:= ScaleX(196); Top:= ScaleY(200); Width:= ScaleX(150); Height:= ScaleY(13); Transparent := True; Parent:= WizardForm.FinishedPage; OnClick:= @RunProgramOnClick; end; //FinishedPage end; procedure CurPageChanged(CurPageID: Integer); begin PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel1.Caption:= 'Апаратное Обеспечение'; PageDescriptionLabel1.Caption:= 'Программа установки обнаружила следуюшие необходимые компоненты'; PageNameLabel2.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel2.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel3.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel3.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel4.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel4.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel5.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel5.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel6.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel6.Caption:= WizardForm.PageDescriptionLabel.Caption; PageNameLabel7.Caption:= WizardForm.PageNameLabel.Caption; PageDescriptionLabel7.Caption:= WizardForm.PageDescriptionLabel.Caption; PageID:=CurPageID; if CurPageID = wpSelectDir then begin GetNeedSpaceCaption; if FreeMB < NeedSize then WizardForm.NextButton.Enabled:=False; begin if CurPageID=wpInstalling then if CurPageID=wpFinished then begin WizardForm.Width:=497; WizardForm.Height:=358; WizardForm.Position:=poScreenCenter; end end; end; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssPostInstall then begin UnPackError:= UnPack(Archives) if UnPackError = 0 then SetTaskBarTitle(SetupMessage(msgSetupAppTitle)) else begin // Error occured, uninstall it then Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); //откат установки из-за ошибки unarc.dll SetTaskBarTitle(SetupMessage(msgErrorTitle)) WizardForm.Caption:= SetupMessage(msgErrorTitle) +' - '+ cm('ArcBreak') end; end; end; |