Jump to content
Korean Random
EvilAlex

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

Recommended Posts

как правильно объединить две function InitializeSetup():boolean;
Function InitializeSetup1(): Boolean;
begin
 ...
end;

Function InitializeSetup2(): Boolean;
begin
 ...
end;

Function InitializeSetup(): Boolean;
begin
 InitializeSetup1();
 InitializeSetup2();
end;

Подскажите,почему выдает ошибку,когда вроде бы даже нету такого слова,как в ошибке:

Проблема в скрипте Components.iss, в секции [Files]. По указанному там пути находится пустая папка, или попросту отсутствует.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

 

Что нужно сделать,чтобы не показывалось 2 раза одно и тоже?
Показывайте код.

Share this post


Link to post

Short link
Share on other sites

Показывайте код.

Секунду,сейчас покажу.

Показывайте код.

#define GameID "{5F05CE9B-7768-490E-9A71-C6R92B4EX123}" ;Ид инстолятора

#define MyAppName "KPAH Mod Pack 0.8.6" ;Название инстоллятора

#define MyInfoVer "2.4.124" ;Версия инсталлятора

#define MyAppVer "1.0" ;Версия игры

#define MyAppPublisher "EvilAlex" ;Имя компании или человека кто делал

#define MyAppURL "http://www.koreanrandom.com" ;Ссылка для лого

 

#include "Components.iss" ;Компаненты, они же моды

#include "Messages.iss" ;Сообщение, надписи на кнопках и т.д.

 

[setup]

AppId={{#GameID}

AppName={#MyAppName}

AppVersion={#MyAppVer}

;AppVerName={#MyAppName} {#MyAppVersion}

AppPublisher={#MyAppPublisher}

 

//====={ Ссылки }=====\\

AppPublisherURL={#MyAppURL}

AppSupportURL={#MyAppURL}

AppUpdatesURL={#MyAppURL}

 

//====={ Папка устанвки }=====\\

;DefaultDirName={pf}\{#MyAppName}

DefaultDirName={code:MyDirName}

DefaultGroupName={#MyAppName}

 

//====={ Картинки }=====\\

SetupIconFile=Files\wot_ico.ico

WizardSmallImageFile=Files\img2.bmp

WizardImageFile=Files\img1.bmp

 

//====={ Отключение строниц }=====\\

DisableProgramGroupPage=yes

 

//====={ Лицензия и Фак }=====\\

LicenseFile=licensia.txt

InfoBeforeFile=faq.rtf

InfoAfterFile=credit.rtf

 

//====={ Папка создания и название сетапа }=====\\

OutputDir=.\Output

OutputBaseFilename=Setup

 

//====={ Сжатие сетапа }=====\\

InternalCompressLevel=ultra64

Compression=lzma2/ultra64

SolidCompression=true

 

//====={ Основные файлы сетапа }=====\\

[Files]

Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption

 

 

[Components]

Name: KMP; Description: KPAH Mod Pack; Types: custom; Flags: fixed

Name: KMP\P; Description: 1. Прицел.; Flags: disablenouninstallwarning

 

 

[Files]

Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\PRICEL\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\img_mod\1.bmp"; DestDir: "{app}"; Flags: ignoreversion

// Примечание: Не используйте флаги "ignoreversion" для общих системных файлов.

 

//====={ Картинки модов }=====\\

Source: img_mod\1.bmp; Flags: dontcopy noencryption noencryption

 

 

//====={ Выбор языка }=====\\

[Languages]

Name: "eng"; MessagesFile: "compiler:Default.isl"

Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

 

#ifdef UNICODE

#define A "W"

#else

#define A "A"

#endif

 

const

UNDEF_INDEX = -777;

ALPHA_BLEND_LEVEL = 255; // max=Byte=255

 

WS_EX_LAYERED = $80000;

WS_EX_TRANSPARENT = $20;

LWA_COLORKEY = 1;

LWA_ALPHA = 2;

GWL_EXSTYLE = (-20);

 

 

var

InfoPic: TBitmapImage;

LastIndex: Integer;

TempPath: String;

PicForm: TForm;

 

type

COLORREF = DWORD;

 

function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';

function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall';

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';

function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';

function SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall';

 

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;

 

procedure LogoOnClick(Sender: TObject);

var ResCode: Integer;

begin

ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)

end;

 

procedure RedesignWizardForm;

var

i: integer;

BtnPanel: TPanel;

BtnImage: TBitmapImage;

 

begin

ExtractTemporaryFile('logo.bmp')

BtnPanel:=TPanel.Create(WizardForm)

with BtnPanel do begin

Left:=0

Top:=315

Width:=179

Height:=46

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;

 

with WizardForm do

begin

Caption := ExpandConstant('{cm:Main}');

end;

 

with WizardForm.WizardBitmapImage do

begin

Width := ScaleX(502);

end;

 

with WizardForm.WelcomeLabel2 do

begin

Visible := False;

end;

 

with WizardForm.WelcomeLabel1 do

begin

Visible := False;

end;

 

with WizardForm.WizardSmallBitmapImage do

begin

Left := ScaleX(0);

Width := ScaleX(502);

Height := ScaleY(70);

end;

 

with WizardForm.PageDescriptionLabel do

begin

Visible := False;

end;

 

with WizardForm.PageNameLabel do

begin

Visible := False;

end;

 

with WizardForm.WizardBitmapImage2 do

begin

Width := ScaleX(502);

end;

 

with WizardForm.FinishedLabel do

begin

Visible := False;

end;

 

with WizardForm.FinishedHeadingLabel do

begin

Visible := False;

end;

end;

 

procedure ShowPicHint(const PicFilePath: String);

var

pt: TPoint;

begin

if not GetCursorPos(pt) then Exit;

InfoPic.Bitmap.LoadFromFile(PicFilePath);

try

with PicForm do

begin

SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);

Show;

end;

finally

SetFocus(WizardForm.Handle);

end;

end;

 

 

procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);

var

UndefPic: String;

begin

if Index = -1 then Exit;

if Index = LastIndex then Exit;

try

case TNewCheckListBox(Sender).ItemCaption[index] of

'1. Прицел.': UndefPic := '1.bmp';

 

else

begin

LastIndex := UNDEF_INDEX;

PicForm.Hide;

Exit;

end;

end;

if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);

ShowPicHint(TempPath + UndefPic);

finally

LastIndex := Index;

end;

end;

 

 

procedure CompOnMouseLeave(Sender: TObject);

begin

PicForm.Hide;

LastIndex := -1;

end;

 

 

procedure InitInfo();

begin

WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;

WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;

TempPath := AddBackslash(ExpandConstant('{tmp}'));

LastIndex := UNDEF_INDEX;

PicForm := TForm.Create(WizardForm)

with PicForm do

begin

BorderStyle := bsNone;

FormStyle := fsStayOnTop;

InfoPic := TBitmapImage.Create(PicForm)

with InfoPic do

begin

Parent := PicForm;

AutoSize := True;

end;

end;

SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);

end;

 

procedure InitializeWizard();

begin

InitInfo();

RedesignWizardForm;

end;

 

[Languages]

Name: rus; MessagesFile: compiler:Languages\Russian.isl

 

[Messages]

ButtonBack=Назад

ButtonNext=Далее

ButtonCancel=Выход

ButtonInstall=Установить

ButtonFinish=Завершить

ButtonWizardBrowse=Обзор...

 

[CustomMessages]

rus.Main=Установка - «{#MyAppName}»

 

rus.Welcome1=

rus.Welcome2=Программа установит «{#MyAppName}» на Ваш компьютер.%n%nРекомендуется закрыть антивирусные пакеты и все прочие приложения%nперед тем, как продолжить.%n%nНажмите «Далее», что бы продолжить установку,%nили «Выход», чтобы выйти из программы установки.

rus.Finished1=

rus.Finished2=Игра «{#MyAppName}» была успешно установлена на Ваш компьютер.%n%nДля ее запуска выберите соответствующий ярлык в меню «Пуск»%nили на Рабочем столе.%n%nНажмите «Завершить», чтобы выйти из программы установки.

rus.ErrorFinished1=

rus.ErrorFinished2=Установка игры «{#MyAppName}» не завершена !%n%nУстановка не была завершена.%n%nПожалуйста, устраните проблему и запустите установку снова.

rus.SelectDir1=Если вы хотите выбрать другую папку, нажмите кнопку «Обзор».

rus.SelectDir2=Программа создаст ярлыки в следующей папке меню «Пуск».

rus.SelectGroup1=Выберит папку в меню «Пуск».%nНажмите кнопку «Обзор» для выбора.

rus.SelectGroup2=

 

rus.IconsCheck=Создать ярлык в меню «Пуск» ?

rus.DesktopTasks=Создать значок на рабочем столе ?

rus.DPO=Дополнительное программное обеспечение:

rus.DirectX= Установить DirectX

rus.VCRedist= Установить Visual++

 

rus.SelectTasks=

 

rus.ExtractedFile=Извлекается файл:

rus.ExtractedDire=Директория:

rus.Extracted=Распаковка архивов...

rus.CancelButton=Отменить распаковку

rus.Error=Ошибка распаковки!

rus.Completion=Завершение установки...

 

rus.StatusRollback=Пожалуйста ждите!%n%nИдет откат изменений...

 

rus.ElapsedTime=Прошло:

rus.RemainingTime=Осталось времени:

rus.EstimatedTime=Всего:

rus.AllElapsedTime=Время установки:

 

rus.Doppo1=Пожалуйста ждите!%n%n%n%n%n%n%n%nОбновление дополнительного ПО...%n%nУстановка DirectX...

rus.Doppo2=Пожалуйста ждите!%n%n%n%n%n%n%n%nОбновление дополнительного ПО...%n%nУстановка VCRedist...

 

//rus.UninstalledAll=Ну и нахрена удалил?

Share this post


Link to post

Short link
Share on other sites

Что там?

Вот:

/====={ Сюда прописываешь те файлы и папки которые закинул в Mods }=====\\

[Types]

Name: custom; Description: Full installation; Flags: iscustom

 

[Components]

Name: KMP; Description: KPAH Mod Pack; Types: custom; Flags: fixed

Name: KMP\P; Description: 1. Прицел.; Flags: disablenouninstallwarning

 

 

[Files]

Source: "MODS\PRICEL\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Components: KMP\P;

Share this post


Link to post

Short link
Share on other sites

@_NesKwi_, ну вот вам и ответ.

а что именно нужно удалить,чтобы такого не было?

Edited by _NesKwi_

Share this post


Link to post

Short link
Share on other sites

 

 

а что именно нужно удалить,чтобы такого не было?
Или отключить секции [Components], [Files] в основном скрипте, или отключить скрипт Components.iss.

 

А лучше посмотреть справку, изучить всякие примеры, изучить сам язык.

Share this post


Link to post

Short link
Share on other sites

Или отключить секции [Components], [Files] в основном скрипте, или отключить скрипт Components.iss.

 

А лучше посмотреть справку, изучить всякие примеры, изучить сам язык.

 

а как это делать (отключить скрипт Components.iss)?

Share this post


Link to post

Short link
Share on other sites

а как это делать (отключить скрипт Components.iss)?

Удалить строку:

#include "Components.iss"

Share this post


Link to post

Short link
Share on other sites

 

Удалить строку:

#include "Components.iss"

Спасибо. Но у меня еще возник вопросик. Наверняка вы знаете,что файлы (картинки которые) должны быть в формате .bmp. Так вот,можно ли их с помощью "Переименовывания" изменить в данный формат? и будут ли они работать правильно?

Share this post


Link to post

Short link
Share on other sites
Function InitializeSetup(): Boolean;
begin
 InitializeSetup1();
 InitializeSetup2();
end;

Да говорю же не прокатывает так .

Вот так работает:

//////============== СКИН  начало ===================
// Импорт функции LoadVCLStyle от VclStylesInno.DLL
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleW@files:VclStylesInno.dll stdcall';
// Импорт функции UnLoadVCLStyles от VclStylesInno.DLL
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall';
/////---------------------
//=============== Проверка запущена ли игра =======================
function KillTask(ExeFileName: string): Integer;
  external 'KillTask@files:ISTaskU.dll stdcall';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@files:ISTaskU.dll stdcall';
  
function InitializeSetup(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then begin
    if MsgBox('ВНИМАНИЕ!' #13 'НЕ рекомендуется устанавливать при запущенной игре.' #13 'Закрыть WorldOfTanks и продолжить установку?', mbError, mb_YesNo) = idYes then begin
      KillTask('WorldOfTanks.exe');
      Result := True;
    end else
      Exit;
    end;
  Result := True;
//end;
//=============== КОНЕЦ  Проверки запущена ли игра =======================
///----- СКИН ------
//begin
	ExtractTemporaryFile('OrangeGraphite.vsf');
	LoadVCLStyle(ExpandConstant('{tmp}\OrangeGraphite.vsf'));
	Result := True;
end;

procedure DeinitializeSetup();
begin
	UnLoadVCLStyles;
end;
////////////////======= Конец СКИНА ======================================

 

А вот так нет:

//=============== Проверка запущена ли игра =======================
function KillTask(ExeFileName: string): Integer;
  external 'KillTask@files:ISTaskU.dll stdcall';
function RunTask(FileName: string; bFullpath: Boolean): Boolean;
  external 'RunTask@files:ISTaskU.dll stdcall';
 
function InitializeSetup1(): Boolean;
begin
  If RunTask('WorldOfTanks.exe', false) then begin
    if MsgBox('ВНИМАНИЕ!' #13 'НЕ рекомендуется устанавливать при запущенной игре.' #13 'Закрыть WorldOfTanks и продолжить установку?', mbError, mb_YesNo) = idYes then begin
      KillTask('WorldOfTanks.exe');
      Result := True;
    end else
      Exit;
    end;
  Result := True;
end;
//=============== КОНЕЦ  Проверки запущена ли игра =======================

//////============== СКИН  начало ===================
// Импорт функции LoadVCLStyle от VclStylesInno.DLL
procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyleW@files:VclStylesInno.dll stdcall';
// Импорт функции UnLoadVCLStyles от VclStylesInno.DLL
procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesInno.dll stdcall';

function InitializeSetup2(): Boolean;
begin
ExtractTemporaryFile('OrangeGraphite.vsf');
LoadVCLStyle(ExpandConstant('{tmp}\OrangeGraphite.vsf'));
Result := True;
end;
procedure DeinitializeSetup();
begin
UnLoadVCLStyles;
end;
///////////======= Конец СКИНА ======================================

Function InitializeSetup(): Boolean;
begin
InitializeSetup1();
InitializeSetup2();
end;

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

можно ли их с помощью "Переименовывания" изменить в данный формат? и будут ли они работать правильно?
Нельзя. Только через графические редакторы.

 

 

 

Да говорю же не прокатывает так .
Добавь в конец функции:
Result := True;

Share this post


Link to post

Short link
Share on other sites
Добавь в конец функции:
Result := True;

 

Имееш ввиду сюда:

 

Function InitializeSetup(): Boolean;
begin
 InitializeSetup1();
 InitializeSetup2();
Result := True;
end;

Share this post


Link to post

Short link
Share on other sites

Да так заработало. Спасибо.

А еще дайте примерчик как через ботву вставить всего одну картинку (с координатами) например на страницу  SelectDirPage.
Есть несколько примеров но там что то наворочено много картинок и кнопок вперемешку...

Share this post


Link to post

Short link
Share on other sites

В чем тут ошибка (не показывает картинки)?:

#define GameID "{5F05CE9B-7768-490E-9A71-C6R92B4EX123}" ;Ид инстолятора
#define MyAppName "KPAH Mod Pack 0.8.6" ;Название инстоллятора
#define MyInfoVer "2.4.124" ;Версия инсталлятора
#define MyAppVer "1.0" ;Версия игры
#define MyAppPublisher "EvilAlex" ;Имя компании или человека кто делал
#define MyAppURL "http://www.koreanrandom.com" ;Ссылка для лого

#include "Messages.iss" ;Сообщение, надписи на кнопках и т.д.

[setup]
AppId={{#GameID}
AppName={#MyAppName}
AppVersion={#MyAppVer}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}

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

//====={ Папка устанвки }=====\\
;DefaultDirName={pf}\{#MyAppName}
DefaultDirName={code:MyDirName}
DefaultGroupName={#MyAppName}

//====={ Картинки }=====\\
SetupIconFile=Files\wot_ico.ico
WizardSmallImageFile=Files\img2.bmp
WizardImageFile=Files\img1.bmp

//====={ Отключение строниц }=====\\
DisableProgramGroupPage=yes

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

//====={ Папка создания и название сетапа }=====\\
OutputDir=.\Output
OutputBaseFilename=Setup

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

//====={ Основные файлы сетапа }=====\\
[Files]
Source: Files\logo.bmp; Flags: dontcopy noencryption noencryption


[Components]
Name: KMP; Description: Прицелы; Types: custom; Flags: fixed
Name: KMP\P; Description: 1. Прицел (корейский).; Flags: disablenouninstallwarning
Name: KMP\P; Description: 2. Прицел Overcross.; Flags: disablenouninstallwarning
Name: KMP\P; Description: 3. Прицел TAIPAN.; Flags: disablenouninstallwarning
Name: KMP\P; Description: 4. Прицел WoWP (green).; Flags: disablenouninstallwarning
Name: KMP\P; Description: 5. Прицел бирюза.; Flags: disablenouninstallwarning
Name: KMP\P; Description: 6. Прицел Будующего.; Flags: disablenouninstallwarning
Name: KMP\P; Description: 7. Прицел от Jimbo.; Flags: disablenouninstallwarning


[Files]
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел (корейский)\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел Overcross\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел TAIPAN\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел WoWP (green)\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел бирюза\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел Будующего\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\MODS\Прицел от Jimbo\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Users\User\Desktop\Установщик с картинками (свой)\img_mod\1.bmp"; DestDir: "{app}"; Flags: ignoreversion
// Примечание: Не используйте флаги "ignoreversion" для общих системных файлов.

//====={ Картинки модов }=====\\
Source: img_mod\1.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\2.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\3.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\4.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\5.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\6.bmp; Flags: dontcopy noencryption noencryption
Source: img_mod\7.bmp; Flags: dontcopy noencryption noencryption


//====={ Выбор языка }=====\\
[Languages]
Name: "eng"; MessagesFile: "compiler:Default.isl"
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"


#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif

const
UNDEF_INDEX = -777;
ALPHA_BLEND_LEVEL = 255; // max=Byte=255

WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);


var
InfoPic: TBitmapImage;
LastIndex: Integer;
TempPath: String;
PicForm: TForm;

type
COLORREF = DWORD;

function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall';
function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall';
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall';

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;

procedure LogoOnClick(Sender: TObject);
var ResCode: Integer;
begin
ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode)
end;

procedure RedesignWizardForm;
var
i: integer;
BtnPanel: TPanel;
BtnImage: TBitmapImage;

begin
ExtractTemporaryFile('logo.bmp')
BtnPanel:=TPanel.Create(WizardForm)
with BtnPanel do begin
Left:=0
Top:=315
Width:=179
Height:=46
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;

with WizardForm do
begin
Caption := ExpandConstant('{cm:Main}');
end;

with WizardForm.WizardBitmapImage do
begin
Width := ScaleX(502);
end;

with WizardForm.WelcomeLabel2 do
begin
Visible := False;
end;

with WizardForm.WelcomeLabel1 do
begin
Visible := False;
end;

with WizardForm.WizardSmallBitmapImage do
begin
Left := ScaleX(0);
Width := ScaleX(502);
Height := ScaleY(70);
end;

with WizardForm.PageDescriptionLabel do
begin
Visible := False;
end;

with WizardForm.PageNameLabel do
begin
Visible := False;
end;

with WizardForm.WizardBitmapImage2 do
begin
Width := ScaleX(502);
end;

with WizardForm.FinishedLabel do
begin
Visible := False;
end;

with WizardForm.FinishedHeadingLabel do
begin
Visible := False;
end;
end;

procedure ShowPicHint(const PicFilePath: String);
var
pt: TPoint;
begin
if not GetCursorPos(pt) then Exit;
InfoPic.Bitmap.LoadFromFile(PicFilePath);
try
with PicForm do
begin
SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height);
Show;
end;
finally
SetFocus(WizardForm.Handle);
end;
end;


procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
var
UndefPic: String;
begin
if Index = -1 then Exit;
if Index = LastIndex then Exit;
try
case TNewCheckListBox(Sender).ItemCaption[index] of
'1. 1. Прицел (корейский).': UndefPic := '6.bmp';
'2. 2. Прицел Overcross.': UndefPic := '7.bmp';
'3. 3. Прицел TAIPAN.': UndefPic := '4.bmp';
'4. 4. Прицел WoWP (green).': UndefPic := '2.bmp';
'5. 5. Прицел бирюза.': UndefPic := '2.bmp';
'6. 6. Прицел Будующего.': UndefPic := '5.bmp';
'7. 7. Прицел от Jimbo.': UndefPic := '3.bmp';

else
begin
LastIndex := UNDEF_INDEX;
PicForm.Hide;
Exit;
end;
end;
if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic);
ShowPicHint(TempPath + UndefPic);
finally
LastIndex := Index;
end;
end;


procedure CompOnMouseLeave(Sender: TObject);
begin
PicForm.Hide;
LastIndex := -1;
end;


procedure InitInfo();
begin
WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove;
WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave;
TempPath := AddBackslash(ExpandConstant('{tmp}'));
LastIndex := UNDEF_INDEX;
PicForm := TForm.Create(WizardForm)
with PicForm do
begin
BorderStyle := bsNone;
FormStyle := fsStayOnTop;
InfoPic := TBitmapImage.Create(PicForm)
with InfoPic do
begin
Parent := PicForm;
AutoSize := True;
end;
end;
SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA);
end;

procedure InitializeWizard();
begin
InitInfo();
RedesignWizardForm;
end;

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Messages]
ButtonBack=Назад
ButtonNext=Далее
ButtonCancel=Выход
ButtonInstall=Установить
ButtonFinish=Завершить
ButtonWizardBrowse=Обзор...

[CustomMessages]
rus.Main=Установка - «{#MyAppName}»

rus.Welcome1=
rus.Welcome2=Программа установит «{#MyAppName}» на Ваш компьютер.%n%nРекомендуется закрыть антивирусные пакеты и все прочие приложения%nперед тем, как продолжить.%n%nНажмите «Далее», что бы продолжить установку,%nили «Выход», чтобы выйти из программы установки.
rus.Finished1=
rus.Finished2=Игра «{#MyAppName}» была успешно установлена на Ваш компьютер.%n%nДля ее запуска выберите соответствующий ярлык в меню «Пуск»%nили на Рабочем столе.%n%nНажмите «Завершить», чтобы выйти из программы установки.
rus.ErrorFinished1=
rus.ErrorFinished2=Установка игры «{#MyAppName}» не завершена !%n%nУстановка не была завершена.%n%nПожалуйста, устраните проблему и запустите установку снова.
rus.SelectDir1=Если вы хотите выбрать другую папку, нажмите кнопку «Обзор».
rus.SelectDir2=Программа создаст ярлыки в следующей папке меню «Пуск».
rus.SelectGroup1=Выберит папку в меню «Пуск».%nНажмите кнопку «Обзор» для выбора.
rus.SelectGroup2=

rus.IconsCheck=Создать ярлык в меню «Пуск» ?
rus.DesktopTasks=Создать значок на рабочем столе ?
rus.DPO=Дополнительное программное обеспечение:
rus.DirectX= Установить DirectX
rus.VCRedist= Установить Visual++

rus.SelectTasks=

rus.ExtractedFile=Извлекается файл:
rus.ExtractedDire=Директория:
rus.Extracted=Распаковка архивов...
rus.CancelButton=Отменить распаковку
rus.Error=Ошибка распаковки!
rus.Completion=Завершение установки...

rus.StatusRollback=Пожалуйста ждите!%n%nИдет откат изменений...

rus.ElapsedTime=Прошло:
rus.RemainingTime=Осталось времени:
rus.EstimatedTime=Всего:
rus.AllElapsedTime=Время установки:

rus.Doppo1=Пожалуйста ждите!%n%n%n%n%n%n%n%nОбновление дополнительного ПО...%n%nУстановка DirectX...
rus.Doppo2=Пожалуйста ждите!%n%n%n%n%n%n%n%nОбновление дополнительного ПО...%n%nУстановка VCRedist...

//rus.UninstalledAll=Ну и нахрена удалил?
Edited by _NesKwi_

Share this post


Link to post

Short link
Share on other sites

Сорри если пишу не сюда, но может парни подскажите!

Скачал сборку модпака от ПроТанки, но не хочу ее устанавливать... знаю что можно распаковать *.ехе инсталятор программами, все уже перепробовал не получается, может подскажите чем можно распаковать *.ехе?!

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...