#define GameID "{331582E7-485B-4F59-B2A7-43B71966479D}"
#define NeedSize "10000"
#define NeedMem "512"
#define MyAppName "Brigador"
#define exe "brigador.exe"
; Закоментировать для тестового прогона ;
;#define records
#define facompress
;#define precomp "0.38"
;#define PrecompInside
;#define SrepInside
#define unrar
;#define XDelta
;#define PackZIP
#define Registry
; Настройки ;
; Splash-рисунок. появляется при запуске инсталятора (Image\Splash.png) ;
#define Splash
[Setup]
AppId={{#GameID}
AppName={#MyAppName}
AppVersion=1.0
AppPublisher= ооо
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputBaseFilename=setup
DirExistsWarning=no
VersionInfoDescription={#MyAppName}
SetupIconFile=Image\icon.ico
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=True
DisableReadyMemo=True
#ifdef Registry
[Registry]
Root: HKLM; Subkey: "Software\FD_Company"; ValueName: "{#MyAppName}"; ValueType: String; ValueData: "{app}"; Check: CheckError
#endif
[Files]
Source: InstallFiles\*; Flags: dontcopy
Source: Image\*; Flags: dontcopy
[Run]
Filename: {src}\Redist\dxwebsetup.exe; WorkingDir: {src}\Redist\; Flags: waituntilterminated; Check: DirectX and CheckError;
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; WorkingDir: {src}\Redist\; Flags: waituntilterminated; Check: visualc and not IsWin64 and CheckError; BeforeInstall: visualcProgress
Filename: {src}\Redist\vcredist_x64.exe; Parameters: /q; WorkingDir: {src}\Redist\; Flags: waituntilterminated; Check: visualc and IsWin64 and CheckError; BeforeInstall: visualcProgress
[Icons]
Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\brigador.exe"; WorkingDir: "{app}"; IconFilename: "{app}\brigador.exe";
Name: "{group}\{#MyAppName}"; Filename: "{app}\brigador.exe"; WorkingDir: "{app}"; IconFilename: "{app}\brigador.exe";
Name: "{group}\{cm:UninstallProgram}"; Filename: "{uninstallexe}"; IconFilename: {app}\cnruninstall.ico;
[UninstallDelete]
Type: FilesAndOrDirs; Name: "{app}"
Type: filesandordirs; Name: "{userdocs}\Syndicate"
[Code]
type
TPBProc = function (h:hWnd;Msg,wParam,lParam:Longint):Longint;
TALabel = array of TLabel;
var
SelectTasksPage: TWizardPage;
NoIconsCheck, hCancelBtn, hNextBtn, hBackBtn, hDirBrowseBtn,
DesktopCheck, DirectXCheck, visualcCheck, RedistCheck: HWND;
WFButtonFont, UPFButtonFont: TFont;
OldDisk: string;
DirEditLabel, GroupEditLabel, NoIconsLabel, NeedSpaceLabel, FreeSpaceLabel, StatusLabel, FinishedHeadingLabel,
WizardUninstLabel, UninstPageDescriptLabel, StatusUninstLabel,
DesktopLabel, DirectXLabel, visualcLabel, RedistLabel: Tlabel;
FreeMB, TotalMB: Cardinal;
ADisk: TALabel;
WizardImg, Edit: Longint;
LogoPanel: TPanel;
Logo: Longint;
LogoLabel: TLabel;
LogoImage: TBitmapImage;
//========== [Начало - Подключение модулей] ==========\\
#include "Modules\Messages.iss"
#include "Modules\botva2.iss"
#include "Modules\PB.iss"
#include "Modules\IsDone.iss"
//========== [Конец - Подключение модулей] ==========\\
//========== [Начало - Компаненты страниц] ==========\\
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function CallBackProc(P:TPBProc;ParamCount:integer):LongWord; external 'wrapcallback@{tmp}\callback.dll stdcall delayload';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
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 MbOrTB(Float: Extended): string;
begin
if Float<1024 then Result:=NumToStr(Float)+' MB'
else if (Float/1024)<1024 then Result:=NumToStr(Float/1024)+' GB'
else if (Float/(1024*1024))<1024 then Result:=NumToStr(Float/(1024*1024))+' TB'
end;
procedure DiskFlashing(h: Longword; msg: Longword; idevent: Longword; dwTime: Longword);
var
i:integer;
begin
for i:= 0 to GetArrayLength(ADisk)-1 do
if ADisk[i].Font.Color=$FFFFFF then ADisk[i].Font.Color:=$0000FF else ADisk[i].Font.Color:=$FFFFFF;
end;
function GetElementIndex(a:TALabel; lbl:TLabel):integer;
var
i:integer;
f:boolean;
begin
Result:=-1;
f:=False;
for i:=0 to GetArrayLength(a)-1 do
if a[i]=lbl then begin
f:=True;
Break;
end;
if f then Result:=i;
end;
procedure AddLabelToArray(var a:TALabel; lbl:TLabel);
begin
if GetElementIndex(a,lbl)=-1 then begin
SetArrayLength(a,GetArrayLength(a)+1);
a[GetArrayLength(a)-1]:=lbl;
end;
end;
procedure DeleteLabelFromArray(var a:TALabel; lbl:integer);
var
Last,i:integer;
begin
if lbl<>-1 then begin
Last:=GetArrayLength(a)-1;
if lbl<Last then
for i:=lbl to Last-1 do a[i]:=a[i+1];
SetArrayLength(a,Last);
end;
end;
procedure GetFreeSpaceCaption(Sender: TObject);
var
CurrentDisk: String;
i:integer;
begin
CurrentDisk:=ExtractFileDrive(WizardForm.DirEdit.Text);
DirEditLabel.Caption:=MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
if not GetSpaceOnDisk(CurrentDisk,True,FreeMB,TotalMB) then begin
SetArrayLength(ADisk,0);
FreeSpaceLabel.Visible:=False;
BtnSetEnabled(hNextBtn,False);
WizardForm.NextButton.Enabled:=False;
OldDisk:=CurrentDisk;
Exit;
end;
FreeSpaceLabel.Visible:=True;
if CurrentDisk<>OldDisk then begin
OldDisk:=CurrentDisk;
FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSpace} ') + MbOrTB(FreeMb) + ' (' + IntToStr((FreeMb*100) div TotalMB) + ' %)';
if WizardForm.CurPageID = wpWelcome then begin
if FreeMB>={#NeedSize} then begin
i:=GetElementIndex(ADisk,FreeSpaceLabel);
if i<>-1 then begin
DeleteLabelFromArray(ADisk,i);
FreeSpaceLabel.Font.Color:=$FFFFFF;
end;
end else AddLabelToArray(ADisk,FreeSpaceLabel);
BtnSetEnabled(hNextBtn,not (GetArrayLength(ADisk)>0));
WizardForm.NextButton.Enabled:=not (GetArrayLength(ADisk)>0);
end;
end;
end;
procedure SetStateNewButtons;
begin
with WizardForm.BackButton do begin
BtnSetText(hBackBtn,PAnsiChar(Caption));
BtnSetVisibility(hBackBtn,Visible);
BtnSetEnabled(hBackBtn,Enabled);
end;
with WizardForm.NextButton do begin
BtnSetText(hNextBtn,PAnsiChar(Caption));
BtnSetVisibility(hNextBtn,Visible);
BtnSetEnabled(hNextBtn,Enabled);
end;
with WizardForm.CancelButton do begin
BtnSetText(hCancelBtn,PAnsiChar(Caption));
BtnSetVisibility(hCancelBtn,Visible);
BtnSetEnabled(hCancelBtn,Enabled);
end;
BtnSetText(hDirBrowseBtn,PAnsiChar(WizardForm.DirBrowseButton.Caption));
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;
end;
Btn.OnClick(Btn);
SetStateNewButtons;
BtnRefresh(hBtn);
end;
procedure WFBtnEnter(hBtn:HWND);
begin
end;
function NoIcons: Boolean;
begin
Result:= BtnGetChecked(NoIconsCheck);
end;
procedure NoIconsClick(hBtn:HWND);
begin
if BtnGetChecked(hBtn) then NoIconsLabel.Font.Color:=$FFFFFF else NoIconsLabel.Font.Color:=$B5B5B5;
end;
procedure NoIconsLabelClick(Sender:TObject);
begin
BtnSetChecked(NoIconsCheck, not BtnGetChecked(NoIconsCheck));
NoIconsClick(NoIconsCheck);
end;
function Redist: Boolean;
begin
Result:= BtnGetChecked(RedistCheck);
end;
function DirectX: Boolean;
begin
Result:= BtnGetChecked(DirectXCheck);
end;
function Visualc: Boolean;
begin
Result:= BtnGetChecked(VisualcCheck);
end;
function Desktop: Boolean;
begin
Result:= BtnGetChecked(DesktopCheck);
end;
procedure DesktopClick(hBtn:HWND);
begin
if BtnGetChecked(hBtn) then DesktopLabel.Font.Color:=$FFFFFF else DesktopLabel.Font.Color:=$B5B5B5;
end;
procedure DesktopLabelClick(Sender:TObject);
begin
BtnSetChecked(DesktopCheck, not BtnGetChecked(DesktopCheck));
DesktopClick(DesktopCheck);
end;
procedure RedistClick(hBtn:HWND);
begin
if BtnGetChecked(RedistCheck) then BtnSetChecked(DirectXCheck, True) else BtnSetChecked(DirectXCheck, False);
if BtnGetChecked(RedistCheck) then BtnSetChecked(visualcCheck, True) else BtnSetChecked(visualcCheck, False);
if BtnGetChecked(RedistCheck) then DirectXLabel.Font.Color:=$FFFFFF else DirectXLabel.Font.Color:=$B5B5B5;
if BtnGetChecked(RedistCheck) then visualcLabel.Font.Color:=$FFFFFF else visualcLabel.Font.Color:=$B5B5B5;
if BtnGetChecked(hBtn) then RedistLabel.Font.Color:=$FFFFFF else RedistLabel.Font.Color:=$B5B5B5;
end;
procedure RedistLabelClick(Sender:TObject);
begin
BtnSetChecked(RedistCheck, not BtnGetChecked(RedistCheck));
RedistClick(RedistCheck);
end;
procedure DirectXClick(hBtn:HWND);
begin
if BtnGetChecked(DirectXCheck) or BtnGetChecked(visualcCheck) then BtnSetChecked(RedistCheck, True) else BtnSetChecked(RedistCheck, False);
if BtnGetChecked(DirectXCheck) or BtnGetChecked(visualcCheck) then RedistLabel.Font.Color:=$FFFFFF else RedistLabel.Font.Color:=$B5B5B5;
if BtnGetChecked(hBtn) then DirectXLabel.Font.Color:=$FFFFFF else DirectXLabel.Font.Color:=$B5B5B5;
end;
procedure DirectXLabelClick(Sender:TObject);
begin
BtnSetChecked(DirectXCheck, not BtnGetChecked(DirectXCheck));
DirectXClick(DirectXCheck);
end;
procedure visualcClick(hBtn:HWND);
begin
if BtnGetChecked(visualcCheck) or BtnGetChecked(DirectXCheck) then BtnSetChecked(RedistCheck, True) else BtnSetChecked(RedistCheck, False);
if BtnGetChecked(visualcCheck) or BtnGetChecked(DirectXCheck) then RedistLabel.Font.Color:=$FFFFFF else RedistLabel.Font.Color:=$B5B5B5;
if BtnGetChecked(hBtn) then visualcLabel.Font.Color:=$FFFFFF else visualcLabel.Font.Color:=$B5B5B5;
end;
procedure visualcLabelClick(Sender:TObject);
begin
BtnSetChecked(visualcCheck, not BtnGetChecked(visualcCheck));
visualcClick(visualcCheck);
end;
procedure DirectXProgress;
begin
StatusLabel.Caption:=ExpandConstant('{cm:DirectXInstall}')
end;
procedure VisualcProgress;
begin
StatusLabel.Caption:=ExpandConstant('{cm:VisualcInstall}')
end;
procedure ObjectFunc(Sender: TObject);
var
Drive: String;
begin
case Sender of
WizardForm.DirEdit: begin
Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
DirEditLabel.Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
end;
WizardForm.GroupEdit: begin
GroupEditLabel.Caption:= WizardForm.GroupEdit.Text;
end;
end;
end;
#ifdef Splash
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';
#endif
procedure Splash();
begin
#ifdef Splash
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',1000,3000,1000,0,255,False,$FFFFFF,10);
#endif
end;
function CheckError: Boolean;
begin
Result:= not ISDoneError;
end;
function InitializeSetup: Boolean;
begin
#ifdef Splash
ExtractTemporaryFile('Splash.png');
#endif
ExtractTemporaryFile('Logo.jpg');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('b2p.dll');
ExtractTemporaryFile('CallbackCtrl.dll');
ExtractTemporaryFile('skin.cjstyles');
LoadSkin(ExpandConstant('{tmp}\skin.cjstyles'), '');
Result:=True;
end;
//========== [Конец - Компаненты страниц] ==========\\
//========== [Начало - Создание формы] ==========\\
procedure CreateWizardForm;
var
i: Integer;
begin
with WizardForm do begin
ClientWidth:=ScaleX(375);
ClientHeight:=ScaleY(460);
Center;
OuterNotebook.Hide;
InnerNotebook.Hide;
Bevel.Hide;
GroupEdit.OnChange:= @ObjectFunc
end;
ExtractTemporaryFile('pbbkg.png');
WizardImg:=ImgLoad(WizardForm.Handle,ExpandConstant('WizardImage.png'),ScaleX(0),ScaleY(0),WizardForm.ClientWidth,WizardForm.ClientHeight,True,True);
Logo:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Logo.jpg'),ScaleX(10), ScaleY(5),ScaleX(355),ScaleY(145),True,True);
Edit:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\pbbkg.png'),ScaleX(15), ScaleY(159),ScaleX(265),ScaleY(23),True,True);
//========== [Конец - Создание формы] ==========\\
//========== [Начало - Выбор папки] ==========\\
DirEditLabel:=Tlabel.Create(wizardform);
with DirEditLabel do begin
Parent := WizardForm;
AutoSize:=False;
Transparent := True;
SetBounds(ScaleX(20), ScaleY(162), ScaleX(250), ScaleY(20));
Font.Name:= 'Tahoma';
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := MinimizePathName(WizardForm.DirEdit.Text, DirEditLabel.Font, DirEditLabel.Width);
end;
FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do begin
AutoSize:=False;
SetBounds(ScaleX(15), ScaleY(210), ScaleX(285), ScaleY(20));
Transparent:=True;
Font.Name:= 'Tahoma';
Font.Size:= 8;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Parent := WizardForm;
end;
NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do begin
AutoSize:=False;
SetBounds(ScaleX(15), ScaleY(190), ScaleX(300), ScaleY(20));
Transparent:=True;
Font.Name:= 'Tahoma';
Font.Size:= 8;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:NeedSpace} ') + MbOrTB({#NeedSize});
Parent := WizardForm;
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text;
//========== [Конец - Выбор папки] ==========\\
//========== [Начало - Задачи] ==========\\
GroupEditLabel:=Tlabel.Create(wizardform);
with GroupEditLabel do begin
Parent := WizardForm;
AutoSize:=False;
Transparent := True;
SetBounds(ScaleX(15), ScaleY(280), ScaleX(280), ScaleY(20));
Font.Name:= 'Tahoma';
Font.Size:= 10;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := WizardForm.GroupEdit.Text;
end;
NoIconsCheck:=BtnCreate(WizardForm.Handle,ScaleX(18),ScaleY(162),ScaleX(19),ScaleY(19),ExpandConstant('CheckBox.png'),8,True);
BtnSetEvent(NoIconsCheck,BtnClickEventID,WrapBtnCallback(@NoIconsClick,1));
BtnSetEvent(NoIconsCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(NoIconsCheck,GetSysCursorHandle(32649));
BtnSetChecked(NoIconsCheck,True);
NoIconsLabel := TLabel.Create(WizardForm);
with NoIconsLabel do begin
Parent:=WizardForm;
AutoSize:=true;
Transparent:=True;
SetBounds(ScaleX(40), ScaleY(163), ScaleX(0), ScaleY(0));
Font.Name:= 'Tahoma'
Font.Size:= 9;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:NoIconsCheck}');
Cursor := crHand;
OnClick:= @NoIconsLabelClick;
end;
SelectTasksPage := CreateCustomPage(wpSelectProgramGroup, ExpandConstant('{cm:TasksName}'), ExpandConstant('{cm:TasksDescription}'));
DesktopCheck:=BtnCreate(WizardForm.Handle,ScaleX(18),ScaleY(182),ScaleX(19),ScaleY(19),ExpandConstant('CheckBox.png'),8,True);
BtnSetEvent(DesktopCheck,BtnClickEventID,WrapBtnCallback(@DesktopClick,1));
BtnSetEvent(DesktopCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(DesktopCheck,GetSysCursorHandle(32649));
BtnSetChecked(DesktopCheck,True);
DesktopLabel := TLabel.Create(WizardForm);
with DesktopLabel do begin
AutoSize:=False;
SetBounds(ScaleX(40), ScaleY(183), ScaleX(225), ScaleY(17));
OnClick:= @DesktopLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 9;
Font.Color:=$FFFFFF;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Desktop}');
Parent := WizardForm;
end;
RedistCheck:=BtnCreate(WizardForm.Handle,ScaleX(18),ScaleY(207),ScaleX(19),ScaleY(19),ExpandConstant('CheckBox.png'),8,True);
BtnSetEvent(RedistCheck,BtnClickEventID,WrapBtnCallback(@RedistClick,1));
BtnSetEvent(RedistCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(RedistCheck,GetSysCursorHandle(32649));
BtnSetChecked(RedistCheck, False);
RedistLabel := TLabel.Create(WizardForm);
with RedistLabel do begin
AutoSize:=False;
SetBounds(ScaleX(40), ScaleY(208), ScaleX(299), ScaleY(17));
OnClick:= @RedistLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Redist}');
Parent := WizardForm;
end;
DirectXCheck:=BtnCreate(WizardForm.Handle,ScaleX(28),ScaleY(227),ScaleX(19),ScaleY(19),ExpandConstant('CheckBox.png'),8,True);
BtnSetEvent(DirectXCheck,BtnClickEventID,WrapBtnCallback(@DirectXClick,1));
BtnSetEvent(DirectXCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(DirectXCheck,GetSysCursorHandle(32649));
BtnSetChecked(DirectXCheck, False);
DirectXLabel := TLabel.Create(WizardForm);
with DirectXLabel do begin
AutoSize:=False;
SetBounds(ScaleX(50), ScaleY(228), ScaleX(120), ScaleY(17));
OnClick:= @DirectXLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:DirectX}');
Parent := WizardForm;
end;
VisualCCheck:=BtnCreate(WizardForm.Handle,ScaleX(28),ScaleY(247),ScaleX(19),ScaleY(19),ExpandConstant('CheckBox.png'),8,True);
BtnSetEvent(VisualCCheck,BtnClickEventID,WrapBtnCallback(@VisualCClick,1));
BtnSetEvent(VisualCCheck,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1));
BtnSetCursor(VisualCCheck,GetSysCursorHandle(32649));
BtnSetChecked(VisualCCheck, False);
VisualCLabel := TLabel.Create(WizardForm);
with VisualCLabel do begin
AutoSize:=False;
SetBounds(ScaleX(50), ScaleY(248), ScaleX(195), ScaleY(17));
OnClick:= @VisualCLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:VisualC}');
Parent := WizardForm;
end;
//========== [Конец - Задачи] =========\\
//========== [Начало - Установка] ==========\\
IsDoneAddComponents
StatusLabel:= TLabel.Create(WizardForm);
with StatusLabel do begin
Parent := WizardForm;
AutoSize:=True;
Transparent := True;
SetBounds(ScaleX(55), ScaleY(225), ScaleX(0), ScaleY(0));
Font.Name:='Tahoma';
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Caption:=ExpandConstant('{cm:Extracted}');
end;
//========== [Конец - Установка] ==========\\
//========== [Начало - Завершить] ==========\\
FinishedHeadingLabel:= TLabel.Create(WizardForm);
with FinishedHeadingLabel do begin
Parent:=WizardForm;
AutoSize:=False;
Transparent:=True;
SetBounds(ScaleX(15), ScaleY(225), ScaleX(346), ScaleY(120));
Font.Name:= 'Tahoma';
Font.Size:= 9;
Font.Color:=$B5B5B5;
Font.Style:=[fsBold];
Alignment := taCenter;
Caption:=ExpandConstant('{cm:FinishedHeadingLabel}');
end;
end;
//========== [Конец - Завершить] ==========\\
//========== [Начало - Текстуры кнопок] ==========\\
procedure ButtonsTextures;
begin
WFButtonFont:=TFont.Create;
WFButtonFont.Style:=[fsBold];
with WizardForm.BackButton do begin
hBackBtn:=BtnCreate(WizardForm.Handle,ScaleX(105), ScaleY(420), ScaleX(81), ScaleY(40),ExpandConstant('btn.png'),0,False);
BtnSetEvent(hBackBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hBackBtn,WFButtonFont.Handle);
BtnSetFontColor(hBackBtn,$B5B5B5,$B5B5B5,$B5B5B5,$B5B5B5);
BtnSetCursor(hBackBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.NextButton do begin
hNextBtn:=BtnCreate(WizardForm.Handle,ScaleX(195), ScaleY(420), ScaleX(81), ScaleY(40),ExpandConstant('btn.png'),0,False);
BtnSetEvent(hNextBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hNextBtn,WFButtonFont.Handle);
BtnSetFontColor(hNextBtn,$B5B5B5,$B5B5B5,$B5B5B5,$B5B5B5);
BtnSetCursor(hNextBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.CancelButton do begin
hCancelBtn:=BtnCreate(WizardForm.Handle,ScaleX(285), ScaleY(420), ScaleX(81), ScaleY(40),ExpandConstant('btn.png'),0,False);
BtnSetEvent(hCancelBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hCancelBtn,WFButtonFont.Handle);
BtnSetFontColor(hCancelBtn,$B5B5B5,$B5B5B5,$B5B5B5,$B5B5B5);
BtnSetCursor(hCancelBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
with WizardForm.DirBrowseButton do begin
hDirBrowseBtn:=BtnCreate(WizardForm.Handle,ScaleX(285), ScaleY(150), ScaleX(81), ScaleY(40),ExpandConstant('btn.png'),0,False);
BtnSetEvent(hDirBrowseBtn,BtnClickEventID,WrapBtnCallback(@WizardFormBtnClick,1));
BtnSetFont(hDirBrowseBtn,WFButtonFont.Handle);
BtnSetFontColor(hDirBrowseBtn,$B5B5B5,$B5B5B5,$B5B5B5,$B5B5B5);
BtnSetCursor(hDirBrowseBtn,GetSysCursorHandle(32649));
Width:=0;
Height:=0;
end;
end;
//========== [Конец - Текстуры кнопок] ==========\\
//========== [Начало - Прячем компоненты] ==========\\
procedure HideComponents;
begin;
DirEditLabel.Hide;
GroupEditLabel.Hide;
BtnSetVisibility(hDirBrowseBtn,False);
BtnSetVisibility(DesktopCheck,False);
BtnSetVisibility(RedistCheck,False);
BtnSetVisibility(DirectXCheck,False);
BtnSetVisibility(VisualCCheck,False);
BtnSetVisibility(NoIconsCheck,False);
FreeSpaceLabel.Hide;
NeedSpaceLabel.Hide;
IsDoneHide;
StatusLabel.Hide;
FinishedHeadingLabel.Hide;
DesktopLabel.Hide;
RedistLabel.Hide;
DirectXLabel.Hide;
VisualCLabel.Hide;
NoIconsLabel.Hide;
end;
//========== [Конец - Прячем компоненты] ==========\\
//========== [Начало - Показываем компоненты] ==========\\
procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
DirEditLabel.Show;
BtnSetVisibility(hDirBrowseBtn,True);
FreeSpaceLabel.Show;
NeedSpaceLabel.Show;
ImgSetVisibility(Edit,True);
end;
SelectTasksPage.ID:
begin
NoIconsLabel.Show;
BtnSetVisibility(NoIconsCheck,True);
BtnSetVisibility(DesktopCheck,True);
BtnSetVisibility(RedistCheck,True);
BtnSetVisibility(DirectXCheck,True);
BtnSetVisibility(VisualCCheck,True);
DesktopLabel.Show;
RedistLabel.Show;
DirectXLabel.Show;
VisualCLabel.Show;
WizardForm.NextButton.Caption:=SetupMessage(msgButtonInstall);
end;
wpInstalling:
begin
StatusLabel.Show;
IsDoneShow();
end;
wpFinished:
begin
FinishedHeadingLabel.Show;
end;
end;
end;
//========== [Конец - Показываем компоненты] ==========\\
procedure LogoCreate;
begin
ImgSetVisibility(Logo,True);
end;
procedure InitializeWizard;
begin
WizardForm.Position:=poScreenCenter;
CreateWizardForm;
ButtonsTextures;
#ifdef Splash
Splash;
#endif
LogoCreate;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ImgSetVisibility(Edit,False);
ShowComponents(CurPageID);
ImgApplyChanges(WizardForm.Handle);
SetStateNewButtons;
if CurPageID=wpWelcome then
begin
OldDisk:='';
GetFreeSpaceCaption(nil);
end;
if (CurPageID = wpFinished) and ISDoneError then begin
WizardForm.Caption:= ExpandConstant('{cm:Error}');
FinishedHeadingLabel.Font.Color:= $0000FF;
FinishedHeadingLabel.Caption:= ExpandConstant('{cm:ErrorFinishedHeadingLabel}');
DelTree(ExpandConstant('{app}'), True, True, True);
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
IsDoneUnpack(CurStep);
end;
procedure DeinitializeSetup;
begin
gdipShutdown;
UnloadSkin();
end;