Jump to content
Korean Random
EvilAlex

Создание инсталляторов для модпаков на базе Inno Setup

Recommended Posts

@psix89, ну значит у тебя игра не по родному пути стоит.

Переустанови игру.

Только что переустановил 

E:\World_of_Tanks

wot.txt

Edited by psix89

Share this post


Link to post

Short link
Share on other sites

 

Try this:

[Code]
Var
 Count: Integer;

Function GetAppDir(Path: String): String;
begin
 if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812NA}_is1') then
 begin
  RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812NA}_is1', 'InstallLocation', Path);
  Result := Path
 end else
  Result := ExpandConstant('C:\Games\World_of_Tanks')
end;

Function NextButtonClick(CurPageID: Integer): Boolean;
begin
 Result := True;
 if CurPageID = wpSelectDir then
 begin
  case (FileExists(ExpandConstant('{app}\WOTLauncher.exe')) and FileExists(ExpandConstant('{app}\WorldOfTanks.exe'))) of
   False:
   begin
    if Count = 0 then
     MsgBox('Incorrect game folder!', mbError, MB_OK);
    Count := Count + 1;
    Result := (Count = 2);
   end;
   True: Result := True;
  end;
 end;
end;

 

Спасибо вам так много Kotyarko_O ...... Это работало идеально. :)

That would have taken me 2 hours to figure out, LOL

 

BTW, is it possible you or someone can help me with this question?  Would be helpful.

 

http://www.koreanrandom.com/forum/topic/9050-%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%BB%D1%8F%D1%82%D0%BE%D1%80-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BE%D0%B4%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2/page-172?do=findComment&comment=272346

Edited by leeuniverse

Share this post


Link to post

Short link
Share on other sites

подскажи плиз как сделать так чтобы компаненты не выбирались при установки(т.е. не ставилась галочка)Где то до этого видел а щас не могу найти

Share this post


Link to post

Short link
Share on other sites

Дорого Времени Суток!!! 
 
Кто сможет подскажите в чем причина ???
Взял BackUpPage тут  из темы ... но почему то когда делаешь резервную копию (бекап) у меня получаються пустые папки или в папках вместо 10 файлов(папок) около 5 файлов...
 
кусок скрипта

function BackupCheck_3(): Boolean;
begin
  If MoveRadioButton.Checked then
begin
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\flash\lobby.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\flash'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\battle.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\Minimap.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\PlayersPanel.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\StatisticForm.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\TeamBasesPanel.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\VehicleMarkersManager.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\xvm.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\configs\'),ExpandConstant('{app}\res_mods\backup\configs'));
  MoveDir(ExpandConstant('{app}\res_mods\mods\'),ExpandConstant('{app}\res_mods\backup\mods'));
  CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\flash\lobby.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\battle.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\Minimap.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\PlayersPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\StatisticForm.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\TeamBasesPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\VehicleMarkersManager.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\xvm.swf'));
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
end;
end;

 
вот сам BackUpPage

'тут'

#include "SHFileOperation.iss"

[code]
var
  BackupPage: TWizardPage;
  DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

const
  BackupDescText =
    'Выберите необходимый пункт из представленных.'#13' '#13'Во избежание проблем совместимости и конфликтов между модами, рекомендуется удалить ваш старый XVM.';
  DeleteDescText =
    'Установщик удалит ваш старый XVM, который был установлен ранее';
  MoveDescText =
    'Установщик сделает резервную копию старого XVM, '#13'востановить его сможите из папки ...\res_mods\backup.';
  NoneDescText =
    'Установщик установит XVM поверх старого.';

function BackupCheck_1(): Boolean;
var
  BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;
begin
  BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');
  BackupDescLabel:=TLabel.Create(WizardForm);
  BackupDescLabel.Parent:=BackupPage.Surface;
  BackupDescLabel.Left:=110;
  BackupDescLabel.Top:=10;
  BackupDescLabel.Width:=BackupPage.SurfaceWidth;
  BackupDescLabel.Height:=90;
  BackupDescLabel.AutoSize:=False;
  BackupDescLabel.Wordwrap:=True;
  BackupDescLabel.Caption:=BackupDescText;

  DeleteRadioButton:=TNewRadioButton.Create(WizardForm);
  DeleteRadioButton.Parent:=BackupPage.Surface;
  DeleteRadioButton.Checked:=True;
  DeleteRadioButton.Top:=105;
  DeleteRadioButton.Left:=110;
  DeleteRadioButton.Width:=BackupPage.SurfaceWidth;
  DeleteRadioButton.Font.Style:=[fsBold];
  DeleteRadioButton.Font.Size:=9;
  DeleteRadioButton.Caption:='Удалить старый XVM (рекомендуется)'
  DeleteDescLabel:=TLabel.Create(WizardForm);
  DeleteDescLabel.Parent:=BackupPage.Surface;
  DeleteDescLabel.Left:=110;
  DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height + 4;
  DeleteDescLabel.Width:=BackupPage.SurfaceWidth;
  DeleteDescLabel.Height:=40;
  DeleteDescLabel.AutoSize:=False;
  DeleteDescLabel.Wordwrap:=True;
  DeleteDescLabel.Caption:=DeleteDescText;

  MoveRadioButton:=TNewRadioButton.Create(WizardForm);
  MoveRadioButton.Parent:=BackupPage.Surface;
  MoveRadioButton.Checked:=False;
  MoveRadioButton.Top:=180;
  MoveRadioButton.Left:=110;
  MoveRadioButton.Width:=BackupPage.SurfaceWidth;
  MoveRadioButton.Font.Style:=[fsBold];
  MoveRadioButton.Font.Size:=9;
  MoveRadioButton.Caption:='Сделать резервную копию XVMa'
  MoveDescLabel:=TLabel.Create(WizardForm);
  MoveDescLabel.Parent:=BackupPage.Surface;
  MoveDescLabel.Left:=110;
  MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height + 4;
  MoveDescLabel.Width:=BackupPage.SurfaceWidth;
  MoveDescLabel.Height:=40;
  MoveDescLabel.AutoSize:=False;
  MoveDescLabel.Wordwrap:=True;
  MoveDescLabel.Caption:=MoveDescText;

  NoneRadioButton:=TNewRadioButton.Create(WizardForm);
  NoneRadioButton.Parent:=BackupPage.Surface;
  NoneRadioButton.Checked:=False;
  NoneRadioButton.Top:=255;
  NoneRadioButton.Left:=110;
  NoneRadioButton.Width:=BackupPage.SurfaceWidth;
  NoneRadioButton.Font.Style:=[fsBold];
  NoneRadioButton.Font.Size:=9;
  NoneRadioButton.Caption:='Установить поверх старого XVMa'
  NoneDescLabel:=TLabel.Create(WizardForm);
  NoneDescLabel.Parent:=BackupPage.Surface;
  NoneDescLabel.Left:=110;
  NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height + 4;
  NoneDescLabel.Width:=BackupPage.SurfaceWidth;
  NoneDescLabel.Height:=40;
  NoneDescLabel.AutoSize:=False;
  NoneDescLabel.Wordwrap:=True;
  NoneDescLabel.Caption:=NoneDescText;
end;

function BackupCheck_2(): Boolean;
begin
  If DeleteRadioButton.Checked then
begin
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\flash\Application.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\battle.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\Minimap.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\PlayersPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\StatisticForm.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\TeamBasesPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\VehicleMarkersManager.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\xvm.swf'));
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
  CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
  If MoveRadioButton.Checked then
begin
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\flash\lobby.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\flash'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\battle.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\Minimap.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\PlayersPanel.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\StatisticForm.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\TeamBasesPanel.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\VehicleMarkersManager.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\xvm.swf'),ExpandConstant('{app}\res_mods\backup\{#Patch}\gui\scaleform'));
  MoveDir(ExpandConstant('{app}\res_mods\configs\'),ExpandConstant('{app}\res_mods\backup\configs'));
  MoveDir(ExpandConstant('{app}\res_mods\mods\'),ExpandConstant('{app}\res_mods\backup\mods'));
  CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\flash\lobby.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\battle.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\Minimap.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\PlayersPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\StatisticForm.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\TeamBasesPanel.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\VehicleMarkersManager.swf'));
  DeleteFile(ExpandConstant('{app}\res_mods\{#Patch}\gui\scaleform\xvm.swf'));
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  If CurStep=ssInstall then
begin
  BackupCheck_2();
  BackupCheck_3();
end;
end;

procedure InitializeWizard1();
begin
  BackupCheck_1();
end;

Share this post


Link to post

Short link
Share on other sites

Дорого Времени Суток!!! 

 

Кто сможет подскажите в чем причина ???

Взял BackUpPage тут  из темы ... но почему то когда делаешь резервную копию (бекап) у меня получаються пустые папки или в папках вместо 10 файлов(папок) около 5 файлов...

на юникоде запусти 

Share this post


Link to post

Short link
Share on other sites
Кто сможет подскажите в чем причина ???

У вас Ansi или Unicode компилятор?

SHFileOperation, который выкладывался в этой теме для анси. Могу выложить для юникода.

Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

скачал Inno Setup здесь из шапки...

а какой у меня точно не знаю, но думаю что Unicode ... написано что - 5.5.1.ee2 (u) (build 121002)

Share this post


Link to post

Short link
Share on other sites

а какой у меня точно не знаю, но думаю что Unicode ... написано что - 5.5.1.ee2 (u) (build 121002)

Да, это юникод.

Вот SHFile для него: SHFileOperation.rar

Edited by Kotyarko_O
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Kotyarko_O спасибо + !!! заработало;) 


Еще не подскажите скрипт на то что бы при нажатии на кнопку появлялось окно с инфой (например ФАК) ...   

Share this post


Link to post

Short link
Share on other sites

Еще не подскажите скрипт на то что бы при нажатии на кнопку появлялось окно с инфой (например ФАК) ...   

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: ............\Информация.rtf; Flags: dontcopy

[Code]
var
  Info: TNewButton;

procedure information(Sender: TObject); forward;

procedure RedesignWizardForm;
begin
  Info := TNewButton.Create(WizardForm);
  with Info do
  begin
    Name := 'Info';
    Parent := WizardForm;
    Left := ScaleX(80);
    Top := ScaleY(328);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Cursor := crHand;
    Caption := 'Инфо';
    OnClick := @information;
  end;
end;

procedure information(Sender:Tobject);
var
  informationrtf: ansiString;
  informationForm: TSetupForm;
  informationEdit: TRichEditViewer;
  informationImage: TNewButton;
begin
  ExtractTemporaryFile('Информация.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\Информация.rtf', informationrtf);
//""""""""""""""""""""""""""""""""""""""""""""""//
informationForm := CreateCustomForm();
with informationForm do
begin
  ClientWidth:=ScaleX(700);
  ClientHeight:=ScaleY(570);
  Caption := 'Информация о Модпаке';
  CenterInsideControl(WizardForm, False);
//""""""""""""""""""""""""""""""""""""""""""""""//
informationEdit := TRichEditViewer.Create(informationForm);
with informationEdit do
begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(680),ScaleY(510));
  Parent := informationForm;
  Font.Size := 8;
  RTFText:= informationrtf;
  ScrollBars := ssVertical;
end;
//""""""""""""""""""""""""""""""""""""""""""""""//

informationImage := TNewButton.Create(informationForm);
with informationImage do
begin
  SetBounds(ScaleX(310),ScaleY(530),ScaleX(100),ScaleY(32));
  Parent := informationForm;
  Font.Color := clWindowText;
  Font.Height := -12;
  Font.Name := '@Arial Unicode MS';
  ParentFont := False;
  ModalResult:= mrOk;
  Caption := 'Закрыть';
  Cursor := crHand;
end;
  ShowModal;
  Free;
end;
end;
procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: ............\Информация.rtf; Flags: dontcopy

[Code]
var
  Info: TNewButton;

procedure information(Sender: TObject); forward;

procedure RedesignWizardForm;
begin
  Info := TNewButton.Create(WizardForm);
  with Info do
  begin
    Name := 'Info';
    Parent := WizardForm;
    Left := ScaleX(80);
    Top := ScaleY(328);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Cursor := crHand;
    Caption := 'Инфо';
    OnClick := @information;
  end;
end;

procedure information(Sender:Tobject);
var
  informationrtf: ansiString;
  informationForm: TSetupForm;
  informationEdit: TRichEditViewer;
  informationImage: TNewButton;
begin
  ExtractTemporaryFile('Информация.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\Информация.rtf', informationrtf);
//""""""""""""""""""""""""""""""""""""""""""""""//
informationForm := CreateCustomForm();
with informationForm do
begin
  ClientWidth:=ScaleX(700);
  ClientHeight:=ScaleY(570);
  Caption := 'Информация о Модпаке';
  CenterInsideControl(WizardForm, False);
//""""""""""""""""""""""""""""""""""""""""""""""//
informationEdit := TRichEditViewer.Create(informationForm);
with informationEdit do
begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(680),ScaleY(510));
  Parent := informationForm;
  Font.Size := 8;
  RTFText:= informationrtf;
  ScrollBars := ssVertical;
end;
//""""""""""""""""""""""""""""""""""""""""""""""//

informationImage := TNewButton.Create(informationForm);
with informationImage do
begin
  SetBounds(ScaleX(310),ScaleY(530),ScaleX(100),ScaleY(32));
  Parent := informationForm;
  Font.Color := clWindowText;
  Font.Height := -12;
  Font.Name := '@Arial Unicode MS';
  ParentFont := False;
  ModalResult:= mrOk;
  Caption := 'Закрыть';
  Cursor := crHand;
end;
  ShowModal;
  Free;
end;
end;
procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
 

 

простите неуч... но походу у меня руки не оттуда растут !!! 

... но у меня ругается на procedure InitializeWizard(); ... 

 

вот код


[Setup]
AppId={{#GameID}
AppName={#MyAppName}
AppVersion={#MyAppVer}
AppPublisher={#MyAppPublisher}

//====={ Ссылки }=====\\
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}

//====={ Папка установки }=====\\
DefaultDirName={code:MyDirName}
AppendDefaultDirName=no
DirExistsWarning=no
CreateUninstallRegKey=yes
Uninstallable=yes
UninstallFilesDir={app}\Удаление {#MyAppName}

//====={ Картинки }=====\\
SetupIconFile=Files\ico.ico
UninstallDisplayIcon={app}\unins000.exe
WizardImageFile=Files\img1.bmp
WizardSmallImageFile=Files\Small.bmp
//====={ Отключение строниц }=====\\
DisableProgramGroupPage=yes

//====={ Лицензия и Фак }=====\\
;LicenseFile=licensia.rtf
InfoBeforeFile=faq.rtf

//====={ Папка создания и название сетапа }=====\\
OutputDir=.\Output
OutputBaseFilename={#MyAppName}_v{#MyInfoVer}{#MyAppVer}

//====={ Сжатие сетапа }=====\\
InternalCompressLevel=max
Compression=lzma2/max

//--------------- ваши картинки ---------------\\
[Files]
Source: "ReadMeRu.rtf"; DestDir: "{tmp}"; Flags: ignoreversion
Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption
DestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\img2.bmp"; Flags: dontcopy solidbreak

[Code]
//--------------- ФАК ---------------\\
var
InfoForm: TSetupForm;
Info, Ok: TButton;
InfoBefore: TRichEditViewer;
ReadmeRu,ReadmeEn: AnsiString;

procedure Okclick(Sender: TObject);
begin
  InfoForm.Close;
  WizardForm.Enabled:=True;
end;

procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WizardForm.Enabled:=true;
end;

procedure InfoClick(Sender: TObject);
begin
InfoForm:= CreateCustomForm();
with InfoForm do begin
  ClientWidth := ScaleX(350);
  ClientHeight := ScaleY(250);
  CenterInsideControl(WizardForm, False);
  Caption:='';
  onClose:=@FormClose;
Ok:=tbutton.create(InfoForm)
with Ok do begin
  SetBounds(ScaleX(290),ScaleY(210),ScaleX(50),ScaleY(30));
  parent:=InfoForm;
  Caption:='OK';
  onclick:=@OKclick;
  end;
InfoBefore:= TRichEditViewer.Create(InfoForm);
with InfoBefore do begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(330),ScaleY(180));
  Parent:= InfoForm;
  //    ParentColor := True;
  //    Color:= WizardForm.Color;
  //    BorderStyle:= bsNone;
  ScrollBars:= ssVertical;
  ReadOnly:= true;
  RTFText:= ReadmeRu
end;
  InfoForm.Show;
  WizardForm.Enabled:=false;
end;
end;

procedure InitializeWizard;
begin
  ExtractTemporaryFile('ReadMeRu.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);
  Info:=tbutton.create(WizardForm);
  with Info do begin
  Parent:=WizardForm;
  SetBounds(ScaleX(20),ScaleY(325),ScaleX(45),ScaleY(30));
  Caption:='x';
  OnClick:=@InfoClick;
end;
end;
//--------------- ФАК ---------------\\


function MyDirName(S:String): String;
var
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

//==== Проверка  WoT ====\\
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Не верно указана папка с игрой World_of_Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;
//==== Проверка  WoT ====\\


procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
  ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)
end;
var
  BitmapImage1: TBitmapImage;
procedure RedesignWizardForm;
var
  i: integer;
  BtnPanel: TPanel;
  BtnImage: TBitmapImage;
begin
  ExtractTemporaryFile('logo.bmp')
  BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
  Left:=20
  Top:=494
  Width:=82
  Height:=27
  Cursor:=crHand
  OnClick:=@logoOnClick
  Parent:=WizardForm
end;
  BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
  AutoSize:=True;
  Enabled:=False;
  Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')
  Parent:=BtnPanel
  end;
{ BitmapImage1 }
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
  Parent := WizardForm.SelectDirPage;
  Left := ScaleX(0);
  Top := ScaleY(115);
  Width := ScaleX(620);
  Height := ScaleY(260);
  ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
  Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
  end;
end;


function WindowResize(): Boolean;
var
  HeightOffset, WidthOffset: Integer;
begin
  HeightOffset:=170;
  WidthOffset:=200;

  WizardForm.Height:=WizardForm.Height + HeightOffset;
  WizardForm.Width:=WizardForm.Width + WidthOffset;

  WizardForm.NextButton.Top:=WizardForm.NextButton.Top + HeightOffset;
  WizardForm.BackButton.Top:=WizardForm.BackButton.Top + HeightOffset;
  WizardForm.CancelButton.Top:=WizardForm.CancelButton.Top + HeightOffset;
  WizardForm.NextButton.Left:=WizardForm.NextButton.Left + WidthOffset;
  WizardForm.BackButton.Left:=WizardForm.BackButton.Left + WidthOffset;
  WizardForm.CancelButton.Left:=WizardForm.CancelButton.Left + WidthOffset;

  WizardForm.OuterNotebook.Height:=WizardForm.OuterNotebook.Height + HeightOffset;
  WizardForm.InnerNotebook.Height:=WizardForm.InnerNotebook.Height + HeightOffset;
  WizardForm.OuterNotebook.Width:=WizardForm.OuterNotebook.Width + WidthOffset;
  WizardForm.InnerNotebook.Width:=WizardForm.InnerNotebook.Width + WidthOffset;
  WizardForm.WizardSmallBitmapImage.Left:= WizardForm.WizardSmallBitmapImage.Left + WidthOffset;
  WizardForm.Bevel.Top:=WizardForm.Bevel.Top + HeightOffset;
  WizardForm.BeveledLabel.Top:=WizardForm.BeveledLabel.Top + HeightOffset;
  WizardForm.Bevel.Width:=WizardForm.Bevel.Width + WidthOffset;
  WizardForm.Bevel1.Width:=WizardForm.Bevel1.Width + WidthOffset;
  WizardForm.MainPanel.Width:=WizardForm.MainPanel.Width + WidthOffset;
  WizardForm.BeveledLabel.Width:=WizardForm.BeveledLabel.Width + WidthOffset;
  WizardForm.Center;

{ /// --- Раскомментировать при желании ---- ///
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.FinishedLabel.Hide;
  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.WizardBitmapImage.Width:=600;
  WizardForm.WizardBitmapImage.Height:=400;
  WizardForm.WizardBitmapImage2.Width:=600;
  WizardForm.WizardBitmapImage2.Height:=400;
  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.WizardSmallBitmapImage.Top:=0;
  WizardForm.WizardSmallBitmapImage.Left:=0;
  WizardForm.WizardSmallBitmapImage.Width:=WizardForm.Width;
  WizardForm.WizardSmallBitmapImage.Height:=58;
  /// --- Конец ---- ///
}
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.WizardBitmapImage.Width:=697;
  WizardForm.WizardBitmapImage.Height:=483;

  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.FinishedLabel.Hide;
  WizardForm.YesRadio.Hide;
  WizardForm.NoRadio.Hide;
  WizardForm.WizardBitmapImage2.Width:=697;
  WizardForm.WizardBitmapImage2.Height:=483;

  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.WizardSmallBitmapImage.Top:=0;
  WizardForm.WizardSmallBitmapImage.Left:=0;
  WizardForm.WizardSmallBitmapImage.Width:=697;
  WizardForm.WizardSmallBitmapImage.Height:=58;

  WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;
  WizardForm.WelcomeLabel1.Height:=WizardForm.WelcomeLabel1.Height + HeightOffset;
  WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;

  WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;
  WizardForm.WelcomeLabel2.Height:=WizardForm.WelcomeLabel2.Height + HeightOffset;
  WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;


  WizardForm.LicenseLabel1.Width:=WizardForm.LicenseLabel1.Width + WidthOffset;
  WizardForm.LicenseMemo.Height:=WizardForm.LicenseMemo.Height + HeightOffset;
  WizardForm.LicenseMemo.Width:=WizardForm.LicenseMemo.Width + WidthOffset;
  WizardForm.LicenseNotAcceptedRadio.Top:=WizardForm.LicenseNotAcceptedRadio.Top + HeightOffset;
  WizardForm.LicenseAcceptedRadio.Top:=WizardForm.LicenseAcceptedRadio.Top + HeightOffset;

  WizardForm.InfoBeforeClickLabel.Width:=WizardForm.InfoBeforeClickLabel.Width + WidthOffset;
  WizardForm.InfoBeforeMemo.Height:=WizardForm.InfoBeforeMemo.Height + HeightOffset;
  WizardForm.InfoBeforeMemo.Width:=WizardForm.InfoBeforeMemo.Width + WidthOffset;

  WizardForm.SelectDirLabel.Width:=WizardForm.SelectDirLabel.Width + WidthOffset;
  WizardForm.SelectDirBrowseLabel.Width:=WizardForm.SelectDirBrowseLabel.Width + WidthOffset;
  WizardForm.DiskSpaceLabel.Top:=WizardForm.DiskSpaceLabel.Top + HeightOffset;
  WizardForm.DirBrowseButton.Left:=WizardForm.DirBrowseButton.Left + HeightOffset;
  WizardForm.DirEdit.Width:=WizardForm.DirEdit.Width + HeightOffset;

  WizardForm.ComponentsDiskSpaceLabel.Top:=WizardForm.ComponentsDiskSpaceLabel.Top + HeightOffset;
  WizardForm.SelectComponentsLabel.Width:=WizardForm.SelectComponentsLabel.Width + WidthOffset;
  WizardForm.ComponentsList.Height:=WizardForm.ComponentsList.Height + HeightOffset;
  WizardForm.ComponentsList.Width:=WizardForm.ComponentsList.Width + WidthOffset;

  WizardForm.ReadyLabel.Width:=WizardForm.ReadyLabel.Width + WidthOffset;
  WizardForm.ReadyMemo.Height:=WizardForm.ReadyMemo.Height + HeightOffset;
  WizardForm.ReadyMemo.Width:=WizardForm.ReadyMemo.Width + WidthOffset;

  WizardForm.ProgressGauge.Width:=WizardForm.ProgressGauge.Width + HeightOffset;
  WizardForm.FilenameLabel.Width:=WizardForm.FilenameLabel.Width + HeightOffset;
  WizardForm.StatusLabel.Width:=WizardForm.StatusLabel.Width + HeightOffset;
end;

/// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- ///

type
  TComponentDesc = record
    Description: String;
    ImageName: String;
    Index: Integer;
  end;

var
  CompDescs: array of TComponentDesc;
  CompDescPanel, CompDescImgPanel: TPanel;
  CompDescText: array[1..2] of TLabel;
  CompIndex, LastIndex: Integer;
  CompDescImg: TBitmapImage;

procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
  i: Integer;
begin
  if Index = LastIndex then Exit;
  CompIndex := -1;
  for i := 0 to GetArrayLength(CompDescs) -1 do
  begin
    if (CompDescs[i].Index = Index) then
    begin
      CompIndex := i;
      Break;
    end;
  end;
  if (CompIndex >= 0) and (Area = iaItem) then
  begin
    if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
      ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
    CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
    CompDescImg.Show;

    CompDescText[2].Caption := CompDescs[CompIndex].Description;
    CompDescText[2].Enabled := True;
  end else
  begin
    CompDescText[2].Caption := CustomMessage('ComponentsInfo');
    CompDescText[2].Enabled := False;
    CompDescImg.Hide;
  end;
  LastIndex := Index;
end;

procedure CompListMouseLeave(Sender: TObject);
begin
  CompDescImg.Hide;
  CompDescText[2].Caption := CustomMessage('ComponentsInfo');
  CompDescText[2].Enabled := False;
  LastIndex := -1;
end;

procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);
var
  i: Integer;
begin
  i := GetArrayLength(CompDescs);
  SetArrayLength(CompDescs, i + 1);
  CompDescs[i].Description := ADescription;
  CompDescs[i].ImageName := AImageName;
  CompDescs[i].Index := AIndex - 1
end;

procedure InitializeWizard();
begin
  InitializeWizard1(); {из BackUpPage.iss}
  //InitializeWizard2(); {из Music.iss}
  RedesignWizardForm;
  WindowResize();

begin
  WizardForm.SelectComponentsLabel.Hide;
  WizardForm.TypesCombo.Hide;
  WizardForm.ComponentsList.SetBounds(ScaleX(260), ScaleY(20), ScaleX(357), ScaleY(333));
  WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
  WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

  CompDescImgPanel := TPanel.Create(WizardForm);
  with CompDescImgPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(20), ScaleX(253), ScaleY(203));  //рамка картинки
    BevelInner := bvLowered;
  end;

  CompDescText[1] := TLabel.Create(WizardForm);
  with CompDescText[1] do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsImgInfo');
  end;

  CompDescImg := TBitmapImage.Create(WizardForm);
  with CompDescImg do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    Stretch := True;
    Hide;
  end;

  CompDescPanel := TPanel.Create(WizardForm);
  with CompDescPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(230), ScaleX(253), ScaleY(123));  //Нижния рамка
    BevelInner := bvLowered;
  end;

  CompDescText[2] := TLabel.Create(WizardForm);
  with CompDescText[2] do
  begin
    Parent := CompDescPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsInfo');
  end;

  AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp');
  AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp');
  AddCompDescription(3, CustomMessage('CompDesc3'), 'CompDescImg3.bmp');
  AddCompDescription(4, CustomMessage('CompDesc4'), 'CompDescImg4.bmp');
  AddCompDescription(5, CustomMessage('CompDesc5'), 'CompDescImg5.bmp');
  AddCompDescription(6, CustomMessage('CompDesc6'), 'CompDescImg6.bmp');
  AddCompDescription(7, CustomMessage('CompDesc7'), 'CompDescImg7.bmp');
  AddCompDescription(8, CustomMessage('CompDesc8'), 'CompDescImg8.bmp');
  AddCompDescription(9, CustomMessage('CompDesc9'), 'CompDescImg9.bmp');
  AddCompDescription(10, CustomMessage('CompDesc10'), 'CompDescImg10.bmp');
  AddCompDescription(11, CustomMessage('CompDesc11'), 'CompDescImg11.bmp');
  AddCompDescription(12, CustomMessage('CompDesc12'), 'CompDescImg12.bmp');
  AddCompDescription(13, CustomMessage('CompDesc13'), 'CompDescImg13.bmp');
  AddCompDescription(14, CustomMessage('CompDesc14'), 'CompDescImg14.bmp');
  AddCompDescription(15, CustomMessage('CompDesc15'), 'CompDescImg15.bmp');
  AddCompDescription(16, CustomMessage('CompDesc16'), 'CompDescImg16.bmp');
  AddCompDescription(17, CustomMessage('CompDesc17'), 'CompDescImg17.bmp');
  AddCompDescription(18, CustomMessage('CompDesc18'), 'CompDescImg18.bmp');
  AddCompDescription(19, CustomMessage('CompDesc19'), 'CompDescImg19.bmp');
  AddCompDescription(20, CustomMessage('CompDesc20'), 'CompDescImg20.bmp');
  AddCompDescription(21, CustomMessage('CompDesc21'), 'CompDescImg21.bmp');
  AddCompDescription(22, CustomMessage('CompDesc22'), 'CompDescImg22.bmp');
  AddCompDescription(23, CustomMessage('CompDesc23'), 'CompDescImg23.bmp');
  AddCompDescription(24, CustomMessage('CompDesc24'), 'CompDescImg24.bmp');
  AddCompDescription(25, CustomMessage('CompDesc25'), 'CompDescImg25.bmp');
  AddCompDescription(26, CustomMessage('CompDesc26'), 'CompDescImg26.bmp');
  AddCompDescription(27, CustomMessage('CompDesc27'), 'CompDescImg27.bmp');
  AddCompDescription(28, CustomMessage('CompDesc28'), 'CompDescImg28.bmp');
  AddCompDescription(29, CustomMessage('CompDesc29'), 'CompDescImg29.bmp');
  AddCompDescription(30, CustomMessage('CompDesc30'), 'CompDescImg30.bmp');
  AddCompDescription(31, CustomMessage('CompDesc31'), 'CompDescImg31.bmp');
  AddCompDescription(32, CustomMessage('CompDesc32'), 'CompDescImg32.bmp');
  AddCompDescription(33, CustomMessage('CompDesc33'), 'CompDescImg33.bmp');
  AddCompDescription(34, CustomMessage('CompDesc34'), 'CompDescImg34.bmp');
  AddCompDescription(35, CustomMessage('CompDesc35'), 'CompDescImg35.bmp');
  AddCompDescription(36, CustomMessage('CompDesc36'), 'CompDescImg36.bmp');
  AddCompDescription(37, CustomMessage('CompDesc37'), 'CompDescImg37.bmp');
  AddCompDescription(38, CustomMessage('CompDesc38'), 'CompDescImg38.bmp');
  AddCompDescription(39, CustomMessage('CompDesc39'), 'CompDescImg39.bmp');
  AddCompDescription(40, CustomMessage('CompDesc40'), 'CompDescImg40.bmp');
  AddCompDescription(41, CustomMessage('CompDesc41'), 'CompDescImg41.bmp');
  AddCompDescription(42, CustomMessage('CompDesc42'), 'CompDescImg42.bmp');
  end;
end;

Share this post


Link to post

Short link
Share on other sites

Во-первых, "ругается на.." писать не надо. Прилаживайте скрин ошибки.
Во-вторых, если бы вы хоть попытались перевести то, о чём вам говорила та ошибка, возможно, исправили бы сами. Об этом в этой теме уже раз 100 говорили.

 

'Исправленный код'

[Setup]
AppId={{#GameID}
AppName={#MyAppName}
AppVersion={#MyAppVer}
AppPublisher={#MyAppPublisher}

//====={ Ссылки }=====\\
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}

//====={ Папка установки }=====\\
DefaultDirName={code:MyDirName}
AppendDefaultDirName=no
DirExistsWarning=no
CreateUninstallRegKey=yes
Uninstallable=yes
UninstallFilesDir={app}\Удаление {#MyAppName}

//====={ Картинки }=====\\
SetupIconFile=Files\ico.ico
UninstallDisplayIcon={app}\unins000.exe
WizardImageFile=Files\img1.bmp
WizardSmallImageFile=Files\Small.bmp
//====={ Отключение строниц }=====\\
DisableProgramGroupPage=yes

//====={ Лицензия и Фак }=====\\
;LicenseFile=licensia.rtf
InfoBeforeFile=faq.rtf

//====={ Папка создания и название сетапа }=====\\
OutputDir=.\Output
OutputBaseFilename={#MyAppName}_v{#MyInfoVer}{#MyAppVer}

//====={ Сжатие сетапа }=====\\
InternalCompressLevel=max
Compression=lzma2/max

//--------------- ваши картинки ---------------\\
[Files]
Source: "ReadMeRu.rtf"; DestDir: "{tmp}"; Flags: ignoreversion
Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption
DestName: "WizardForm.BitmapImage1.bmp"; Source: "Files\img2.bmp"; Flags: dontcopy solidbreak

[Code]
//--------------- ФАК ---------------\\
var
InfoForm: TSetupForm;
Info, Ok: TButton;
InfoBefore: TRichEditViewer;
ReadmeRu,ReadmeEn: AnsiString;

procedure Okclick(Sender: TObject);
begin
  InfoForm.Close;
  WizardForm.Enabled:=True;
end;

procedure FormClose(Sender: TObject; var Action: TCloseAction);
begin
  WizardForm.Enabled:=true;
end;

procedure InfoClick(Sender: TObject);
begin
InfoForm:= CreateCustomForm();
with InfoForm do begin
  ClientWidth := ScaleX(350);
  ClientHeight := ScaleY(250);
  CenterInsideControl(WizardForm, False);
  Caption:='';
  onClose:=@FormClose;
Ok:=tbutton.create(InfoForm)
with Ok do begin
  SetBounds(ScaleX(290),ScaleY(210),ScaleX(50),ScaleY(30));
  parent:=InfoForm;
  Caption:='OK';
  onclick:=@OKclick;
  end;
InfoBefore:= TRichEditViewer.Create(InfoForm);
with InfoBefore do begin
  SetBounds(ScaleX(10),ScaleY(10),ScaleX(330),ScaleY(180));
  Parent:= InfoForm;
  //    ParentColor := True;
  //    Color:= WizardForm.Color;
  //    BorderStyle:= bsNone;
  ScrollBars:= ssVertical;
  ReadOnly:= true;
  RTFText:= ReadmeRu
end;
  InfoForm.Show;
  WizardForm.Enabled:=false;
end;
end;

procedure InitializeWizard3();
begin
  ExtractTemporaryFile('ReadMeRu.rtf');
  LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);
  Info:=tbutton.create(WizardForm);
  with Info do begin
  Parent:=WizardForm;
  SetBounds(ScaleX(20),ScaleY(325),ScaleX(45),ScaleY(30));
  Caption:='x';
  OnClick:=@InfoClick;
end;
end;
//--------------- ФАК ---------------\\


function MyDirName(S:String): String;
var
  InsPath: String;
  er: boolean;
  myFile:String;
begin
  Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда
  er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath);
  if er and (InsPath<>'') then //если ключ существует и там что-то записано
  begin
    Result := InsPath;
  end;
end;

//==== Проверка  WoT ====\\
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then
begin
MsgBox('Не верно указана папка с игрой World_of_Tanks!', mbError, MB_OK);
Result := False;
end;
end;
end;
//==== Проверка  WoT ====\\


procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
  ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)
end;
var
  BitmapImage1: TBitmapImage;
procedure RedesignWizardForm;
var
  i: integer;
  BtnPanel: TPanel;
  BtnImage: TBitmapImage;
begin
  ExtractTemporaryFile('logo.bmp')
  BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
  Left:=20
  Top:=494
  Width:=82
  Height:=27
  Cursor:=crHand
  OnClick:=@logoOnClick
  Parent:=WizardForm
end;
  BtnImage:=TBitmapImage.Create(WizardForm)
with BtnImage do begin
  AutoSize:=True;
  Enabled:=False;
  Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp')
  Parent:=BtnPanel
  end;
{ BitmapImage1 }
BitmapImage1 := TBitmapImage.Create(WizardForm);
with BitmapImage1 do
begin
  Parent := WizardForm.SelectDirPage;
  Left := ScaleX(0);
  Top := ScaleY(115);
  Width := ScaleX(620);
  Height := ScaleY(260);
  ExtractTemporaryFile('WizardForm.BitmapImage1.bmp');
  Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.BitmapImage1.bmp'));
  end;
end;


function WindowResize(): Boolean;
var
  HeightOffset, WidthOffset: Integer;
begin
  HeightOffset:=170;
  WidthOffset:=200;

  WizardForm.Height:=WizardForm.Height + HeightOffset;
  WizardForm.Width:=WizardForm.Width + WidthOffset;

  WizardForm.NextButton.Top:=WizardForm.NextButton.Top + HeightOffset;
  WizardForm.BackButton.Top:=WizardForm.BackButton.Top + HeightOffset;
  WizardForm.CancelButton.Top:=WizardForm.CancelButton.Top + HeightOffset;
  WizardForm.NextButton.Left:=WizardForm.NextButton.Left + WidthOffset;
  WizardForm.BackButton.Left:=WizardForm.BackButton.Left + WidthOffset;
  WizardForm.CancelButton.Left:=WizardForm.CancelButton.Left + WidthOffset;

  WizardForm.OuterNotebook.Height:=WizardForm.OuterNotebook.Height + HeightOffset;
  WizardForm.InnerNotebook.Height:=WizardForm.InnerNotebook.Height + HeightOffset;
  WizardForm.OuterNotebook.Width:=WizardForm.OuterNotebook.Width + WidthOffset;
  WizardForm.InnerNotebook.Width:=WizardForm.InnerNotebook.Width + WidthOffset;
  WizardForm.WizardSmallBitmapImage.Left:= WizardForm.WizardSmallBitmapImage.Left + WidthOffset;
  WizardForm.Bevel.Top:=WizardForm.Bevel.Top + HeightOffset;
  WizardForm.BeveledLabel.Top:=WizardForm.BeveledLabel.Top + HeightOffset;
  WizardForm.Bevel.Width:=WizardForm.Bevel.Width + WidthOffset;
  WizardForm.Bevel1.Width:=WizardForm.Bevel1.Width + WidthOffset;
  WizardForm.MainPanel.Width:=WizardForm.MainPanel.Width + WidthOffset;
  WizardForm.BeveledLabel.Width:=WizardForm.BeveledLabel.Width + WidthOffset;
  WizardForm.Center;

{ /// --- Раскомментировать при желании ---- ///
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.FinishedLabel.Hide;
  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.WizardBitmapImage.Width:=600;
  WizardForm.WizardBitmapImage.Height:=400;
  WizardForm.WizardBitmapImage2.Width:=600;
  WizardForm.WizardBitmapImage2.Height:=400;
  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.WizardSmallBitmapImage.Top:=0;
  WizardForm.WizardSmallBitmapImage.Left:=0;
  WizardForm.WizardSmallBitmapImage.Width:=WizardForm.Width;
  WizardForm.WizardSmallBitmapImage.Height:=58;
  /// --- Конец ---- ///
}
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.WizardBitmapImage.Width:=697;
  WizardForm.WizardBitmapImage.Height:=483;

  WizardForm.FinishedHeadingLabel.Hide;
  WizardForm.FinishedLabel.Hide;
  WizardForm.YesRadio.Hide;
  WizardForm.NoRadio.Hide;
  WizardForm.WizardBitmapImage2.Width:=697;
  WizardForm.WizardBitmapImage2.Height:=483;

  WizardForm.PageNameLabel.Hide;
  WizardForm.PageDescriptionLabel.Hide;
  WizardForm.WizardSmallBitmapImage.Top:=0;
  WizardForm.WizardSmallBitmapImage.Left:=0;
  WizardForm.WizardSmallBitmapImage.Width:=697;
  WizardForm.WizardSmallBitmapImage.Height:=58;

  WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;
  WizardForm.WelcomeLabel1.Height:=WizardForm.WelcomeLabel1.Height + HeightOffset;
  WizardForm.WelcomeLabel1.Width:=WizardForm.WelcomeLabel1.Width + WidthOffset;

  WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;
  WizardForm.WelcomeLabel2.Height:=WizardForm.WelcomeLabel2.Height + HeightOffset;
  WizardForm.WelcomeLabel2.Width:=WizardForm.WelcomeLabel2.Width + WidthOffset;


  WizardForm.LicenseLabel1.Width:=WizardForm.LicenseLabel1.Width + WidthOffset;
  WizardForm.LicenseMemo.Height:=WizardForm.LicenseMemo.Height + HeightOffset;
  WizardForm.LicenseMemo.Width:=WizardForm.LicenseMemo.Width + WidthOffset;
  WizardForm.LicenseNotAcceptedRadio.Top:=WizardForm.LicenseNotAcceptedRadio.Top + HeightOffset;
  WizardForm.LicenseAcceptedRadio.Top:=WizardForm.LicenseAcceptedRadio.Top + HeightOffset;

  WizardForm.InfoBeforeClickLabel.Width:=WizardForm.InfoBeforeClickLabel.Width + WidthOffset;
  WizardForm.InfoBeforeMemo.Height:=WizardForm.InfoBeforeMemo.Height + HeightOffset;
  WizardForm.InfoBeforeMemo.Width:=WizardForm.InfoBeforeMemo.Width + WidthOffset;

  WizardForm.SelectDirLabel.Width:=WizardForm.SelectDirLabel.Width + WidthOffset;
  WizardForm.SelectDirBrowseLabel.Width:=WizardForm.SelectDirBrowseLabel.Width + WidthOffset;
  WizardForm.DiskSpaceLabel.Top:=WizardForm.DiskSpaceLabel.Top + HeightOffset;
  WizardForm.DirBrowseButton.Left:=WizardForm.DirBrowseButton.Left + HeightOffset;
  WizardForm.DirEdit.Width:=WizardForm.DirEdit.Width + HeightOffset;

  WizardForm.ComponentsDiskSpaceLabel.Top:=WizardForm.ComponentsDiskSpaceLabel.Top + HeightOffset;
  WizardForm.SelectComponentsLabel.Width:=WizardForm.SelectComponentsLabel.Width + WidthOffset;
  WizardForm.ComponentsList.Height:=WizardForm.ComponentsList.Height + HeightOffset;
  WizardForm.ComponentsList.Width:=WizardForm.ComponentsList.Width + WidthOffset;

  WizardForm.ReadyLabel.Width:=WizardForm.ReadyLabel.Width + WidthOffset;
  WizardForm.ReadyMemo.Height:=WizardForm.ReadyMemo.Height + HeightOffset;
  WizardForm.ReadyMemo.Width:=WizardForm.ReadyMemo.Width + WidthOffset;

  WizardForm.ProgressGauge.Width:=WizardForm.ProgressGauge.Width + HeightOffset;
  WizardForm.FilenameLabel.Width:=WizardForm.FilenameLabel.Width + HeightOffset;
  WizardForm.StatusLabel.Width:=WizardForm.StatusLabel.Width + HeightOffset;
end;

/// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- /// --- ///

type
  TComponentDesc = record
    Description: String;
    ImageName: String;
    Index: Integer;
  end;

var
  CompDescs: array of TComponentDesc;
  CompDescPanel, CompDescImgPanel: TPanel;
  CompDescText: array[1..2] of TLabel;
  CompIndex, LastIndex: Integer;
  CompDescImg: TBitmapImage;

procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
  i: Integer;
begin
  if Index = LastIndex then Exit;
  CompIndex := -1;
  for i := 0 to GetArrayLength(CompDescs) -1 do
  begin
    if (CompDescs[i].Index = Index) then
    begin
      CompIndex := i;
      Break;
    end;
  end;
  if (CompIndex >= 0) and (Area = iaItem) then
  begin
    if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
      ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
    CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
    CompDescImg.Show;

    CompDescText[2].Caption := CompDescs[CompIndex].Description;
    CompDescText[2].Enabled := True;
  end else
  begin
    CompDescText[2].Caption := CustomMessage('ComponentsInfo');
    CompDescText[2].Enabled := False;
    CompDescImg.Hide;
  end;
  LastIndex := Index;
end;

procedure CompListMouseLeave(Sender: TObject);
begin
  CompDescImg.Hide;
  CompDescText[2].Caption := CustomMessage('ComponentsInfo');
  CompDescText[2].Enabled := False;
  LastIndex := -1;
end;

procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);
var
  i: Integer;
begin
  i := GetArrayLength(CompDescs);
  SetArrayLength(CompDescs, i + 1);
  CompDescs[i].Description := ADescription;
  CompDescs[i].ImageName := AImageName;
  CompDescs[i].Index := AIndex - 1
end;

procedure InitializeWizard();
begin
  InitializeWizard1(); {из BackUpPage.iss}
  //InitializeWizard2(); {из Music.iss}
  InitializeWizard3();
  RedesignWizardForm;
  WindowResize();

begin
  WizardForm.SelectComponentsLabel.Hide;
  WizardForm.TypesCombo.Hide;
  WizardForm.ComponentsList.SetBounds(ScaleX(260), ScaleY(20), ScaleX(357), ScaleY(333));
  WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
  WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;

  CompDescImgPanel := TPanel.Create(WizardForm);
  with CompDescImgPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(20), ScaleX(253), ScaleY(203));  //рамка картинки
    BevelInner := bvLowered;
  end;

  CompDescText[1] := TLabel.Create(WizardForm);
  with CompDescText[1] do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsImgInfo');
  end;

  CompDescImg := TBitmapImage.Create(WizardForm);
  with CompDescImg do
  begin
    Parent := CompDescImgPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
    Stretch := True;
    Hide;
  end;

  CompDescPanel := TPanel.Create(WizardForm);
  with CompDescPanel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(0), ScaleY(230), ScaleX(253), ScaleY(123));  //Нижния рамка
    BevelInner := bvLowered;
  end;

  CompDescText[2] := TLabel.Create(WizardForm);
  with CompDescText[2] do
  begin
    Parent := CompDescPanel;
    SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));
    AutoSize := False;
    WordWrap := True;
    Enabled := False;
    Caption := CustomMessage('ComponentsInfo');
  end;

  AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp');
  AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp');
  AddCompDescription(3, CustomMessage('CompDesc3'), 'CompDescImg3.bmp');
  AddCompDescription(4, CustomMessage('CompDesc4'), 'CompDescImg4.bmp');
  AddCompDescription(5, CustomMessage('CompDesc5'), 'CompDescImg5.bmp');
  AddCompDescription(6, CustomMessage('CompDesc6'), 'CompDescImg6.bmp');
  AddCompDescription(7, CustomMessage('CompDesc7'), 'CompDescImg7.bmp');
  AddCompDescription(8, CustomMessage('CompDesc8'), 'CompDescImg8.bmp');
  AddCompDescription(9, CustomMessage('CompDesc9'), 'CompDescImg9.bmp');
  AddCompDescription(10, CustomMessage('CompDesc10'), 'CompDescImg10.bmp');
  AddCompDescription(11, CustomMessage('CompDesc11'), 'CompDescImg11.bmp');
  AddCompDescription(12, CustomMessage('CompDesc12'), 'CompDescImg12.bmp');
  AddCompDescription(13, CustomMessage('CompDesc13'), 'CompDescImg13.bmp');
  AddCompDescription(14, CustomMessage('CompDesc14'), 'CompDescImg14.bmp');
  AddCompDescription(15, CustomMessage('CompDesc15'), 'CompDescImg15.bmp');
  AddCompDescription(16, CustomMessage('CompDesc16'), 'CompDescImg16.bmp');
  AddCompDescription(17, CustomMessage('CompDesc17'), 'CompDescImg17.bmp');
  AddCompDescription(18, CustomMessage('CompDesc18'), 'CompDescImg18.bmp');
  AddCompDescription(19, CustomMessage('CompDesc19'), 'CompDescImg19.bmp');
  AddCompDescription(20, CustomMessage('CompDesc20'), 'CompDescImg20.bmp');
  AddCompDescription(21, CustomMessage('CompDesc21'), 'CompDescImg21.bmp');
  AddCompDescription(22, CustomMessage('CompDesc22'), 'CompDescImg22.bmp');
  AddCompDescription(23, CustomMessage('CompDesc23'), 'CompDescImg23.bmp');
  AddCompDescription(24, CustomMessage('CompDesc24'), 'CompDescImg24.bmp');
  AddCompDescription(25, CustomMessage('CompDesc25'), 'CompDescImg25.bmp');
  AddCompDescription(26, CustomMessage('CompDesc26'), 'CompDescImg26.bmp');
  AddCompDescription(27, CustomMessage('CompDesc27'), 'CompDescImg27.bmp');
  AddCompDescription(28, CustomMessage('CompDesc28'), 'CompDescImg28.bmp');
  AddCompDescription(29, CustomMessage('CompDesc29'), 'CompDescImg29.bmp');
  AddCompDescription(30, CustomMessage('CompDesc30'), 'CompDescImg30.bmp');
  AddCompDescription(31, CustomMessage('CompDesc31'), 'CompDescImg31.bmp');
  AddCompDescription(32, CustomMessage('CompDesc32'), 'CompDescImg32.bmp');
  AddCompDescription(33, CustomMessage('CompDesc33'), 'CompDescImg33.bmp');
  AddCompDescription(34, CustomMessage('CompDesc34'), 'CompDescImg34.bmp');
  AddCompDescription(35, CustomMessage('CompDesc35'), 'CompDescImg35.bmp');
  AddCompDescription(36, CustomMessage('CompDesc36'), 'CompDescImg36.bmp');
  AddCompDescription(37, CustomMessage('CompDesc37'), 'CompDescImg37.bmp');
  AddCompDescription(38, CustomMessage('CompDesc38'), 'CompDescImg38.bmp');
  AddCompDescription(39, CustomMessage('CompDesc39'), 'CompDescImg39.bmp');
  AddCompDescription(40, CustomMessage('CompDesc40'), 'CompDescImg40.bmp');
  AddCompDescription(41, CustomMessage('CompDesc41'), 'CompDescImg41.bmp');
  AddCompDescription(42, CustomMessage('CompDesc42'), 'CompDescImg42.bmp');
  end;
end;

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

+ Спасибо работает, я понял в чем причина была ... 

Share this post


Link to post

Short link
Share on other sites

Кстати, новая версия innounp 0.42 научилась распаковывать "китайца".

Share this post


Link to post

Short link
Share on other sites

Кстати, новая версия innounp 0.42 научилась распаковывать "китайца".

Глянем что там у Юши :)

Share this post


Link to post

Short link
Share on other sites

Глянем что там у Юши :)

Что там смотреть, если секцию [ Code ] ты всё равно не вскроешь.

Share this post


Link to post

Short link
Share on other sites

Что там смотреть, если секцию [ Code ] ты всё равно не вскроешь.

а какой тогда смысл распаковки этой, ведь главное то это секция

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...