Advertisement
hpmbot149

Untitled

Jun 4th, 2016
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.08 KB | None | 0 0
  1. //----------This Installer Uses Inno Setup Unicode Version----------\\
  2. #define AppName "Grand Theft Auto IV"
  3. #define AppPublisher "Rockstar Games"
  4. #define AppVersion "1.0.7.0"
  5. #define AppExec "LaunchGTAIV.exe"
  6. #define AppURL "http://www.rockstargames.com/IV/"
  7. #define AppSize "15872"
  8. #define SetupName "GTA IV Setup"
  9. #define SetupOut "Output"
  10. #define PrecompVer "Inside"
  11.  
  12. [Setup]
  13. AppName={#AppName}
  14. AppPublisher={#AppPublisher}
  15. AppVersion={#AppVersion}
  16. AppComments={#AppName}
  17. DefaultDirName={pf}\{#AppPublisher}\{#AppName}
  18. DefaultGroupName=Rockstar Games
  19. OutputBaseFilename={#SetupName}
  20. OutputDir={#SetupOut}
  21. SetupIconFile=Style\Setup.ico
  22. WizardImageFile=Style\Background.bmp
  23. WizardSmallImageFile=Style\smallbitmap.bmp
  24.  
  25. [Icons]
  26. Name: {group}\Uninstall {#AppName}; Filename: {app}\{uninstallexe}; WorkingDir: {app}; Check: CheckError; IconFileName: {app}\GTAIV.ico
  27. Name: {group}\{#AppName}; Filename: {app}\{#AppExec}; WorkingDir: {app}; Check: CheckError; IconFileName: {app}\GTAIV.ico
  28. Name: {commondesktop}\{#AppName}; Filename: {app}\{#AppExec}; WorkingDir: {app}; Check: CheckError; IconFileName: {app}\GTAIV.ico
  29.  
  30. [Files]
  31. Source: Include\*.*; DestDir: {tmp}; Flags: dontcopy
  32. Source: Style\*.*; DestDir: {tmp}; Flags: dontcopy
  33.  
  34. [Messages]
  35. SetupWindowTitle=Welcome to Grand Theft Auto IV Setup Wizard
  36.  
  37. [CustomMessages]
  38. SoundCtrlButtonCaptionSoundOn=Music on
  39. SoundCtrlButtonCaptionSoundOff=Music off
  40.  
  41. [Languages]
  42. Name: eng; MessagesFile: compiler:Default.isl
  43.  
  44. [Components]
  45. Name: "directx"; Description: "Install DirectX"
  46. Name: "visualc"; Description: "Install Visual C++"
  47. Name: "nvidiaphysx"; Description: "Install Nvidia Physx"
  48. Name: "framework"; Description: "Install Framework"
  49.  
  50. [Tasks]
  51. Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
  52.  
  53. [UninstallDelete]
  54. Type: filesandordirs; Name: {app}
  55.  
  56. [Code]
  57. const
  58. BASS_SAMPLE_LOOP = 4;
  59. BASS_ACTIVE_STOPPED = 0;
  60. BASS_ACTIVE_PLAYING = 1;
  61. BASS_ACTIVE_STALLED = 2;
  62. BASS_ACTIVE_PAUSED = 3;
  63. BASS_UNICODE = $80000000;
  64. BASS_CONFIG_GVOL_STREAM = 5;
  65. const
  66. #ifndef UNICODE
  67. EncodingFlag = 0;
  68. #else
  69. EncodingFlag = BASS_UNICODE;
  70. #endif
  71. type
  72. HSTREAM = DWORD;
  73.  
  74. function BASS_Init(device: LongInt; freq, flags: DWORD;
  75. win: HWND; clsid: Cardinal): BOOL;
  76. external 'BASS_Init@files:bass.dll stdcall';
  77. function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  78. offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  79. external 'BASS_StreamCreateFile@files:bass.dll stdcall';
  80. function BASS_Start: BOOL;
  81. external 'BASS_Start@files:bass.dll stdcall';
  82. function BASS_Pause: BOOL;
  83. external 'BASS_Pause@files:bass.dll stdcall';
  84. function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  85. external 'BASS_ChannelPlay@files:bass.dll stdcall';
  86. function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  87. external 'BASS_SetConfig@files:bass.dll stdcall';
  88. function BASS_ChannelIsActive(handle: DWORD): DWORD;
  89. external 'BASS_ChannelIsActive@files:bass.dll stdcall';
  90. function BASS_Free: BOOL;
  91. external 'BASS_Free@files:bass.dll stdcall';
  92.  
  93. var
  94. SoundStream: HSTREAM;
  95. SoundCtrlButton: TNewButton;
  96.  
  97. procedure SoundCtrlButtonClick(Sender: TObject);
  98. begin
  99. case BASS_ChannelIsActive(SoundStream) of
  100. BASS_ACTIVE_PLAYING:
  101. begin
  102. if BASS_Pause then
  103. SoundCtrlButton.Caption :=
  104. ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOn}');
  105. end;
  106. BASS_ACTIVE_PAUSED:
  107. begin
  108. if BASS_Start then
  109. SoundCtrlButton.Caption :=
  110. ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOff}');
  111. end;
  112. end;
  113. end;
  114.  
  115. { RedesignWizardFormBegin } // Don't remove this line!
  116. // Don't modify this section. It is generated automatically.
  117. procedure RedesignWizardForm;
  118. begin
  119. with WizardForm.ProgressGauge do
  120. begin
  121. Height := ScaleY(13);
  122. end;
  123.  
  124. { ReservationBegin }
  125. // This part is for you. Add your specialized code here.
  126.  
  127. { ReservationEnd }
  128. end;
  129. // Don't modify this section. It is generated automatically.
  130. { RedesignWizardFormEnd } // Don't remove this line!
  131.  
  132.  
  133. type
  134. #ifdef UNICODE
  135. PChar = PAnsiChar;
  136. #endif
  137. const
  138. PCFonFLY=true;
  139. notPCFonFLY=false;
  140. var
  141. LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
  142. ISDoneProgressBar1: TNewProgressBar;
  143. MyCancelButton: TButton;
  144. ISDoneCancel:integer;
  145. ISDoneError:boolean;
  146. PCFVer:double;
  147.  
  148. type
  149. TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
  150.  
  151. function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';
  152.  
  153. 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';
  154. function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
  155. function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload';
  156. function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload';
  157. function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload';
  158. function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload';
  159. function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload';
  160. function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';
  161.  
  162. function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
  163. function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload';
  164. function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload';
  165. function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
  166. function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
  167. function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';
  168.  
  169. function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload';
  170. function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload';
  171. function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
  172. function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
  173. function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
  174. function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
  175. function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
  176. function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';
  177.  
  178. function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
  179. begin
  180. if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
  181. LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';
  182. LabelCurrFileName.Caption:=' Extracting File: '+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
  183. LabelTime1.Caption:=' Time Elapsed: '+TimeStr2;
  184. LabelTime2.Caption:='Time Remaining: '+TimeStr1;
  185. // LabelTime3.Caption:='Installing time:'+TimeStr3;
  186. Result := ISDoneCancel;
  187. end;
  188.  
  189. procedure CancelButtonOnClick(Sender: TObject);
  190. begin
  191. SuspendProc;
  192. if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
  193. ResumeProc;
  194. end;
  195.  
  196. procedure HideControls;
  197. begin
  198. WizardForm.FileNamelabel.Hide;
  199. ISDoneProgressBar1.Hide;
  200. LabelPct1.Hide;
  201. LabelCurrFileName.Hide;
  202. LabelTime1.Hide;
  203. LabelTime2.Hide;
  204. MyCancelButton.Hide;
  205. end;
  206.  
  207. procedure CreateControls;
  208. var PBTop:integer;
  209. begin
  210. PBTop:=ScaleY(150);
  211. ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
  212. with ISDoneProgressBar1 do begin
  213. Parent := WizardForm;
  214. Height := 25;
  215. Left := ScaleX(77);
  216. Top := PBTop;
  217. Width := ScaleX(500);
  218. Max := 1000;
  219. end;
  220. LabelCurrFileName := TLabel.Create(WizardForm);
  221. with LabelCurrFileName do begin
  222. Parent := WizardForm;
  223. AutoSize := False;
  224. Width := ISDoneProgressBar1.Width+ScaleX(30);
  225. Left := ISDoneProgressBar1.Left;
  226. Top := PBTop-20;
  227. end;
  228.  
  229. LabelTime1 := TLabel.Create(WizardForm);
  230. with LabelTime1 do begin
  231. Parent := WizardForm;
  232. AutoSize := False;
  233. Width := ISDoneProgressBar1.Width div 2;
  234. Left := ISDoneProgressBar1.Left;
  235. Top := PBTop + ScaleY(30);
  236. end;
  237. LabelTime2 := TLabel.Create(WizardForm);
  238. with LabelTime2 do begin
  239. Parent := WizardForm;
  240. AutoSize := False;
  241. Width := LabelTime1.Width+ScaleX(40);
  242. Left := 400;
  243. Top := LabelTime1.Top;
  244. end;
  245. LabelPct1 := TLabel.Create(WizardForm);
  246. with LabelPct1 do begin
  247. Parent := WizardForm;
  248. AutoSize := true;
  249. Font.Height:=-24;
  250. Left := ISDoneProgressBar1.Left -33 + ISDoneProgressBar1.Width div 2;
  251. Top := ISDoneProgressBar1.Top + ScaleY(70);
  252. //Width := ScaleX(80);
  253. end;
  254. // LabelTime3 := TLabel.Create(WizardForm);
  255. // with LabelTime3 do begin
  256. // Parent := WizardForm;
  257. // AutoSize := False;
  258. // Width := 300;
  259. // Left := 180;
  260. // Top := 200;
  261. // end;
  262. MyCancelButton:=TButton.Create(WizardForm);
  263. with MyCancelButton do begin
  264. Parent:=WizardForm;
  265. Width:=ScaleX(150);
  266. Caption:='Cancel';
  267. Left:=ScaleX(347);
  268. Height:=ScaleX(30);
  269. Left:=(480);
  270. Top:=WizardForm.cancelbutton.top;
  271. OnClick:=@CancelButtonOnClick;
  272. end;
  273. end;
  274.  
  275.  
  276. function CheckError:boolean;
  277. begin
  278. result:= not ISDoneError;
  279. end;
  280.  
  281. // Importing LoadSkin API from ISSkin.DLL
  282. procedure LoadSkin(lpszPath: PAnsiChar; lpszIniFileName: PAnsiChar);
  283. external 'LoadSkin@{tmp}\isskin.dll stdcall delayload';
  284.  
  285. // Importing UnloadSkin API from ISSkin.DLL
  286. procedure UnloadSkin;
  287. external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload';
  288.  
  289. // Importing ShowWindow Windows API from User32.DLL
  290. function ShowWindow(hWnd: Integer; uType: Integer): Integer;
  291. external 'ShowWindow@user32.dll stdcall';
  292.  
  293. var
  294. WelcomeLbl,DirLbl,GroupLbl,TasksLbl,FreeSpaceLabel,NeedSpaceLabel,GameSpaceLabel,PartitionSpaceLabel,Status: TLabel;
  295. DirBevel,GroupBevel,TasksBevel,TasksSeparateBevel,Bevel1,Bevel11,Bevel2,Bevel3,Bevel4,Bevel5,Bevel6,Bevel7,Bevel8,Bevel9,Bevel20,Bevel21,Bevel22,Bevel23: TBevel;
  296. FreeMB,TotalMB: cardinal;
  297.  
  298. function InitializeSetup1(): Boolean;
  299. begin
  300. ExtractTemporaryFile('isskin.dll');
  301. ExtractTemporaryFile('skin.cjstyles');
  302. LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), '');
  303. Result := True;
  304. end;
  305.  
  306. Function NumToStr(Float: Extended): String;
  307. Begin
  308. Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
  309. while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
  310. SetLength(Result, Length(Result)-1);
  311. End;
  312.  
  313. Function MbOrTb(Byte: Extended): String;
  314. begin
  315. if Byte < 1024 then Result:= NumToStr(Byte) + ' MB' else
  316. if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' GB' else
  317. Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' TB'
  318. end;
  319.  
  320. procedure GetFreeSpaceCaption(Sender: TObject);
  321. var Path: String;
  322. begin
  323. Path := ExtractFileDrive(WizardForm.DirEdit.Text);
  324. GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
  325. PartitionSpaceLabel.Caption:= ExpandConstant('Partition Space : ') + MbOrTb(TotalMB);
  326. FreeSpaceLabel.Caption := ExpandConstant('Free Space : ') + MbOrTb(FreeMB) + ' (' + IntToStr((FreeMB * 100) div TotalMB) + '%)';
  327. GameSpaceLabel.Caption := ExpandConstant('Game Space : ') + MbOrTb({#AppSize});
  328. NeedSpaceLabel.Caption := ExpandConstant('Total Needed Space : ') + MbOrTb({#AppSize});
  329. if (FreeMB<{#AppSize}) then
  330. FreeSpaceLabel.Font.Color:=clRed
  331. else
  332. PartitionSpaceLabel.Font.Color:=NeedSpaceLabel.Font.Color;
  333. WizardForm.NextButton.Enabled:=FreeMB>{#AppSize};
  334. end;
  335.  
  336. var
  337. DirectXCB,VisualCCB,NvidiaPhysx,Framework,IconCB: TNewCheckBox;
  338. //---COMPONENTS POSITION CONTROL---\\
  339. procedure Tasks;
  340. begin
  341. TasksBevel := TBevel.Create(WizardForm);
  342. with TasksBevel do
  343. begin
  344. Parent := WizardForm;
  345. Left := ScaleX(90);
  346. Top := ScaleY(150);
  347. Width := ScaleX(470);
  348. Height := ScaleY(73);
  349. end;
  350. //------------------------\\
  351.  
  352. //---Top---\\
  353. Bevel20 := TBevel.Create(WizardForm);
  354. with Bevel20 do
  355. begin
  356. Parent := WizardForm;
  357. Left := ScaleX(92);
  358. Top := ScaleY(150);
  359. Width := ScaleX(470);
  360. Height := ScaleY(2);
  361. end;
  362. //---Bottom---\\
  363. Bevel21 := TBevel.Create(WizardForm);
  364. with Bevel21 do
  365. begin
  366. Parent := WizardForm;
  367. Left := ScaleX(92);
  368. Top := ScaleY(308);
  369. Width := ScaleX(470);
  370. Height := ScaleY(2);
  371. end;
  372. //---Left---\\
  373. Bevel22 := TBevel.Create(WizardForm);
  374. with Bevel22 do
  375. begin
  376. Parent := WizardForm;
  377. Left := ScaleX(92);
  378. Top := ScaleY(152);
  379. Width := ScaleX(2);
  380. Height := ScaleY(158);
  381. end;
  382. //---Right---\\
  383. Bevel23 := TBevel.Create(WizardForm);
  384. with Bevel23 do
  385. begin
  386. Parent := WizardForm;
  387. Left := ScaleX(560);
  388. Top := ScaleY(152);
  389. Width := ScaleX(2);
  390. Height := ScaleY(156);
  391. end;
  392. //------------------------\\
  393.  
  394. DirectXCB := TNewCheckBox.Create(WizardForm);
  395. with DirectXCB do
  396. begin
  397. Parent := WizardForm;
  398. Left :=(112);
  399. Top :=(170);
  400. Width := ScaleX(265);
  401. Height := ScaleY(17);
  402. Caption:='Install Microsoft DirectX Runtime Environment';
  403. end;
  404.  
  405. VisualCCB := TNewCheckBox.Create(WizardForm);
  406. with VisualCCB do
  407. begin
  408. Parent := WizardForm;
  409. Left :=(112);
  410. Top :=(190);
  411. Width := ScaleX(265);
  412. Height := ScaleY(17);
  413. Caption := 'Install Visual C++ Redistributable Packages';
  414. end;
  415.  
  416. NvidiaPhysx := TNewCheckBox.Create(WizardForm);
  417. with NvidiaPhysx do
  418. begin
  419. Parent := WizardForm;
  420. Left :=(112);
  421. Top :=(210);
  422. Width := ScaleX(265);
  423. Height := ScaleY(17);
  424. Caption:='Install Nvidia Physx System Software';
  425. end;
  426.  
  427. Framework := TNewCheckBox.Create(WizardForm);
  428. with Framework do
  429. begin
  430. Parent := WizardForm;
  431. Left :=(112);
  432. Top :=(230);
  433. Width := ScaleX(265);
  434. Height := ScaleY(17);
  435. Caption:='Install Microsoft .NET Framework';
  436. end;
  437.  
  438. TasksSeparateBevel := TBevel.Create(WizardForm);
  439. with TasksSeparateBevel do
  440. begin
  441. Parent := WizardForm;
  442. Left :=(10);
  443. Top :=(260);
  444. Width := TasksBevel.Width - 0;
  445. Height := ScaleY(2);
  446. Width := ScaleX(440);
  447. Left := ScaleX(107);
  448. end;
  449.  
  450. IconCB := TNewCheckBox.Create(WizardForm);
  451. with IconCB do
  452. begin
  453. Parent := WizardForm;
  454. Left := (112);
  455. Top :=(275);
  456. Width := ScaleX(255);
  457. Height := ScaleY(17);
  458. Caption := 'Create a Desktop Shortcut';
  459. end;
  460. end;
  461.  
  462. //-----------------------------------\\
  463.  
  464. procedure LogoLabelOnClick(Sender: TObject);
  465. var
  466. ErrorCode: Integer;
  467. begin
  468. ShellExec('open', '{#AppURL}', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
  469. end;
  470.  
  471. procedure InitializeWizard1();
  472. begin
  473. WizardForm.WizardBitmapImage2.Cursor:=crHand;
  474. WizardForm.WizardBitmapImage2.OnClick:=@LogoLabelOnClick;
  475. WizardForm.ClientWidth:=654;
  476. WizardForm.ClientHeight:=402;
  477. WizardForm.InnerNotebook.Hide;
  478. WizardForm.OuterNotebook.Hide;
  479. WizardForm.WizardBitmapImage.Stretch:=True;
  480. WizardForm.WizardBitmapImage.Parent:=WizardForm;
  481. ExtractTemporaryFile ('logo.bmp');
  482. WizardForm.WizardBitmapImage2.Width := ScaleX(230);
  483. WizardForm.WizardBitmapImage2.Height := ScaleX(55);
  484. WizardForm.WizardBitmapImage2.Top:=340;
  485. WizardForm.WizardBitmapImage2.Left:=5;
  486. WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\logo.bmp'));
  487. WizardForm.WizardBitmapImage2.Parent:=WizardForm;
  488. WizardForm.WizardSmallBitmapImage.Stretch:=True;
  489. WizardForm.WizardSmallBitmapImage.Parent:=WizardForm;
  490. WizardForm.WizardSmallBitmapImage.SetBounds(0,0,WizardForm.ClientWidth,90);
  491. WizardForm.Bevel1.Parent:=WizardForm;
  492. WizardForm.Bevel1.Top:=90;
  493. WizardForm.Bevel1.Width:=WizardForm.ClientWidth;
  494. WizardForm.Bevel.Parent:=WizardForm;
  495. WizardForm.Bevel.Top:=330;
  496. WizardForm.Bevel.Width:=WizardForm.ClientWidth;
  497. WizardForm.SelectDirBitmapImage.Parent:=WizardForm;
  498. WizardForm.SelectDirBitmapImage.Top:=125;
  499. WizardForm.SelectDirBitmapImage.Left:=40;
  500. WizardForm.DirEdit.Parent:=WizardForm;
  501. WizardForm.DirEdit.Top:=130;
  502. WizardForm.DirEdit.Left:=75;
  503. WizardForm.DirEdit.Width:=430;
  504. WizardForm.DirEdit.OnChange:=@GetFreeSpaceCaption;
  505. WizardForm.DirBrowseButton.Parent:=WizardForm;
  506. WizardForm.DirBrowseButton.Top:=125;
  507. WizardForm.DirBrowseButton.Left:=515;
  508. WizardForm.DirBrowseButton.Width:=90;
  509. WizardForm.DirBrowseButton.Height:=30;
  510. WizardForm.GroupEdit.Parent:=WizardForm;
  511. WizardForm.GroupEdit.Top:=255;
  512. WizardForm.GroupEdit.Left:=75;
  513. WizardForm.GroupEdit.Width:=430;
  514. WizardForm.GroupBrowseButton.Parent:=WizardForm;
  515. WizardForm.GroupBrowseButton.Top:=250;
  516. WizardForm.GroupBrowseButton.Left:=515;
  517. WizardForm.GroupBrowseButton.Width:=90;
  518. WizardForm.GroupBrowseButton.Height:=30;
  519. WizardForm.NoIconsCheck.Parent:=WizardForm;
  520. WizardForm.NoIconsCheck.Left:=75;
  521. WizardForm.NoIconsCheck.Top:=285;
  522. WizardForm.SelectGroupBitmapImage.Parent:=WizardForm;
  523. WizardForm.SelectGroupBitmapImage.Top:=250;
  524. WizardForm.SelectGroupBitmapImage.Left:=40;
  525. WizardForm.WizardBitmapImage.SetBounds(0,0,WizardForm.ClientWidth,330);
  526. WizardForm.NextButton.SetBounds(525,347,100,30);
  527. WizardForm.CancelButton.SetBounds(420,347,100,30);
  528. WizardForm.BackButton.SetBounds(315,347,100,30);
  529.  
  530. WelcomeLbl:=TLabel.Create(WizardForm);
  531. With WelcomeLbl do begin
  532. Transparent:=true;
  533. Parent:=WizardForm;
  534. Alignment:=taCenter;
  535. Caption:='Welcome to Grand Theft Auto IV Setup Wizard.' + #13#10#13#10 + 'It is recomended that you close all other applications before proceeding.' + #13#10#13#10 + 'Click "Next" to continue.';
  536. Font.Color:=clWhite;
  537. Font.Size:=9;
  538. SetBounds(126,205,400,90);
  539. end;
  540. //
  541. Tasks;
  542. DirBevel := TBevel.Create(WizardForm);
  543. with DirBevel do
  544. begin
  545. Parent := WizardForm;
  546. Left := ScaleX(28);
  547. Top := ScaleY(110);
  548. Width := ScaleX(594);
  549. Height := ScaleY(110);
  550. end;
  551.  
  552. //-----Bevel Line Page 2 Bottom-----\\
  553.  
  554. //---Top---\\
  555. Bevel3 := TBevel.Create(WizardForm);
  556. with Bevel3 do
  557. begin
  558. Parent := WizardForm;
  559. Left := ScaleX(27);
  560. Top := ScaleY(235);
  561. Width := ScaleX(594);
  562. Height := ScaleY(2);
  563. end;
  564. //---Bottom---\\
  565. Bevel4 := TBevel.Create(WizardForm);
  566. with Bevel4 do
  567. begin
  568. Parent := WizardForm;
  569. Left := ScaleX(27);
  570. Top := ScaleY(313);
  571. Width := ScaleX(595);
  572. Height := ScaleY(2);
  573. end;
  574. //---Left---\\
  575. Bevel5 := TBevel.Create(WizardForm);
  576. with Bevel5 do
  577. begin
  578. Parent := WizardForm;
  579. Left := ScaleX(27);
  580. Top := ScaleY(236);
  581. Width := ScaleX(2);
  582. Height := ScaleY(78);
  583. end;
  584. //---Right---\\
  585. Bevel6 := TBevel.Create(WizardForm);
  586. with Bevel6 do
  587. begin
  588. Parent := WizardForm;
  589. Left := ScaleX(620);
  590. Top := ScaleY(235);
  591. Width := ScaleX(2);
  592. Height := ScaleY(79);
  593. end;
  594. //------------------------\\
  595.  
  596. //-----Bevel Line Page 2 Top-----\\
  597.  
  598. //---Top---\\
  599. Bevel7 := TBevel.Create(WizardForm);
  600. with Bevel7 do
  601. begin
  602. Parent := WizardForm;
  603. Left := ScaleX(27);
  604. Top := ScaleY(110);
  605. Width := ScaleX(595);
  606. Height := ScaleY(2);
  607. end;
  608. //---Bottom---\\
  609. Bevel8 := TBevel.Create(WizardForm);
  610. with Bevel8 do
  611. begin
  612. Parent := WizardForm;
  613. Left := ScaleX(27);
  614. Top := ScaleY(250);
  615. Width := ScaleX(595);
  616. Height := ScaleY(2);
  617. end;
  618. //---Right---\\
  619. Bevel9 := TBevel.Create(WizardForm);
  620. with Bevel9 do
  621. begin
  622. Parent := WizardForm;
  623. Left := ScaleX(620);
  624. Top := ScaleY(110);
  625. Width := ScaleX(2);
  626. Height := ScaleY(108);
  627. end;
  628. //---Left---\\
  629. Bevel11 := TBevel.Create(WizardForm);
  630. with Bevel11 do
  631. begin
  632. Parent := WizardForm;
  633. Left := ScaleX(27);
  634. Top := ScaleY(111);
  635. Width := ScaleX(2);
  636. Height := ScaleY(109);
  637. end;
  638.  
  639. //------------------------\\
  640. Status:=TLabel.Create(WizardForm);
  641. With Status do begin
  642. //Transparent:=true;
  643. Parent:=WizardForm;
  644. Alignment:=taCenter;
  645. //Font.Color:=clWhite;
  646. Font.Height:=-15;
  647. SetBounds(0,218,650,30);
  648. end;
  649.  
  650. DirLbl:=TLabel.Create(WizardForm);
  651. With DirLbl do begin
  652. //Transparent:=true;
  653. Parent:=WizardForm;
  654. //Alignment:=taCenter;
  655. Caption:=' Grand Theft Auto IV will be installed to the following folder ';
  656. Font.Color:=clWhite;
  657. SetBounds(52,105,300,15);
  658. end;
  659. GroupLbl:=TLabel.Create(WizardForm);
  660. With GroupLbl do begin
  661. //Transparent:=true;
  662. Parent:=WizardForm;
  663. //Alignment:=taCenter;
  664. Caption:=' Startmenu shortcuts will be created here ';
  665. Font.Color:=clWhite;
  666. SetBounds(52,230,235,15);
  667. end;
  668. TasksLbl:=TLabel.Create(WizardForm);
  669. With TasksLbl do begin
  670. //Transparent:=true;
  671. Parent:=WizardForm;
  672. //Alignment:=taCenter;
  673. Caption:='Select the components you want to install; clear the components you do not want to' + #13#10 + 'install. Click Next when you are ready to continue.';
  674. //Font.Color:=clWhite;
  675. SetBounds(125,105,407,30);
  676. end;
  677. //---PARTITION SPACE---\\
  678. PartitionSpaceLabel:=TLabel.Create(WizardForm);
  679. With PartitionSpaceLabel do begin
  680. //Transparent:=true;
  681. Parent:=WizardForm;
  682. //Alignment:=taCenter;
  683. //Font.Color:=clWhite;
  684. Font.Height:=-13;
  685. SetBounds(75,160,200,30);
  686. end;
  687. //---FREE SPACE---\\
  688. FreeSpaceLabel:=TLabel.Create(WizardForm);
  689. With FreeSpaceLabel do begin
  690. //Transparent:=true;
  691. Parent:=WizardForm;
  692. //Alignment:=taCenter;
  693. //Font.Color:=clWhite;
  694. Font.Height:=-13;
  695. SetBounds(335,160,200,30);
  696. end;
  697. //---GAME SPACE---\\
  698. GameSpaceLabel:=TLabel.Create(WizardForm);
  699. With GameSpaceLabel do begin
  700. //Transparent:=true;
  701. Parent:=WizardForm;
  702. //Alignment:=taCenter;
  703. //Font.Color:=clWhite;
  704. Font.Height:=-13;
  705. SetBounds(75,190,200,30);
  706. end;
  707. //---Total Needed Space---\\
  708. NeedSpaceLabel:=TLabel.Create(WizardForm);
  709. With NeedSpaceLabel do begin
  710. //Transparent:=true;
  711. Parent:=WizardForm;
  712. //Alignment:=taCenter;
  713. //Font.Color:=clWhite;
  714. Font.Height:=-13;
  715. SetBounds(335,190,200,30);
  716. end;
  717. end;
  718.  
  719. Procedure HideComponents();
  720. begin
  721. WizardForm.WizardSmallBitmapImage.Hide;
  722. WizardForm.Bevel1.Hide;
  723. DirBevel.Hide;
  724. Bevel3.Hide;
  725. Bevel4.Hide;
  726. Bevel5.Hide;
  727. Bevel6.Hide;
  728. Bevel7.Hide;
  729. Bevel8.Hide;
  730. Bevel9.Hide;
  731. Bevel11.Hide;
  732. Bevel20.Hide;
  733. Bevel21.Hide;
  734. Bevel22.Hide;
  735. Bevel23.Hide;
  736. TasksBevel.Hide;
  737. DirLbl.Hide;
  738. GroupLbl.Hide;
  739. TasksLbl.Hide;
  740. DirectXCB.Hide;
  741. VisualCCB.Hide;
  742. NvidiaPhysx.Hide;
  743. Framework.Hide;
  744. IconCB.Hide;
  745. WizardForm.SelectDirBitmapImage.Hide;
  746. WizardForm.SelectGroupBitmapImage.Hide;
  747. WizardForm.DirEdit.Hide;
  748. WizardForm.GroupEdit.Hide;
  749. WizardForm.DirBrowseButton.Hide;
  750. WizardForm.GroupBrowseButton.Hide;
  751. WizardForm.NoIconsCheck.Hide;
  752. WizardForm.WizardBitmapImage.Hide;
  753. WelcomeLbl.Hide;
  754. // WizardForm.ComponentsList.Hide;
  755. // WizardForm.TasksList.Hide;
  756. TasksSeparateBevel.Hide;
  757. PartitionSpaceLabel.Hide;
  758. FreeSpaceLabel.Hide;
  759. GameSpaceLabel.Hide;
  760. NeedSpaceLabel.Hide;
  761. Status.Hide;
  762. end;
  763.  
  764. procedure CurStepChanged1(CurStep: TSetupStep);
  765. var Comps1,Comps2,Comps3, TmpValue:cardinal;
  766. FindHandle1,ColFiles1,CurIndex1,tmp:integer;
  767. ExecError:boolean;
  768. InFilePath,OutFilePath,OutFileName:PAnsiChar;
  769. begin
  770. if CurStep = ssInstall then begin //If necessary, you can change to ssPostInstall
  771. WizardForm.ProgressGauge.Hide;
  772. WizardForm.CancelButton.Hide;
  773. CreateControls;
  774. WizardForm.StatusLabel.Caption:='Extracting Files...';
  775. ISDoneCancel:=0;
  776.  
  777. #ifdef PrecompVer
  778. #if PrecompVer == "0.38"
  779. ExtractTemporaryFile('precomp038.exe');
  780. #endif
  781. #if PrecompVer == "0.40"
  782. ExtractTemporaryFile('precomp040.exe');
  783. #endif
  784. #if PrecompVer == "0.41"
  785. ExtractTemporaryFile('precomp041.exe');
  786. #endif
  787. #if PrecompVer == "0.42"
  788. ExtractTemporaryFile('precomp042.exe');
  789. #endif
  790. #if PrecompVer == "0.43"
  791. ExtractTemporaryFile('precomp043.exe');
  792. #endif
  793. #if PrecompVer == "Inside"
  794. ExtractTemporaryFile('CLS-precomp.dll');
  795. ExtractTemporaryFile('CLS-MSC.dll');
  796. ExtractTemporaryFile('CLS-srep.dll');
  797. ExtractTemporaryFile('precomp.exe');
  798. #endif
  799. #endif
  800. ExtractTemporaryFile('arc.ini');
  801. ExtractTemporaryFile('facompress.dll');
  802. ExtractTemporaryFile('facompress_mt.dll');
  803. ExtractTemporaryFile('XDelta3.dll');
  804. ExtractTemporaryFile('7z.dll');
  805. ExtractTemporaryFile('PackZIP.exe');
  806. ExtractTemporaryFile('english.ini');
  807. ExtractTemporaryFile('FreeArc-LZMA-x64.exe');
  808. ExtractTemporaryFile('srep.exe');
  809. ExtractTemporaryFile('srep64.exe');
  810. ExtractTemporaryFile('unarc.dll');
  811. ExtractTemporaryFile('packjpg_dll.dll');
  812. ExtractTemporaryFile('packjpg_dll1.dll');
  813. ExtractTemporaryFile('zlib1.dll');
  814.  
  815. Comps1:=0; Comps2:=0; Comps3:=0;
  816. #ifdef Components
  817. TmpValue:=1;
  818. if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //component 1
  819. TmpValue:=TmpValue*2;
  820. if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //component 2
  821. TmpValue:=TmpValue*2;
  822. if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //component 3
  823. TmpValue:=TmpValue*2;
  824. if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //component 4
  825. #endif
  826.  
  827. #ifdef precomp
  828. PCFVer:={#precomp};
  829. #else
  830. PCFVer:=0;
  831. #endif
  832. ISDoneError:=true;
  833. if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 512, @ProgressCallback) then begin
  834. repeat
  835. ChangeLanguage('english');
  836. if not SrepInit('',512,0) then break;
  837. if not PrecompInit('',128,PCFVer) then break;
  838. if not FileSearchInit(true) then break;
  839. #include 'Archives.ini'
  840. ISDoneError:=false;
  841. until true;
  842. ISDoneStop;
  843. end;
  844. HideControls;
  845. WizardForm.CancelButton.Visible:=true;
  846. WizardForm.CancelButton.Enabled:=false;
  847. Status.Show;
  848. end;
  849. if CurStep=ssPostInstall then begin
  850. if DirectXCB.Checked then begin
  851. Status.Caption:='Installing DirectX...';
  852. Status.Left := 200;
  853. Status.Top := 200;
  854. Status.Width := 223;
  855. Status.Height := 20;
  856. Exec2(ExpandConstant('{src}\Redist\DirectX\DXSETUP.exe'),'/q',false);
  857. end;
  858. if NvidiaPhysx.Checked then begin
  859. Status.Caption:='Installing Nvidia Physx...';
  860. Status.Left := 200;
  861. Status.Top := 200;
  862. Status.Width := 227;
  863. Status.Height := 20;
  864. Exec2(ExpandConstant('{src}\Redist\PhysX-9.13.1220-SystemSoftware.msi'),'/q',false);
  865. end;
  866. if VisualCCB.Checked then begin
  867. Status.Caption:='Installing Visual C++...';
  868. Status.Left := 200;
  869. Status.Top := 200;
  870. Status.Width := 227;
  871. Status.Height := 20;
  872. Exec2(ExpandConstant('{src}\Redist\vcredist_x86.exe'),'/q',false);
  873. end;
  874. if Framework.Checked then begin
  875. Status.Caption:='Installing Framework...';
  876. Status.Left := 200;
  877. Status.Top := 200;
  878. Status.Width := 227;
  879. Status.Height := 20;
  880. Exec2(ExpandConstant('{src}\Redist\dotnetfx.exe'),'/q',false);
  881. end;
  882. end;
  883. if (CurStep=ssInstall) and ISDoneError then begin
  884. Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
  885. end;
  886. end;
  887. //-------- First Page --------\\
  888. procedure CurPageChanged1(CurPageID: integer);
  889. begin
  890. if CurPageID=wpWelcome then begin
  891. HideComponents;
  892. WizardForm.Position:=poScreenCenter;
  893. Bevel3.Hide;
  894. Bevel4.Hide;
  895. Bevel5.Hide;
  896. Bevel6.Hide;
  897. WizardForm.WizardBitmapImage.Show;
  898. WelcomeLbl.Show;
  899. WizardForm.CancelButton.show;
  900. end;
  901. //-------- Second Page --------\\
  902. if CurPageID=wpSelectDir then begin
  903. HideComponents;
  904. WizardForm.Position:=poScreenCenter;
  905. WizardForm.WizardSmallBitmapImage.Show;
  906. WizardForm.Bevel1.Show;
  907. DirBevel.Show;
  908. Bevel3.show;
  909. Bevel4.Show;
  910. Bevel5.Show;
  911. Bevel6.Show;
  912. Bevel7.Show;
  913. Bevel8.hide;
  914. Bevel9.Show;
  915. Bevel11.Show;
  916. WizardForm.Caption:= 'Select the Destination Directory';
  917. WizardForm.SelectDirBitmapImage.Show;
  918. WizardForm.SelectGroupBitmapImage.Show;
  919. WizardForm.DirEdit.Show;
  920. WizardForm.GroupEdit.Show;
  921. WizardForm.DirBrowseButton.Show;
  922. WizardForm.GroupBrowseButton.Show;
  923. WizardForm.NoIconsCheck.Show;
  924. DirLbl.Show;
  925. GroupLbl.Show;
  926. PartitionSpaceLabel.Show;
  927. FreeSpaceLabel.Show;
  928. GameSpaceLabel.Show;
  929. NeedSpaceLabel.Show;
  930. GetFreeSpaceCaption(nil);
  931. end;
  932. //-------- Third page --------\\
  933. if CurPageID=wpSelectTasks then begin
  934. HideComponents;
  935. WizardForm.Position:=poScreenCenter;
  936. WizardForm.Caption:= 'Select Additional Components';
  937. WizardForm.WizardSmallBitmapImage.Show;
  938. WizardForm.Bevel1.Show;
  939. Bevel3.Hide;
  940. Bevel4.Hide;
  941. Bevel5.Hide;
  942. Bevel6.Hide;
  943. Bevel20.Show;
  944. Bevel21.Show;
  945. Bevel22.Show;
  946. Bevel23.Show;
  947. WizardForm.ComponentsList.Show;
  948. WizardForm.TasksList.Show;
  949. DirectXCB.Show;
  950. DirectXCB.Checked:= False;
  951. VisualCCB.Show;
  952. VisualCCB.Checked:= False;
  953. NvidiaPhysx.Checked:= False;
  954. NvidiaPhysx.Enabled:= True;
  955. NvidiaPhysx.Show;
  956. Framework.Show;
  957. Framework.Enabled:= True;
  958. Framework.Checked:= False;
  959. IconCB.Show;
  960. IconCB.Checked:= True;
  961. TasksBevel.Hide;
  962. TasksLbl.Show;
  963. WizardForm.NextButton.Caption:='Install';
  964. TasksSeparateBevel.Show;
  965. end;
  966. //--------Installation Page--------\\
  967. if CurPageID=wpInstalling then begin
  968. TasksSeparateBevel.Hide;
  969. HideComponents;
  970. WizardForm.Position:=poScreenCenter;
  971. WizardForm.WizardSmallBitmapImage.Show;
  972. WizardForm.Caption:= 'Installing {#AppName}';
  973. WizardForm.Bevel1.Show;
  974. WizardForm.TasksList.CheckItem(0,IconCB.Checked);
  975. end;
  976. //--------Game was successfully installed PAGE--------\\
  977. if CurPageID=wpFinished then begin
  978. HideComponents;
  979. WizardForm.Position:=poScreenCenter;
  980. WizardForm.WizardBitmapImage.Show;
  981. WelcomeLbl.Show;
  982. WelcomeLbl.Left:=145;
  983. WizardForm.Caption:= 'Finish {#AppName} Setup Wizard';
  984. WelcomeLbl.Caption:='{#AppName} was successfully installed on your computer.' + #13#10#13#10 + 'Run the game from shortcut in "start" menu or Desktop shortcut.' + #13#10#13#10 + 'Click "Finish" to exit the installation program.';
  985. end;
  986. //--------Game Fail To Install PAGE--------\\
  987. if (CurPageID = wpFinished) and ISDoneError then
  988. begin
  989. //LabelTime3.Hide;
  990. WizardForm.Caption:= '{#AppName} Setup';
  991. WelcomeLbl.Font.Color:= clRed;
  992. WelcomeLbl.Caption:= 'Setup encountered an error while installing {#AppName}' + #13#10#13#10 + 'Changes were not saved , please re-run the setup again.';
  993. WelcomeLbl.Left:=163;
  994. end;
  995. end;
  996.  
  997. function ShouldSkipPage1(PageID: Integer): Boolean;
  998. begin
  999. if (PageID=wpSelectProgramGroup) or (PageID=wpReady) or (PageID=wpSelectComponents) then Result:=true;
  1000. end;
  1001.  
  1002. procedure DeinitializeSetup1();
  1003. begin
  1004. ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  1005. UnloadSkin();
  1006. end;
  1007.  
  1008. procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10 :integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
  1009. procedure InitializeWizard2();
  1010. begin
  1011. ExtractTemporaryFile('Splash.png');
  1012. ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,3000,1000,0,255,True,$FFFFFF,10);
  1013. end;
  1014.  
  1015. function InitializeSetup(): Boolean;
  1016. begin
  1017. Result := InitializeSetup1(); if not Result then exit;
  1018. end;
  1019.  
  1020. procedure InitializeWizard();
  1021. begin
  1022. ExtractTemporaryFile('music.mp3');
  1023. if BASS_Init(-1, 44100, 0, 0, 0) then
  1024. begin
  1025. SoundStream := BASS_StreamCreateFile(False,
  1026. ExpandConstant('{tmp}\music.mp3'), 0, 0, 0, 0,
  1027. EncodingFlag or BASS_SAMPLE_LOOP);
  1028. BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
  1029. BASS_ChannelPlay(SoundStream, False);
  1030.  
  1031. SoundCtrlButton := TNewButton.Create(WizardForm);
  1032. SoundCtrlButton.Parent := WizardForm;
  1033. SoundCtrlButton.SetBounds(210,347,100,30);
  1034. SoundCtrlButton.Caption :=
  1035. ExpandConstant('{cm:SoundCtrlButtonCaptionSoundOff}');
  1036. SoundCtrlButton.OnClick := @SoundCtrlButtonClick;
  1037. RedesignWizardForm;
  1038. InitializeWizard1();
  1039. InitializeWizard2();
  1040. end;
  1041. end;
  1042.  
  1043. procedure CurStepChanged(CurStep: TSetupStep);
  1044. begin
  1045. CurStepChanged1(CurStep);
  1046. end;
  1047.  
  1048. procedure CurPageChanged(CurPageID: Integer);
  1049. begin
  1050. CurPageChanged1(CurPageID);
  1051. end;
  1052.  
  1053. function ShouldSkipPage(PageID: Integer): Boolean;
  1054. begin
  1055. Result := ShouldSkipPage1(PageID); if not Result then exit;
  1056. end;
  1057.  
  1058. procedure DeinitializeSetup();
  1059. begin
  1060.  
  1061. BASS_Free();
  1062. DeinitializeSetup1();
  1063. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement