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