Jump to content
Korean Random
EvilAlex

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

Recommended Posts

подскажи если знаешь а как туда еще кеш клинер вмонтировать? ))

Ты про обычную прогу для компьютера  CCleaner  ?

Share this post


Link to post

Short link
Share on other sites

Ты про обычную прогу для компьютера  CCleaner  ?

нет))) про такое - 93d9cfa2b0a2.jpg

Share this post


Link to post

Short link
Share on other sites

:ok:  :gawi:

 

смотрю уже много модпакеров стало :), удачи вам в начинании :)

:flag:  :exc:  :flag:  :hmm:  :exc:  :ic:  :exc:

нет))) про такое - 93d9cfa2b0a2.jpg

В форме делаешь , а потом подключаешь скрипт который ты хотел и будет он на страинице вначале..... или где пожелаешь...  :heh:

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

подскажи если знаешь а как туда еще кеш клинер вмонтировать? ))

93d9cfa2b0a2.jpg

этот скрипт уже давно приведён в человеческий вид

#define WotVersion "0.9.16"
#include "SHFileOperation.iss";

[Code]
var
  DeleteRadioButton, MoveRadioButton, NoneRadioButton: TRadioButton;
  DeleteCashAndLogsCheckBox, DeleteUpdatesCheckBox: TCheckBox;

const
  DeleteDescText =
    'Установщик удалит все файлы в папках.';
  MoveDescText =
    'Установщик сделает резервную копию файлов.';
  NoneDescText =
    'Установщик не будет ничего трогать.';

function BackupCheck_1(): Boolean;
var
  DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;
begin
  DeleteRadioButton:=TRadioButton.Create(WizardForm);
  DeleteRadioButton.SetBounds(0, 120, WizardForm.RunList.Width, 20)
  DeleteRadioButton.Checked:=True;
  DeleteRadioButton.Caption:='Удалить моды';
  DeleteRadioButton.Parent:=WizardForm.SelectDirPage;
  DeleteDescLabel:=TLabel.Create(WizardForm);
  DeleteDescLabel.Parent:=WizardForm.SelectDirPage;
  DeleteDescLabel.Left:=0;
  DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height;
  DeleteDescLabel.Width:=WizardForm.SelectDirPage;
  DeleteDescLabel.Height:=20;
  DeleteDescLabel.AutoSize:=False;
  DeleteDescLabel.Wordwrap:=True;
  DeleteDescLabel.Caption:=DeleteDescText;

  MoveRadioButton:=TRadioButton.Create(WizardForm);
  MoveRadioButton.SetBounds(0, 160, WizardForm.RunList.Width, 20)
  MoveRadioButton.Checked:=False;
  MoveRadioButton.Caption:='Сделать резервную копию модов';
  MoveRadioButton.Parent:=WizardForm.SelectDirPage;
  MoveDescLabel:=TLabel.Create(WizardForm);
  MoveDescLabel.Parent:=WizardForm.SelectDirPage;
  MoveDescLabel.Left:=0;
  MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height;
  MoveDescLabel.Width:=WizardForm.SelectDirPage;
  MoveDescLabel.Height:=20;
  MoveDescLabel.AutoSize:=False;
  MoveDescLabel.Wordwrap:=True;
  MoveDescLabel.Caption:=MoveDescText;

  NoneRadioButton:=TRadioButton.Create(WizardForm);
  NoneRadioButton.SetBounds(0, 200, WizardForm.RunList.Width, 20)
  NoneRadioButton.Checked:=False;
  NoneRadioButton.Caption:='Ничего не трогать';
  NoneRadioButton.Parent:=WizardForm.SelectDirPage;
  NoneDescLabel:=TLabel.Create(WizardForm);
  NoneDescLabel.Parent:=WizardForm.SelectDirPage;
  NoneDescLabel.Left:=0;
  NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height;
  NoneDescLabel.Width:=WizardForm.SelectDirPage;
  NoneDescLabel.Height:=20;
  NoneDescLabel.AutoSize:=False;
  NoneDescLabel.Wordwrap:=True;
  NoneDescLabel.Caption:=NoneDescText;

  DeleteCashAndLogsCheckBox:=TCheckBox.Create(WizardForm);
  DeleteCashAndLogsCheckBox.SetBounds(0, 240, WizardForm.RunList.Width, 20)
  DeleteCashAndLogsCheckBox.Checked:=True;
  DeleteCashAndLogsCheckBox.Caption:='Очистить кэш и логи';
  DeleteCashAndLogsCheckBox.Parent:=WizardForm.SelectDirPage;

  DeleteUpdatesCheckBox:=TCheckBox.Create(WizardForm);
  DeleteUpdatesCheckBox.SetBounds(150, 240, WizardForm.RunList.Width, 20)
  DeleteUpdatesCheckBox.Checked:=True;
  DeleteUpdatesCheckBox.Caption:='Очистить папку Updates, освободив место на диске';
  DeleteUpdatesCheckBox.Parent:=WizardForm.SelectDirPage;
end;

function BackupCheck_2(): Boolean;
begin
  If DeleteRadioButton.Checked then
begin
  DelTree(ExpandConstant('{app}\res_mods\{#WotVersion}'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
  CreateDir(ExpandConstant('{app}\res_mods\{#WotVersion}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
  If MoveRadioButton.Checked then
begin
  MoveDir(ExpandConstant('{app}\res_mods\{#WotVersion}\'),ExpandConstant('{app}\res_mods\backup\{#WotVersion}'));
  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\{#WotVersion}'));
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
end;
end;

function BackupCheck_4(): Boolean;
begin
  If DeleteCashAndLogsCheckBox.Checked then
begin
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True);
  DeleteFile(ExpandConstant('{app}\python.log'));
  DeleteFile(ExpandConstant('{app}\xvm.log'));
end;
end;

function BackupCheck_5(): Boolean;
begin
  If DeleteUpdatesCheckBox.Checked then
begin
  DelTree(ExpandConstant('{app}\Updates'), True, True, True);
  CreateDir(ExpandConstant('{app}\Updates'));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
BackupCheck_2();
BackupCheck_3();
BackupCheck_4();
BackupCheck_5();
end;
end;

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

#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';


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 + 390), 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.Отражение броней(unKnown_bot).': UndefPic := '1-Забл броней урон.bmp';
'2.Радар (тылы).': UndefPic := 'Радар.bmp';
'3.Командирская камера (koshnaranek).': UndefPic := 'Командирская камера.bmp';
'4.Таймер сведения орудия в бою (Ekspoint).': UndefPic := 'таймер сведения.bmp';
'5.Винтик.': UndefPic := 'винтик.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 InitializeWizard2();
begin
InitInfo();
end;

procedure InitializeWizard();
begin
 InitializeWizard1();
 InitializeWizard2();
end; 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Весь топ почти перелопатил, уже в глазах рябит... 

Подскажите как совместить скрипт бекап

; BackUpPage - отдельная страница для реализации резервного копирования файлов с выбором параметров

; Автор: AtotIK

 

#include "SHFileOperation.iss";

 

var

BackupPage: TWizardPage;

DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

 

const

BackupDescText =

'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\0.8.11", удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.';

DeleteDescText =

'Установщик удалит все файлы в папках.';

MoveDescText =

'Установщик сделает резервную копию всех файлов в папках.';

NoneDescText =

'Установщик оставит всё как есть.';

 

function BackupCheck_1(): Boolean;

var

BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;

begin

BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');

BackupDescLabel:=TLabel.Create(WizardForm);

BackupDescLabel.Parent:=BackupPage.Surface;

BackupDescLabel.Left:=0;

BackupDescLabel.Top:=0;

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:=False;

DeleteRadioButton.Top:=95;

DeleteRadioButton.Width:=BackupPage.SurfaceWidth;

DeleteRadioButton.Font.Style:=[fsBold];

DeleteRadioButton.Font.Size:=9;

DeleteRadioButton.Caption:='Удалить файлы'

DeleteDescLabel:=TLabel.Create(WizardForm);

DeleteDescLabel.Parent:=BackupPage.Surface;

DeleteDescLabel.Left:=18;

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:=True;

MoveRadioButton.Top:=140;

MoveRadioButton.Width:=BackupPage.SurfaceWidth;

MoveRadioButton.Font.Style:=[fsBold];

MoveRadioButton.Font.Size:=9;

MoveRadioButton.Caption:='Сделать резервную копию файлов'

MoveDescLabel:=TLabel.Create(WizardForm);

MoveDescLabel.Parent:=BackupPage.Surface;

MoveDescLabel.Left:=18;

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:=185;

NoneRadioButton.Width:=BackupPage.SurfaceWidth;

NoneRadioButton.Font.Style:=[fsBold];

NoneRadioButton.Font.Size:=9;

NoneRadioButton.Caption:='Ничего не трогать'

NoneDescLabel:=TLabel.Create(WizardForm);

NoneDescLabel.Parent:=BackupPage.Surface;

NoneDescLabel.Left:=18;

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

DelTree(ExpandConstant('{app}\res_mods\0.8.11'), True, True, True);

DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);

CreateDir(ExpandConstant('{app}\res_mods\0.8.11'));

end;

end;

 

function BackupCheck_3(): Boolean;

begin

If MoveRadioButton.Checked then

begin

MoveDir(ExpandConstant('{app}\res_mods\0.8.11\'),ExpandConstant('{app}\res_mods\backup\0.8.11'));

MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));

CreateDir(ExpandConstant('{app}\res_mods\0.8.11'));

DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);

end;

end;

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

If CurStep=ssInstall then

begin

BackupCheck_2();

BackupCheck_3();

end;

end;

 

procedure InitializeWizard();

begin

BackupCheck_1();

end;

 и картинки при наведении
[code=auto:0]#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';

 

 

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 + 390), 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.Отражение броней(unKnown_bot).': UndefPic := '1-Забл броней урон.bmp';

'2.Радар (тылы).': UndefPic := 'Радар.bmp';

'3.Командирская камера (koshnaranek).': UndefPic := 'Командирская камера.bmp';

'4.Таймер сведения орудия в бою (Ekspoint).': UndefPic := 'таймер сведения.bmp';

'5.Винтик.': UndefPic := 'винтик.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();

end;

 

по отдельности все работает! совместить не могу! (( 

Вот так автоматом...

'совмещенный скрипт'

; --- Generated by InnoSetup Script Joiner version 3.0, Jul 22 2009, © Bulat Ziganshin . More info at http://issjoiner.codeplex.com/@gmail.com>

; --- Source: 778.iss ------------------------------------------------------------

; BackUpPage - отдельная страница для реализации резервного копирования файлов с выбором параметров

; Автор: AtotIK

 

#include "SHFileOperation.iss";

 

[code=auto:0]

var

BackupPage: TWizardPage;

DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

 

const

BackupDescText =

'Во избежание проблем совместимости и конфликтов между модификациями рекомендуется удалить уже установленные на данный момент в игровом клиенте.' #13#13 'Выберите необходимый пункт из представленных. При этом будет очищено содержимое папки "res_mods\0.8.11", удалена папка "res_mods\xvm" или созданы резервные копии Ваших файлов.';

DeleteDescText =

'Установщик удалит все файлы в папках.';

MoveDescText =

'Установщик сделает резервную копию всех файлов в папках.';

NoneDescText =

'Установщик оставит всё как есть.';

 

function BackupCheck_1(): Boolean;

var

BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;

begin

BackupPage:=CreateCustomPage(wpWelcome, 'Создание резервных копий файлов перед установкой', 'Пожалуйста, прочтите следующую важную информацию перед тем, как продолжить.');

BackupDescLabel:=TLabel.Create(WizardForm);

BackupDescLabel.Parent:=BackupPage.Surface;

BackupDescLabel.Left:=0;

BackupDescLabel.Top:=0;

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:=False;

DeleteRadioButton.Top:=95;

DeleteRadioButton.Width:=BackupPage.SurfaceWidth;

DeleteRadioButton.Font.Style:=[fsBold];

DeleteRadioButton.Font.Size:=9;

DeleteRadioButton.Caption:='Удалить файлы'

DeleteDescLabel:=TLabel.Create(WizardForm);

DeleteDescLabel.Parent:=BackupPage.Surface;

DeleteDescLabel.Left:=18;

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:=True;

MoveRadioButton.Top:=140;

MoveRadioButton.Width:=BackupPage.SurfaceWidth;

MoveRadioButton.Font.Style:=[fsBold];

MoveRadioButton.Font.Size:=9;

MoveRadioButton.Caption:='Сделать резервную копию файлов'

MoveDescLabel:=TLabel.Create(WizardForm);

MoveDescLabel.Parent:=BackupPage.Surface;

MoveDescLabel.Left:=18;

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:=185;

NoneRadioButton.Width:=BackupPage.SurfaceWidth;

NoneRadioButton.Font.Style:=[fsBold];

NoneRadioButton.Font.Size:=9;

NoneRadioButton.Caption:='Ничего не трогать'

NoneDescLabel:=TLabel.Create(WizardForm);

NoneDescLabel.Parent:=BackupPage.Surface;

NoneDescLabel.Left:=18;

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

DelTree(ExpandConstant('{app}\res_mods\0.8.11'), True, True, True);

DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);

CreateDir(ExpandConstant('{app}\res_mods\0.8.11'));

end;

end;

 

function BackupCheck_3(): Boolean;

begin

If MoveRadioButton.Checked then

begin

MoveDir(ExpandConstant('{app}\res_mods\0.8.11\'),ExpandConstant('{app}\res_mods\backup\0.8.11'));

MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));

CreateDir(ExpandConstant('{app}\res_mods\0.8.11'));

DelTree(ExpandConstant('{app}\res_mods\xvm'), True, True, True);

end;

end;

 

procedure CurStepChanged1(CurStep: TSetupStep);

begin

If CurStep=ssInstall then

begin

BackupCheck_2();

BackupCheck_3();

end;

end;

 

procedure InitializeWizard1();

begin

BackupCheck_1();

end;

[setup]

 

 

; --- Source: 777.iss ------------------------------------------------------------

 

[Code]

[code=auto:0]

#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';

 

 

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 + 390), 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.Отражение броней(unKnown_bot).': UndefPic := '1-Забл броней урон.bmp';

'2.Радар (тылы).': UndefPic := 'Радар.bmp';

'3.Командирская камера (koshnaranek).': UndefPic := 'Командирская камера.bmp';

'4.Таймер сведения орудия в бою (Ekspoint).': UndefPic := 'таймер сведения.bmp';

'5.Винтик.': UndefPic := 'винтик.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 InitializeWizard2();

begin

InitInfo();

end;

[setup]

 

 

; --- Dispatching code ------------------------------------------------------------

 

[Code]

 

procedure CurStepChanged(CurStep: TSetupStep);

begin

CurStepChanged1(CurStep);

end;

 

procedure InitializeWizard();

begin

InitializeWizard1();

InitializeWizard2();

end;

 

 

@gmail.com>

Share this post


Link to post

Short link
Share on other sites

#define WotVersion "0.9.16"
#include "SHFileOperation.iss";

[Code]
var
  DeleteRadioButton, MoveRadioButton, NoneRadioButton: TRadioButton;
  DeleteCashAndLogsCheckBox, DeleteUpdatesCheckBox: TCheckBox;

const
  DeleteDescText =
    'Установщик удалит все файлы в папках.';
  MoveDescText =
    'Установщик сделает резервную копию файлов.';
  NoneDescText =
    'Установщик не будет ничего трогать.';

function BackupCheck_1(): Boolean;
var
  DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel;
begin
  DeleteRadioButton:=TRadioButton.Create(WizardForm);
  DeleteRadioButton.SetBounds(0, 120, WizardForm.RunList.Width, 20)
  DeleteRadioButton.Checked:=True;
  DeleteRadioButton.Caption:='Удалить моды';
  DeleteRadioButton.Parent:=WizardForm.SelectDirPage;
  DeleteDescLabel:=TLabel.Create(WizardForm);
  DeleteDescLabel.Parent:=WizardForm.SelectDirPage;
  DeleteDescLabel.Left:=0;
  DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height;
  DeleteDescLabel.Width:=WizardForm.SelectDirPage;
  DeleteDescLabel.Height:=20;
  DeleteDescLabel.AutoSize:=False;
  DeleteDescLabel.Wordwrap:=True;
  DeleteDescLabel.Caption:=DeleteDescText;

  MoveRadioButton:=TRadioButton.Create(WizardForm);
  MoveRadioButton.SetBounds(0, 160, WizardForm.RunList.Width, 20)
  MoveRadioButton.Checked:=False;
  MoveRadioButton.Caption:='Сделать резервную копию модов';
  MoveRadioButton.Parent:=WizardForm.SelectDirPage;
  MoveDescLabel:=TLabel.Create(WizardForm);
  MoveDescLabel.Parent:=WizardForm.SelectDirPage;
  MoveDescLabel.Left:=0;
  MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height;
  MoveDescLabel.Width:=WizardForm.SelectDirPage;
  MoveDescLabel.Height:=20;
  MoveDescLabel.AutoSize:=False;
  MoveDescLabel.Wordwrap:=True;
  MoveDescLabel.Caption:=MoveDescText;

  NoneRadioButton:=TRadioButton.Create(WizardForm);
  NoneRadioButton.SetBounds(0, 200, WizardForm.RunList.Width, 20)
  NoneRadioButton.Checked:=False;
  NoneRadioButton.Caption:='Ничего не трогать';
  NoneRadioButton.Parent:=WizardForm.SelectDirPage;
  NoneDescLabel:=TLabel.Create(WizardForm);
  NoneDescLabel.Parent:=WizardForm.SelectDirPage;
  NoneDescLabel.Left:=0;
  NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height;
  NoneDescLabel.Width:=WizardForm.SelectDirPage;
  NoneDescLabel.Height:=20;
  NoneDescLabel.AutoSize:=False;
  NoneDescLabel.Wordwrap:=True;
  NoneDescLabel.Caption:=NoneDescText;

  DeleteCashAndLogsCheckBox:=TCheckBox.Create(WizardForm);
  DeleteCashAndLogsCheckBox.SetBounds(0, 240, WizardForm.RunList.Width, 20)
  DeleteCashAndLogsCheckBox.Checked:=True;
  DeleteCashAndLogsCheckBox.Caption:='Очистить кэш и логи';
  DeleteCashAndLogsCheckBox.Parent:=WizardForm.SelectDirPage;

  DeleteUpdatesCheckBox:=TCheckBox.Create(WizardForm);
  DeleteUpdatesCheckBox.SetBounds(150, 240, WizardForm.RunList.Width, 20)
  DeleteUpdatesCheckBox.Checked:=True;
  DeleteUpdatesCheckBox.Caption:='Очистить папку Updates, освободив место на диске';
  DeleteUpdatesCheckBox.Parent:=WizardForm.SelectDirPage;
end;

function BackupCheck_2(): Boolean;
begin
  If DeleteRadioButton.Checked then
begin
  DelTree(ExpandConstant('{app}\res_mods\{#WotVersion}'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
  CreateDir(ExpandConstant('{app}\res_mods\{#WotVersion}'));
end;
end;

function BackupCheck_3(): Boolean;
begin
  If MoveRadioButton.Checked then
begin
  MoveDir(ExpandConstant('{app}\res_mods\{#WotVersion}\'),ExpandConstant('{app}\res_mods\backup\{#WotVersion}'));
  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\{#WotVersion}'));
  DelTree(ExpandConstant('{app}\res_mods\configs'), True, True, True);
  DelTree(ExpandConstant('{app}\res_mods\mods'), True, True, True);
end;
end;

function BackupCheck_4(): Boolean;
begin
  If DeleteCashAndLogsCheckBox.Checked then
begin
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache'), True, True, True);
  DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache'), True, True, True);
  DeleteFile(ExpandConstant('{app}\python.log'));
  DeleteFile(ExpandConstant('{app}\xvm.log'));
end;
end;

function BackupCheck_5(): Boolean;
begin
  If DeleteUpdatesCheckBox.Checked then
begin
  DelTree(ExpandConstant('{app}\Updates'), True, True, True);
  CreateDir(ExpandConstant('{app}\Updates'));
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssInstall then
begin
BackupCheck_2();
BackupCheck_3();
BackupCheck_4();
BackupCheck_5();
end;
end;

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

#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';


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 + 390), 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.Отражение броней(unKnown_bot).': UndefPic := '1-Забл броней урон.bmp';
'2.Радар (тылы).': UndefPic := 'Радар.bmp';
'3.Командирская камера (koshnaranek).': UndefPic := 'Командирская камера.bmp';
'4.Таймер сведения орудия в бою (Ekspoint).': UndefPic := 'таймер сведения.bmp';
'5.Винтик.': UndefPic := 'винтик.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 InitializeWizard2();
begin
InitInfo();
end;

procedure InitializeWizard();
begin
 InitializeWizard1();
 InitializeWizard2();
end; 

а вот за этот скрипт ОГРОМНОЕ СПАСИБО!!! реально в человеческом виде а не как у меня)))) 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Читаю и смеюсь...

ты бы не смеялся подсказал что не так то ))))) не все же спецы как вы!

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Так спрашивали бы по делу, что-то интересное, а не то "как скрипты объединить". Берёшь и объединяешь. В 90% случаев нет ничего сверхъестественного в этом и сводится к подключению процедуры в главную.

Edited by AtotIK
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Так спрашивали бы по делу, что-то интересное, а не то "как скрипты объединить". Берёшь и объединяешь. В 90% случаев нет ничего сверхъестественного в этом и сводится к подключению процедуры в главную.

если бы вот такой скрипт, который мне выслали выше был бы в шапке темы 70% этого топа вопросов бы не существовало...

я перечитывал много инфы в ино сетап, мозг чуть не сплавился, все уводит куда то в сторону, не в те степя, а дельный рабочий пример скрипта самое оно, больше ничего и не надо!

  • Upvote 3
  • Downvote 1

Share this post


Link to post

Short link
Share on other sites

Читаю и смеюсь...

Вахаха я то же  улыбаюсь ведь конкретно ответил на вопрос КАК :ic:  скрипты объединить? вот и сделал, тем более в инно это все на автомате делается... а чтобы работало вопроса не было!!!

Так спрашивали бы по делу, что-то интересное, а не то "как скрипты объединить". Берёшь и объединяешь. В 90% случаев нет ничего сверхъестественного в этом и сводится к подключению процедуры в главную.

вот и я ответил прямо на поставленный вопрос, его по делу не было...

Парни здесь велосипед изобретают, хотя в теме все почти есть... пытаются все что кусками в одно собрать, а учиться и не пробуют некоторые!....

каждому я давал полный исходник модпака, но им надо не так как надо , а по своему... вот поэтому и вопросы такие, даже исходник готового многостраничного пака им не нужен и поучить его не желают, просят все за них и под них сделать, так идите в платный раздел и вам там все наклепают за грины!

Share this post


Link to post

Short link
Share on other sites

Вахаха я то же  улыбаюсь ведь конкретно ответил на вопрос КАК :ic:  скрипты объединить? вот и сделал, тем более в инно это все на автомате делается... а чтобы работало вопроса не было!!!

вот и я ответил прямо на поставленный вопрос, его по делу не было...

Парни здесь велосипед изобретают, хотя в теме все почти есть... пытаются все что кусками в одно собрать, а учиться и не пробуют некоторые!....

каждому я давал полный исходник модпака, но им надо не так как надо , а по своему... вот поэтому и вопросы такие, даже исходник готового многостраничного пака им не нужен и поучить его не желают, просят все за них и под них сделать, так идите в платный раздел и вам там все наклепают за грины!

спс дружище за помощь в личке и то что поделился скриптом! Он очень навороченный в отличии от моего первобытного минималистика состоящиго из одного скрипта!

Твой мега пак из десятка скриптов я в данный момент сижу изучаю и запиливаю под себя, это не за один день делается... а обновления много выходит ежедневно у меня достаточно много скачек вот например менее за сутки только с яндекс диск

а 77bd69694a9c.jpg

 

а сегодня запилил с обновленным установщиком, со скриптом что выше...

твой скрипт в процессе изучения и запиливания, если получится привыкнуть к такой сложной для меня системе))

Edited by Draug

Share this post


Link to post

Short link
Share on other sites
Подскажите, как сделать чтобы при наведении мышкой на название мода появлялась картинка?
А смысл в этом глючном скрипте?

 

Есть бесплатная библиотека (дополнение) для Inno Setup с наименованием botva2 (или просто ботва). Позволяет настроить под себя множество элементов инсталлятора на свой лад и вкус, но для этого в ней нужно разобраться покопавшись в примерах поставляемых с этой библиотекой.

 

Небольшой пример добавления чекбокса (на вывод компонента для установки) с превьюшкой в виде изображения.

 

'Example: Components page'

[Files]
Source: "Skin\res\image\Checkbox.png"; DestDir: "{tmp}"; Flags: ignoreVersion dontcopy;
Source: "Skin\res\image_preview\Battle_5.png"; DestDir: "{tmp}"; Flags: ignoreVersion dontcopy;

[CustomMessages]
Battle_5=Индикатор направления обстрела

[Code]

var
  Battle_5_CheckBox: HWND;
  Battle_5_Label: TLabel;
  Battle_5_Preview: Longint;

function Battle_5: Boolean;
begin
  Result:= BtnGetChecked(Battle_5_CheckBox);
end;

Procedure Battle_5_Click(hBtn:HWND);
begin
  if BtnGetChecked(Battle_5_CheckBox) then
  begin
    BtnSetChecked(Battle_1_CheckBox,true);
  end;  
end;

Procedure Battle_5_MouseMove(hBtn:HWND);
begin
  ImgSetVisibility(Battle_5_Preview,true);
  ImgApplyChanges(WizardForm.Handle);
end;

Procedure Battle_5_MouseLeave(hBtn:HWND);
begin
  ImgSetVisibility(Battle_5_Preview,false);
  ImgApplyChanges(WizardForm.Handle);
end;

procedure IW_Components_Battle();
begin
  ExtractTemporaryFile('Checkbox.png');
  ExtractTemporaryFile('Battle_5.png');
  Battle_5_Preview:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\Battle_5.png'),ScaleX(401),ScaleY(132),ScaleX(250),ScaleY(250),true,true);
  ImgSetVisibility(Battle_5_Preview,false);

  Battle_5_CheckBox:=BtnCreate(WizardForm.Handle,ScaleX(36),ScaleY(81),ScaleX(13),ScaleY(13),ExpandConstant('Checkbox.png'),0,true);
  BtnSetEvent(Battle_5_CheckBox,BtnClickEventID,WrapBtnCallback(@Battle_5_Click,1));
  BtnSetEvent(Battle_5_CheckBox,BtnMouseMoveEventID,WrapBtnCallback(@Battle_5_MouseMove,1));
  BtnSetEvent(Battle_5_CheckBox,BtnMouseLeaveEventID,WrapBtnCallback(@Battle_5_MouseLeave,1));
  BtnSetVisibility(Battle_5_CheckBox,false);
  BtnSetCursor(Battle_5_CheckBox,GetSysCursorHandle(32649));  
  Battle_5_Label:=Create_Label_Battle(WizardForm,ScaleX(55),ScaleY(80),ScaleX(0),ScaleY(0),ExpandConstant('{cm:Battle_5}'), true);

  BtnSetChecked(Battle_5_CheckBox,true);
end;
procedure InitializeWizard();
begin
  IW_Components_Battle();
end;

Далее на скрине описанный пример - пятый элемент сверху (в списке компонентов).

 

43cb284f5d3f.png

 

Edited by night_dragon_on

Share this post


Link to post

Short link
Share on other sites

Слишком мудрёно через кнопку чекбоксы создавать. Ботву можно прикрутить намноно легче к компонентлисту. А если дело в фоне под чекбоксом и надписью, то это тоже можно решить.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Есть вопрос. Подскажите гуру как сделать чтобы заставка сплеша воспроизводилась если я шифрую  установщик

Encryption=yes

Password=11111

Просто пишет ошибку что dll не найден в папке темп... короче не дает его прочитать после шифрования, если отключаю то все работает....

'Скриншот ошибки'

12269441.png

Короче проверял темп и видел, что если не шифровать все нужные файлы копируются, а если включить шифрование, то файлы для запуска заставки не копируются... перелопатил немного форумы, но так и не нашел решения... подходящего для меня..

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

Есть вопрос. Подскажите гуру как сделать чтобы заставка сплеша воспроизводилась если я шифрую установщик

Encryption=yes

Password=11111

Просто пишет ошибку что dll не найден в папке темп... короче не дает его прочитать после шифрования, если отключаю то все работает....

'Скриншот ошибки'

12269441.png

Короче проверял темп и видел, что если не шифровать все нужные файлы копируются, а если включить шифрование, то файлы для запуска заставки не копируются... перелопатил немного форумы, но так и не нашел решения... подходящего для меня..

Так исполняемые файлы и картинки вроде нельзя криптовать вот и ругается. Пометьте те файлы что не надо криптовать флагом noencrypt если не ошибаюсь. В справке это есть. Edited by akey
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Спасибо уже сделал, добавил флаг, но мне надо чтобы потом dll и каритнку сплеша не могли потом тырнуть , вот как это реализовать еще не нашел...

 к тому же  мне не надо чтобы вводили пароль пользователи, а чтобы просто шифровался модпак.... короче просто не знаю как сделать подскажите кто такое делал.

Edited by Nowik1971

Share this post


Link to post

Short link
Share on other sites

Спасибо уже сделал, добавил флаг, но мне надо чтобы потом dll и каритнку сплеша не могли потом тырнуть , вот как это реализовать еще не нашел...

к тому же мне не надо чтобы вводили пароль пользователи, а чтобы просто шифровался модпак.... короче просто не знаю как сделать подскажите кто такое делал.

В справке это тоже есть, но если Вы используете uni вид inno это Вам не поможет. На ANSI версии сложней разложить инсталятор, но тоже можно, так что это бессмысленно заморачиваться. Пароль будет вводиться автоматом, соответственно анпакер сработает без проблем :)

Share this post


Link to post

Short link
Share on other sites

В справке это тоже есть, но если Вы используете uni вид inno это Вам не поможет. На ANSI версии сложней разложить инсталятор, но тоже можно, так что это бессмысленно заморачиваться. Пароль будет вводиться автоматом, соответственно анпакер сработает без проблем :)

пробуй вскрывай если сможешь и пароль сюда прямо напиши... https://yadi.sk/d/G_DyPR6txP9j4, но мне надо чтобы и длл шифровались и картинки....

Есть код, который автоматом вводит пароль. Но зачем это?

Зашифровать от взлома.... распаковщиком...

Edited by Nowik1971

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