Jump to content
Korean Random
EvilAlex

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

Recommended Posts

Странно, что там такое вообще есть. Ща проверю..

 

Проверил (специально для этого скачал).

'Ну и где же пункт "восстановить сделанный ранее бекап" ?'

я перепутал оно есть в сборке от EXPROMT_MAX

вот 

а после того как сделал бекап появилось такое 

и как делается бекап с помощью такой проги не понимаю 

Share this post


Link to post

Short link
Share on other sites
и как делается бекап с помощью такой проги не понимаю

Как не понимаешь? Я же тебя спрашивал, есть ли у тебя код бекапа, ты сказал: да. Восстановление бекапа делается обратным способом.

А само наличие пунктов "восстановить бекап", "удалить бекап" делается через процедуру CurStepChenged, а в ней идёт проверка DirExists. И уже в зависимости от того, присутствует ли бекап в папке с игрой, делается действие: показывать или нет эти пункты.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Как не понимаешь? Я же тебя спрашивал, есть ли у тебя код бекапа, ты сказал: да. Восстановление бекапа делается обратным способом.

А само наличие пунктов "восстановить бекап", "удалить бекап" делается через процедуру CurStepChenged, а в ней идёт проверка DirExists. И уже в зависимости от того, присутствует ли бекап в папке с игрой, делается действие: показывать или нет эти пункты.

и как сделать эти пункты?

Share this post


Link to post

Short link
Share on other sites

Именно такой тебе не нужен. Пункт "Восстановить резервную копию файлов" при установке ни к чему. @ventura69 делал этот скрипт для отдельной от установщика программы (типо расширенного деинсталлятора).

Может, тебе просто нужен код бекапа?

 

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

Share this post


Link to post

Short link
Share on other sites

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

А если ктото случайно галку жмакнет и не заметит, а потом будет голову ломать почему моды не встали.

Share this post


Link to post

Short link
Share on other sites

А если ктото случайно галку жмакнет и не заметит, а потом будет голову ломать почему моды не встали.

Значит следующий раз будет внимательнее следить за тем, что его руки творят! Всегда считал, что прежде, чем что-то делать, надо думать :-)

Share this post


Link to post

Short link
Share on other sites

Точнее: res_mods\xvm\configs\вот_это_имя.

 

Так-то я понял, что вы хотите. А если у пользователя окажется однофайловый конфиг?

это исключено, меня интересует именно то, что я спросила

Share this post


Link to post

Short link
Share on other sites

это исключено, меня интересует именно то, что я спросила

 Не, не знаю. Рой в сторону процедуры FindFirst.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

почему выдаёт ошибку что XVMTOKENLABEL неизвестный идентификатор???

#include "SHFileOperation.iss"


var
BackupPage: TWizardPage;
DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

