Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

articlebot (13-10-2013 23:33): продолжение темы - №15
 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Hell_Dog2011

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#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;

Всего записей: 99 | Зарегистр. 27-11-2011 | Отправлено: 21:15 13-10-2012
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
articlebot (13-10-2013 23:33): продолжение темы - №15


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru