#define DirectX #include "Modules\botva2.iss" [Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program OutputBaseFilename=setup [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" [CustomMessages] rus.DirectX=Обновить DirectX rus.DirectXInstall=Идет обновление DirectX... [Files] Source: "Files\*"; DestDir: "{tmp}"; Flags: dontcopy [Code_] var DirectXCheck : HWND; DirectXLabel : TLabel; function InitializeSetup:boolean; begin if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll'); if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll'); Result:=True; end; procedure DirectXClick(hBtn:HWND); begin if BtnGetChecked(hBtn) then DirectXLabel.Font.Color:=clBlue else DirectXLabel.Font.Color:=clBlack; end; procedure DirectXLabelClick(Sender:TObject); begin BtnSetChecked(DirectXCheck, not BtnGetChecked(DirectXCheck)); DirectXClick(DirectXCheck); end; procedure RedesignWizardForm; begin ExtractTemporaryFile('CheckBox.png'); #ifdef DirectX //создаем чекбокс DirectXCheck:=BtnCreate(WizardForm.SelectDirPage.Handle, ScaleX(0),ScaleY(120),ScaleX(28),ScaleY(28),ExpandConstant('{tmp}\CheckBox.png'),0,True); BtnSetEvent(DirectXCheck,BtnClickEventID,WrapBtnCallback(@DirectXClick,1)); BtnSetCursor(DirectXCheck,GetSysCursorHandle(32649)); // создаем надпись к нему DirectXLabel := TLabel.Create(WizardForm); with DirectXLabel do begin AutoSize:=False; SetBounds(ScaleX(35), ScaleY(128), ScaleX(145), ScaleY(17)); OnClick:= @DirectXLabelClick; Cursor:= CrHand; Caption := ExpandConstant('{cm:DirectX}'); Parent := WizardForm.SelectDirPage; end; #endif end; procedure InitializeWizard(); begin RedesignWizardForm; end; procedure CurStepChanged(CurStep: TSetupStep); var ErrorCode: Integer; begin case CurStep of ssPostInstall: begin #ifdef DirectX if BtnGetChecked(DirectXCheck) then begin WizardForm.StatusLabel.Caption := ExpandConstant('{cm:DirectXInstall}'); Exec(ExpandConstant('{src}\Redist\DirectX 9\DXSETUP.exe'), '/silent', ExpandConstant('{src}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode); end; #endif end; end; end; procedure DeinitializeSetup; begin gdipShutdown; end; |