const
BackupDescText =
'Âî èçáåæàíèå ïðîáëåì è êîíôëèêòîâ ìåæäó ìîäèôèêàöèÿìè, ðåêîìåíäóåòñÿ óäàëèòü âñå óñòàíîâëåííûå íà äàííûé ìîìåíò ìîäû êëèåíòà.';
DeleteDescText =
'Óñòàíîâùèê î÷èñòèò ïàïêó res_mods è óñòàíîâèò íîâûå ìîäèôèêàöèè.';
MoveDescText =
'Óñòàíîâùèê ñäåëàåò ðåçåðâíóþ êîïèþ âñåõ ôàéëîâ â ïàïêå res_mods.';
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:=ScaleX(40);
BackupDescLabel.Top:=ScaleY(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:='Óäàëèòü ìîäû'
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:='Ñäåëàòü ðåçåðâíóþ êîïèþ âñåõ ìîäîâ'
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:='Íè÷åãî íå òðîãàòü'
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
DelTree(ExpandConstant('{app}\res_mods\{#Patch}'), True, True, True);
DelTree(ExpandConstant('{app}\res_mods\xvm'), 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}\'),ExpandConstant('{app}\res_mods\backup\{#Patch}'));
MoveDir(ExpandConstant('{app}\res_mods\xvm\'),ExpandConstant('{app}\res_mods\backup\xvm'));
CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));
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;




////
/////
///
Var
XVMTokenButton: TNewCheckBox;

Procedure TokenCheckButton(Sender: TObject);
begin
if FileExists(ExpandConstant('{app}\tokens.xdb')) = false then
begin
XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (ïóíêò íåäîñòóïåí, ïîäðîáíîñòè íèæå).';
XVMTokenButton.Enabled:=False;
XVMTokenButton.Checked:=False;
XVMTokenLabel.Caption:='Ïàïêà ñ òîêåíîì àêòèâàöèè ñòàòèñòèêè íå íàéäåíà.';
XVMTokenLabel.Font.Color:=clGray;
end;
if FileExists(ExpandConstant('{app}\tokens.xdb')) = true then
begin
XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (òîêåí äîñòóïåí).';
XVMTokenButton.Checked:=True;
XVMTokenButton.Enabled:=True;
XVMTokenLabel.Caption:='Ñîõðàíèòü ïàïêó ñ òîêåíîì àêòèâàöèè ñòàòèñòèêè.';
XVMTokenLabel.Font.Color:=clBlack;
end;
end;

Function Backup: Boolean;
var
BackupPage: TWizardPage;
DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;
BackupBox: TListBox;
TokenCheck: TButton;
BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel, XVMTokenLabel: TLabel;
begin
/////////////òóò îñíîâíîé êîä áåêàïà\\\\\\\\\\\\\\\\
XVMTokenButton:=TNewCheckBox.Create(WizardForm);
XVMTokenButton.Parent:=BackupPage.Surface;
XVMTokenButton.State:=cbUnchecked;
XVMTokenButton.Top:=221;
XVMTokenButton.Left:=4;
XVMTokenButton.Width:=BackupPage.SurfaceWidth - 5;
XVMTokenButton.Font.Style:=[fsBold];
XVMTokenButton.Font.Size:=9;
XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (ïðîâåðüòå åãî íàëè÷èå).';
XVMTokenButton.Enabled:=False;
XVMTokenLabel:=TLabel.Create(WizardForm);
XVMTokenLabel.Parent:=BackupPage.Surface;
XVMTokenLabel.Left:=18;
XVMTokenLabel.Top:= XVMTokenButton.Top + XVMTokenButton.Height + 4;
XVMTokenLabel.Width:=BackupPage.SurfaceWidth;
XVMTokenLabel.Height:=40;
XVMTokenLabel.AutoSize:=False;
XVMTokenLabel.Wordwrap:=True;
XVMTokenLabel.Caption:='Äëÿ ïðîâåðêè òîêåíà àêòèâàöèè ñòàñòèêè íàæìèòå êíîïêó íèæå.';
XVMTokenLabel.Font.Color:=clGray;

TokenCheck := TButton.Create(WizardForm);
TokenCheck.Parent := BackupPage.Surface;
TokenCheck.Top := 264;
TokenCheck.Left := 143;
TokenCheck.Width := 200;
TokenCheck.Height := 23;
TokenCheck.Caption := 'Ïðîâåðèòü íàëè÷èå òîêåíà';
TokenCheck.Font.Size := 10;
TokenCheck.Font.Style := [fsBold];
TokenCheck.onClick := @TokenCheckButton;
end;

Function XVMTokenButton_1(): Boolean;
begin
If XVMTokenButton.Checked then
begin
CreateDir(ExpandConstant('{app}\dbTEMP'));
CopyDir(ExpandConstant('{app}\res_mods\xvm\db'),ExpandConstant('{app}\dbTEMP'));
end;
end;
Function XVMTokenButton_2(): Boolean;
begin
If XVMTokenButton.Checked then
begin
CreateDir(ExpandConstant('{app}\res_mods\xvm'));
MoveDir(ExpandConstant('{app}\dbTEMP\db'),ExpandConstant('{app}\res_mods\xvm'));
DelTree(ExpandConstant('{app}\dbTEMP'), True, True, True);
end;
end;
procedure InitializeWizard2();
begin
Backup;
end;
Procedure CurStepChanged2(CurStep: TSetupStep);
begin
If CurStep=ssInstall then
begin
XVMTokenButton_1();
end;
end;
Procedure CurStepChanged3(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall then
begin
XVMTokenButton_2();
end;
end;
Procedure CurStepChanged(CurStep: TSetupStep);
begin
CurStepChanged1(CurStep);
CurStepChanged2(CurStep);
CurStepChanged3(CurStep);
end;

Share this post


Link to post

Short link
Share on other sites

почему выдаёт ошибку что XVMTOKENLABEL неизвестный идентификатор???

#include "SHFileOperation.iss"

 

var

BackupPage: TWizardPage;

DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

 

const

BackupDescText =

'Âî èçáåæàíèå ïðîáëåì è êîíôëèêòîâ ìåæäó ìîäèôèêàöèÿìè, ðåêîìåíäóåòñÿ óäàëèòü âñå óñòàíîâëåííûå íà äàííûé ìîìåíò ìîäû êëèåíòà.';

DeleteDescText =

'Óñòàíîâùèê î÷èñòèò ïàïêó res_mods è óñòàíîâèò íîâûå ìîäèôèêàöèè.';

MoveDescText =

'Óñòàíîâùèê ñäåëàåò ðåçåðâíóþ êîïèþ âñåõ ôàéëîâ â ïàïêå res_mods.';

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:=ScaleX(40);

BackupDescLabel.Top:=ScaleY(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:='Óäàëèòü ìîäû'

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:='Ñäåëàòü ðåçåðâíóþ êîïèþ âñåõ ìîäîâ'

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:='Íè÷åãî íå òðîãàòü'

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

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

DelTree(ExpandConstant('{app}\res_mods\xvm'), 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}\'),ExpandConstant('{app}\res_mods\backup\{#Patch}'));

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

CreateDir(ExpandConstant('{app}\res_mods\{#Patch}'));

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;

 

 

 

 

////

/////

///

Var

XVMTokenButton: TNewCheckBox;

 

Procedure TokenCheckButton(Sender: TObject);

begin

if FileExists(ExpandConstant('{app}\tokens.xdb')) = false then

begin

XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (ïóíêò íåäîñòóïåí, ïîäðîáíîñòè íèæå).';

XVMTokenButton.Enabled:=False;

XVMTokenButton.Checked:=False;

XVMTokenLabel.Caption:='Ïàïêà ñ òîêåíîì àêòèâàöèè ñòàòèñòèêè íå íàéäåíà.';

XVMTokenLabel.Font.Color:=clGray;

end;

if FileExists(ExpandConstant('{app}\tokens.xdb')) = true then

begin

XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (òîêåí äîñòóïåí).';

XVMTokenButton.Checked:=True;

XVMTokenButton.Enabled:=True;

XVMTokenLabel.Caption:='Ñîõðàíèòü ïàïêó ñ òîêåíîì àêòèâàöèè ñòàòèñòèêè.';

XVMTokenLabel.Font.Color:=clBlack;

end;

end;

 

Function Backup: Boolean;

var

BackupPage: TWizardPage;

DeleteRadioButton, MoveRadioButton, NoneRadioButton: TNewRadioButton;

BackupBox: TListBox;

TokenCheck: TButton;

BackupDescLabel, DeleteDescLabel, MoveDescLabel, NoneDescLabel, XVMTokenLabel: TLabel;

begin

/////////////òóò îñíîâíîé êîä áåêàïà\\\\\\\\\\\\\\\\

XVMTokenButton:=TNewCheckBox.Create(WizardForm);

XVMTokenButton.Parent:=BackupPage.Surface;

XVMTokenButton.State:=cbUnchecked;

XVMTokenButton.Top:=221;

XVMTokenButton.Left:=4;

XVMTokenButton.Width:=BackupPage.SurfaceWidth - 5;

XVMTokenButton.Font.Style:=[fsBold];

XVMTokenButton.Font.Size:=9;

XVMTokenButton.Caption:='Ñîõðàíèòü õâì-òîêåí (ïðîâåðüòå åãî íàëè÷èå).';

XVMTokenButton.Enabled:=False;

XVMTokenLabel:=TLabel.Create(WizardForm);

XVMTokenLabel.Parent:=BackupPage.Surface;

XVMTokenLabel.Left:=18;

XVMTokenLabel.Top:= XVMTokenButton.Top + XVMTokenButton.Height + 4;

XVMTokenLabel.Width:=BackupPage.SurfaceWidth;

XVMTokenLabel.Height:=40;

XVMTokenLabel.AutoSize:=False;

XVMTokenLabel.Wordwrap:=True;

XVMTokenLabel.Caption:='Äëÿ ïðîâåðêè òîêåíà àêòèâàöèè ñòàñòèêè íàæìèòå êíîïêó íèæå.';

XVMTokenLabel.Font.Color:=clGray;

 

TokenCheck := TButton.Create(WizardForm);

TokenCheck.Parent := BackupPage.Surface;

TokenCheck.Top := 264;

TokenCheck.Left := 143;

TokenCheck.Width := 200;

TokenCheck.Height := 23;

TokenCheck.Caption := 'Ïðîâåðèòü íàëè÷èå òîêåíà';

TokenCheck.Font.Size := 10;

TokenCheck.Font.Style := [fsBold];

TokenCheck.onClick := @TokenCheckButton;

end;

 

Function XVMTokenButton_1(): Boolean;

begin

If XVMTokenButton.Checked then

begin

CreateDir(ExpandConstant('{app}\dbTEMP'));

CopyDir(ExpandConstant('{app}\res_mods\xvm\db'),ExpandConstant('{app}\dbTEMP'));

end;

end;

Function XVMTokenButton_2(): Boolean;

begin

If XVMTokenButton.Checked then

begin

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

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

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

end;

end;

procedure InitializeWizard2();

begin

Backup;

end;

Procedure CurStepChanged2(CurStep: TSetupStep);

begin

If CurStep=ssInstall then

begin

XVMTokenButton_1();

end;

end;

Procedure CurStepChanged3(CurStep: TSetupStep);

begin

If CurStep=ssPostInstall then

begin

XVMTokenButton_2();

end;

end;

Procedure CurStepChanged(CurStep: TSetupStep);

begin

CurStepChanged1(CurStep);

CurStepChanged2(CurStep);

CurStepChanged3(CurStep);

end;

А зачем вообще чекбоксы для токена городить, можно же по умолчанию постоянно его пересохранять да и всё. И нет проблем ни у тебя ни у пользователя   :)

Share this post


Link to post

Short link
Share on other sites

@Darksoul, уу, как всё запущено. Внимательнее смотри, ты создал две страницы бекапа на одном и том же месте. Это тот код, который я вам вчера бросал?

Если да - то просто скинь свой код бекапа в ЛС - встрою на него эту кнопку.

з.ы. ругается, что он неизвестный идентификатор потому, что его нужно объявить глобальной переменной, а у тебя он по-прежнему объявляется из одной процедуры, а вызывается из двух.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Парни как замутить удаление старых модов?Очистку папки рес модс на странице выбора дериктории?


да и ещё! почему чек бокс могу поставить поверх картинки ,а label не могу!?

Share this post


Link to post

Short link
Share on other sites
Парни как замутить удаление старых модов?Очистку папки рес модс на странице выбора дериктории?

Вот пример от @AtotIK`а.

Можно сделать и на странице выбора дериктории, для этого удали часть кода, которая создаёт страницу. И для всех надписей, РадиоБаттонов смени названия страницы для свойства Parent, на SelectDirPage.

да и ещё! почему чек бокс могу поставить поверх картинки ,а label не могу!?

 Покажи часть кода, где ты делаешь чекбокс на картинке, и код, в котором делаешь лейбл.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

 

 

Покажи часть кода, где ты делаешь чекбокс на картинке, и код, в котором делаешь лейбл.

вот

{ RedesignWizardFormBegin } // Íå óäàëÿòü ýòó ñòðîêó!
// Íå èçìåíÿòü ýòó ñåêöèþ. Îíà ñîçäàíà àâòîìàòè÷åñêè.
var
BitmapImage1: TBitmapImage;
BitmapImage2: TBitmapImage;
BitmapImage3: TBitmapImage;
BitmapImage4: TBitmapImage;
BitmapImage5: TBitmapImage;
BitmapImage7: TBitmapImage;
BitmapImage8: TBitmapImage;
BitmapImage9: TBitmapImage;
BitmapImage10: TBitmapImage;
BitmapImage6: TBitmapImage;
Label1: TLabel;
NewCheckBox1: TNewCheckBox;




procedure RedesignWizardForm;
begin


with WizardForm.SelectDirPage do
{ Label2 }
Label2 := TLabel.Create(WizardForm);
with Label2 do
begin
Name := 'Label2';
Parent := WizardForm.SelectDirPage;
Caption := 'Óäàëèòü âñå ñòàðûå ìîäû (Ðåêîìåíäóåòñÿ!)';
Transparent := True;
Left := ScaleX(380);
Top := ScaleY(220);
Width := ScaleX(180);
Height := ScaleY(13);
end;

{ NewCheckBox1 }
NewCheckBox1 := TNewCheckBox.Create(WizardForm);
with NewCheckBox1 do
begin
Name := 'NewCheckBox1';
Parent := WizardForm.SelectDirPage;
Left := ScaleX(370);
Top := ScaleY(220);
Width := ScaleX(13);
Height := ScaleY(13);
Caption := '';
end;

 

Share this post


Link to post

Short link
Share on other sites

@MEDNIKs, попробуй лейблу в родители записать:

Parent := WizardForm.SelectDirPage.BitmapImage5

или не 5.. какое надо, такое и записывай.

Хотя, не уверен, что сработает.

Share this post


Link to post

Short link
Share on other sites

 

 

попробуй лейблу в родители записать: Parent := WizardForm.SelectDirPage.BitmapImage5 или не 5.. какое надо, такое и записывай. Хотя, не уверен, что сработает.

 

не работает :( 

Share this post


Link to post

Short link
Share on other sites

не работает :( 

Значит, ты лейбл создаёшь перед картинкой, и она его перекрывает. А чекбокс создаёшь после картинки, из-за чего чекбокс нормально виден.

Создай лейбл (по очерёдности) после того, как ты прописал картинки. Ну или просто после чекбокса.

Edited by Kotyarko_O

Share this post


Link to post

Short link
Share on other sites

Уже в тот день день всё решил, но немного попроще, но всё равно спасибо.

Edited by Darksoul

Share this post


Link to post

Short link
Share on other sites

 

 

Значит, ты лейбл создаёшь перед картинкой, и она его перекрывает. А чекбокс создаёшь после картинки, из-за чего чекбокс нормально виден. Создай лейбл (по очерёдности) после того, как ты прописал картинки. Ну или просто после чекбокса.

О заработало!Спасибо ! 

Share this post


Link to post

Short link
Share on other sites

Я все в Скриптах закончил тепер как Зделать Сам файл exe инсталятора?

Edited by klasdenis

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.

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