PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 [81] 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Dodakaedr
22-09-2014, 21:10
И так пробовал. Не получается. Пробовал по всякому: »
Тогда без скрипта здесь ничего не решить... И еще вопрос возник: ваши строки при удалении удаляются?

ROMKA-1977
22-09-2014, 21:24
Помогите пожалуйста.

Настранице SelectDirPage рописал код кастомной кнопки "Обзор"

Необходимо настроить также кнопку "Обзор" на странице SelectProgramGroupPage


#define AppName "MyProg"

[Setup]
SourceDir=.
OutputDir=Setup
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg
DefaultGroupName=MyProg
OutputBaseFilename=Setup

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

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Icons]
Name: {group}\MyProg; Filename: {app}; WorkingDir: {app}

[CustomMessages]
russian.RestoreButton=Сброс

[Code]
var
BrowseForm: TSetupForm;
DirTreeView: TFolderTreeView;
Edit: TNewEdit;

procedure DirFolderChange(Sender: TObject);
begin
if DirTreeView.Directory <> WizardForm.DirEdit.Text then
Edit.Text := AddBackslash(DirTreeView.Directory) + '{#SetupSetting("AppName")}' else
Edit.Text := DirTreeView.Directory;
end;

procedure BrowseForm_Buttons_OnClick(Sender: TObject);
begin
case TButton(Sender).Tag of
15: Edit.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}'));

16: begin
DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName));
Edit.Text := AddBackslash(DirTreeView.Directory) + '{#SetupSetting("AppName")}';
end;

17: if Edit.Text <> WizardForm.DirEdit.Text then WizardForm.DirEdit.Text := Edit.Text;
end;
end;

procedure BrowseClick(Sender: TObject);
begin
BrowseForm := CreateCustomForm();
with BrowseForm do
begin
Width := ScaleX(413);
Height := ScaleY(361);
Caption := SetupMessage(msgBrowseDialogTitle);
Position := poScreenCenter;

with TLabel.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(12), ScaleX(207), ScaleY(16));
Caption := SetupMessage(msgBrowseDialogLabel);
Parent := BrowseForm;
Font.Size := 8;
end;

DirTreeView := TFolderTreeView.Create(nil)
with DirTreeView do
begin
SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225));
OnChange := @DirFolderChange;
Parent := BrowseForm;
end;

Edit := TNewEdit.Create(nil);
with Edit do
begin
SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21));
Text := DirTreeView.Directory;
Parent := BrowseForm;
Font.Color := clWindowText;
end;

with TButton.Create(nil) do
begin
SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonCancel);
ModalResult := mrCancel;
end;

with TButton.Create(nil) do
begin
SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := ExpandConstant('{cm:RestoreButton}');
Tag := 15;
OnClick := @BrowseForm_Buttons_OnClick;
end;

with TButton.Create(nil) do
begin
SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonNewFolder);
Tag := 16;
OnClick := @BrowseForm_Buttons_OnClick;
end;

with TButton.Create(nil) do
begin
SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23));
Parent := BrowseForm;
Caption := SetupMessage(msgButtonOK);
Tag := 17;
OnClick := @BrowseForm_Buttons_OnClick;
ModalResult := mrOk;
end;

DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True);
ShowModal;
Free;
end;
end;

var
TDV: TFolderTreeView;
TFV: TStartMenuFolderTreeView;
OldEvent_NoIconsCheckClick: TNotifyEvent;

procedure TDVOnChange(Sender: TObject);
begin
WizardForm.DirEdit.Text:= AddBackslash(TDV.Directory)+'MyApp';
end;

procedure TFVOnChange(Sender: TObject);
begin
WizardForm.GroupEdit.Text:= AddBackslash(TFV.Directory)+'MyApp';
end;

procedure NoIconsCheckClick(Sender: TObject);
begin
OldEvent_NoIconsCheckClick(Sender);
TFV.Enabled := not WizardForm.NoIconsCheck.Checked;
end;

procedure InitializeWizard();
begin
TDV:= TFolderTreeView.Create(WizardForm);
TDV.Top:= WizardForm.DirEdit.Top+28;
TDV.Width:= 417;
TDV.Height:= 100;
TDV.OnChange:= @TDVOnChange;
TDV.Parent:= WizardForm.SelectDirPage;

TFV:= TStartMenuFolderTreeView.Create(WizardForm);
TFV.Top:= WizardForm.GroupEdit.Top+28;
TFV.Width:= 417;
TFV.Height:= 100;
TFV.SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{us erstartup}'),ExpandConstant('{commonstartup}'));
TFV.OnChange:= @TFVOnChange;
TFV.Parent:= WizardForm.SelectProgramGroupPage;

OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick;
WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick;

WizardForm.DirBrowseButton.Hide;

with TButton.Create(nil) do
begin
Parent := WizardForm.SelectDirPage;
SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1));
Caption := SetupMessage(msgButtonBrowse);
OnClick := @BrowseClick;
end;
end;

El Sanchez
22-09-2014, 21:38
Все еще не разобрался, поэтому повторяю свой вопрос. »
Kashtan007,

[Setup]
AppName=test2
AppVerName=test2
DefaultDirName=D:\test

[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl

[CustomMessages]
ru.DeleteOldMods=Удалить все старые моды
ru.CreateBackupOldMods=Сохранить бекап старых модов
ru.DeletingOldMods=Удаление старых модов...
ru.RestoringOldMods=Восстановление старых модов...

[Tasks]
Name: deleteoldmods; Description: {cm:DeleteOldMods}
Name: deleteoldmods\createbackupoldmods; Description: {cm:CreateBackupOldMods}

[Files]
Source: {app}\res_mods\*; DestDir: {app}\ModPack\BackUp\res_mods; Flags: external createallsubdirs recursesubdirs skipifsourcedoesntexist; Tasks: deleteoldmods\createbackupoldmods
Source: {app}\path.file; DestDir: {app}\ModPack\OriginalFiles; Flags: external skipifsourcedoesntexist

[Run]
Filename: {cmd}; Parameters: "/c rd /s /q ""{app}\res_mods\0.9.2"" & md ""{app}\res_mods\0.9.2"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Tasks: deleteoldmods
Filename: {cmd}; Parameters: "/c rd /s /q ""{app}\res_mods\xvm"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Tasks: deleteoldmods

[UninstallRun]
Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\BackUp\res_mods"" ""{app}\res_mods\"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Tasks: deleteoldmods\createbackupoldmods
Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\OriginalFiles\path.file"" ""{app}\"""; Flags: runhidden

Dodakaedr
22-09-2014, 22:07
Подскажите как записать такие данные в секции [Registry]?Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\XXX]

[HKEY_CURRENT_USER\Software\XXX\SETTINGS]
"Size"=hex:50,05,00,00
"Setting"=hex:87,85,c8,f3,2d,8f,4e,4f,90,eb,19,60,6a,e1,87,55,ff,b9,ce,f8,98,\
1f,53,6f,d1,fc,fd,5c,17,fb,53,2d,b9,bb,2f,25,13,cc,d5,3e,45,24,83,9a,b9,77,\
06,39,fb,10,89,6f,59,07,90,ef,7a,7f,e0,8e,e9,80,3d,01,b6,a9,ac,d1,3c,58,62,\
66,1a,f9,9a,2d,70,8b,82,76,8f,5b,3a,4f,9a,e8,18,10,d0,61,15,52,10,a6,ff,ae,\
55,7f,2d,6c,a5,01,22,29,0a,fc,43,e6,3a,1a,4c,a7,24,ca,2f,ab,ad,a6,6e,9a,f4,\
17,b6,27,54,9d,ae,59,33,82,28,a7,c9,4f,43,2f,ff,b4,13,35,7f,c1,07,f2,45,7b,\
72,17,dc,28,b3,9c,c4,85,c9,30,f4,d8,7a,f0,bc,58,b2,d5,08,2d,26,93,24,80,6d,\
99,16,7c,eb,9f,45,83,c7,5e,b3,4d,d8,af,f9,aa,35,d3,7d,51,6f,03,45,bf,47,70,\
5c,82,57,cd,d7,4a,d5,57,3f,34,c5,f4,8f,df,c3,24,a4,72,ea,bb,d1,55,1c,10,49,\
8b,03,01,7b,82,e9,40,38,d9,23,e3,71,7e,9e,4e,d9,53,09,88,06,fc,fc,bc,5e,90,\
db,9a,b5,e8,81,b1,57,cd,0a,81,d8,4f,7e,1b,a8,e1,b9,8e,48,ba,f8,ec,ba,a8,fd,\
ae,0c,27,d6,3f,1e,70,7d,19,8c,03,ea,0f,24,d0,ed,8b,2b,ad,b5,85,33,fa,ef,dc,\
90,ae,36,eb,63,44,61,db,a7,b2,c0,7c,11,32,53,23,49,9b,c1,5f,ea,95,4c,c2,08,\
11,b7,8b,57,3a,42,6b,32,1c,11,0b,02,c7,70,5d,eb,1a,5c,fb,6f,ac,5d,84,23,33,\
72,53,38,17,f5,ae,de,00,66,17,a4,0d,dd,c6,b2,ab,79,18,bc,3f,62,69,5a,17,68,\
5c,40,e1,f8,8e,16,66,e8,71,d4,87,18,cb,61,a0,a2,d7,ba,67,43,75,88,36,2a,91,\
c8,70,af,3f,85,ef,a8,c1,fb,48,ea,a8,59,f3,f6,51,04,fc,21,85,85,c2,e6,98,7f,\
36,31,fb,7a,9d,0b,01,a6,b5,82,2b,29,b3,9d,be,75,47,ab,01,9f,32,c6,ae,fa,26,\
12,f3,48,65,0f,df,e3,0f,07,a8,98,a6,47,f5,08,7c,71,24,bd,3c,6c,24,f4,24,e9,\
5c,8c,21,e9,f6,a0,a6,80,9a,5c,05,2e,5e,7d,40,da,49,55,6b,40,6a,8e,5f,73,1d,\
5c,6a,9b,1a,93,5a,ef,83,12,ba,05,b2,44,04,81,21,57,8b,3c,33,17,90,98,db,49,\
14,74,89,71,dc,d0,1b,ea,a9,eb,c0,6a,d8,05,48,cd,72,a0,37,9f,3e,e6,76,e3,8e,\
61,e1,41,2b,37,fc,00,24,1e,1a,44,ba,a8,57,b2,91,54,00,f9,69,f1,48,f7,97,46,\
4c,ba,5b,c5,20,2f,77,a4,d7,15,c1,ac,95,49,53,78,9b,b1,a3,b5,a3,48,2a,4a,9f,\
d2,ce,49,ae,ad,12,1f,5c,27,dc,47,20,7d,18,ae,a3,df,ac,fe,8f,ab,31,f7,1d,c2,\
d2,c9,16,c6,eb,6c,9e,2a,43,a3,63,a4,27,6d,fb,1f,eb,57,31,7c,93,0b,4d,19,51,\
e6,4e,55,c0,7e,e3,90,7b,da,6b,d0,d5,6a,ad,98,ab,ef,12,4a,4a,f6,fd,0c,6c,14,\
0d,a6,6a,86,d6,07,cd,cb,99,75,93,4f,d1,41,f8,46,a3,4f,8f,82,1e,02,5b,3e,25,\
c9,d6,5a,95,c1,11,a7,88,2d,6b,4f,c1,eb,c3,77,af,35,e6,9b,f6,6f,d5,1f,62,4b,\
5c,38,20,1a,f3,b2,6d,b7,48,5e,00,ee,06,98,34,7d,af,a3,00,42,76,40,fa,61,2b,\
1c,08,e5,f2,bb,bb,b3,03,4a,83,23,34,b2,62,06,45,8e,33,a1,4b,d2,e4,b6,86,49,\
05,7f,30,a1,92,14,fe,4b,23,ed,95,7e,8e,f0,ef,0d,de,bd,26,bb,29,af,3e,93,86,\
b9,7b,39,5d,b6,99,e5,2c,6d,73,ec,27,c4,6b,42,09,b5,a9,f9,8b,90,7b,f8,b5,88,\
54,e7,b4,15,bf,76,ec,c7,89,89,cf,82,16,6d,96,b5,53,95,72,7b,6f,a4,33,cd,88,\
6f,b3,e9,ac,4d,fe,fe,1a,5f,cc,00,fd,2b,9f,64,fe,08,17,8f,fc,d8,32,5d,61,4e,\
72,23,d2,81,96,20,0c,66,ba,2e,8c,dc,13,64,23,5b,df,05,00,dc,41,9e,48,0f,9c,\
0b,1b,10,3e,c6,12,ae,a7,d6,51,4d,54,51,de,38,b6,ca,a1,0b,1f,b8,c3,99,11,b0,\
f2,4c,21,6e,81,1b,10,15,49,33,51,5f,91,d5,27,92,9a,f7,89,e8,43,56,96,71,96,\
51,f6,a1,87,70,75,01,12,58,2e,69,6b,99,37,83,8d,57,64,81,03,1f,78,f0,f6,a9,\
86,04,76,8e,36,cb,e4,4d,a2,b7,fe,3e,1a,e8,9f,fc,fe,23,46,21,cd,aa,92,d8,ae,\
31,b3,e8,42,04,a3,f3,80,80,cf,3e,d2,36,04,3b,c4,60,56,46,a1,03,4e,6d,86,d1,\
b6,64,f9,74,59,8e,f2,14,ff,a1,fe,6f,b7,33,11,7b,ea,b0,88,a5,c6,d8,b0,8f,71,\
71,82,97,c7,62,a6,f4,72,6a,d1,aa,97,45,76,68,bc,ab,c9,fc,de,b3,8f,65,d6,c0,\
bb,98,24,0e,17,d7,19,8a,27,27,a7,58,ef,38,c2,c1,25,71,cc,0e,7d,33,11,07,ed,\
f7,55,7a,ca,64,8b,e7,ee,35,14,4d,e5,25,04,db,69,54,84,d7,8a,45,f2,b0,80,91,\
a9,3f,77,91,64,f2,48,64,5b,16,79,78,bd,ae,5a,24,34,06,09,53,b1,f8,b0,e1,bc,\
1d,cf,4d,7d,48,3a,2e,d0,be,53,82,62,12,39,82,64,dd,91,2a,62,f7,45,c8,65,f0,\
e4,c3,17,12,7c,5c,df,4c,f2,3d,e7,f8,8f,7d,8e,0b,c3,c9,cf,de,75,78,1a,7a,e6,\
94,07,f5,75,70,95,8f,e4,8c,72,ff,c7,72,59,0f,7d,99,6b,69,5b,a8,13,15,57,44,\
74,ce,ef,a0,43,87,0c,11,18,8e,f4,06,8a,08,19,00,79,50,bf,7a,e7,f5,c9,e4,16,\
ed,80,aa,c3,87,91,3e,0f,4d,9a,97,d3,7c,44,60,52,84,0d,45,63,b3,b7,8e,df,cc,\
e9,55,ee,32,e6,a7,f7,f5,7d,c8,16,bb,20,b0,98,0c,8a,2d,90,61,e0,bf,32,db,06,\
cb,19,b9,54,7b,ab,7c,5c,04,db,bb,9e,b5,53,f6,bc,71,3c,d3,05,d4,46,31,09,2b,\
cd,5d,29,6b,af,80,a6,ca,3a,8e,c1,de,12,91,a9,7e,5f,f4,4e,59,4e,cb,e6,ff,0f,\
eb,c8,7e,c4,7a,c6,42,d8,53,97,0c,1e,ab,67

Kashtan007
22-09-2014, 23:03
El Sanchez, спасибо огромное все работает просто отлично)
Возможно ли переместить чекбоксы на страницу каталога? Так как на странице Tasks у меня другие компоненты и не хотелось бы их совмещать.

Единственная проблема, что после удаление файл paths из папки OriginalFiles не возвращается на свое место. И в итоге получается, что файла нету вообще.

Заранее спасибо за ответ!

El Sanchez
23-09-2014, 14:01
Возможно ли переместить чекбоксы на страницу каталога? »
Kashtan007, можно. Только каким макаром данные чекбоксы относятся по смыслу к странице выбора директории? Им самое место в задачах.
Единственная проблема, что после удаление файл paths из папки OriginalFiles не возвращается на свое место. »
У меня возвращался. Что в Debug Output при копировании файла из OriginalFiles?

Kashtan007
23-09-2014, 16:06
Только каким макаром данные чекбоксы относятся по смыслу к странице выбора директории? Им самое место в задачах. »
El Sanchez, на странице Components у меня модификации, на странице Tasks у меня модификации понижающие пинг. Компонентов больше 50 на каждой из страниц, и если там будет удаление и бекап, то пользователи просто не заметят их среди такого большого количества компонентов. Поэтому самый лучший вариант перенести чекбоксы на страницу каталога.

У меня возвращался. Что в Debug Output при копировании файла из OriginalFiles? »
Немного не понял вопроса.

El Sanchez
23-09-2014, 20:25
Поэтому самый лучший вариант перенести чекбоксы на страницу каталога. »
Kashtan007, хозяин - барин.

[Setup]
AppName=test2
AppVerName=test2
DefaultDirName=D:\test

[Languages]
Name: ru; MessagesFile: compiler:Languages\russian.isl

[CustomMessages]
ru.DeleteOldMods=Удалить все старые моды
ru.CreateBackupOldMods=Сохранить бекап старых модов
ru.DeletingOldMods=Удаление старых модов...
ru.RestoringOldMods=Восстановление старых модов...

[Files]
Source: {app}\res_mods\*; DestDir: {app}\ModPack\BackUp\res_mods; Flags: external createallsubdirs recursesubdirs skipifsourcedoesntexist; Check: IsOldMods('CreateBackupOldMods')
Source: {app}\path.file; DestDir: {app}\ModPack\OriginalFiles; Flags: external skipifsourcedoesntexist

[Run]
Filename: {cmd}; Parameters: "/c rd /s /q ""{app}\res_mods\0.9.2"" & md ""{app}\res_mods\0.9.2"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Check: IsOldMods('DeleteOldMods')
Filename: {cmd}; Parameters: "/c rd /s /q ""{app}\res_mods\xvm"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Check: IsOldMods('DeleteOldMods')

[UninstallRun]
Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\BackUp\res_mods"" ""{app}\res_mods\"""; StatusMsg: {cm:DeletingOldMods}; Flags: runhidden; Check: IsOldMods('CreateBackupOldMods')
Filename: {cmd}; Parameters: "/c xcopy /ecihry ""{app}\ModPack\OriginalFiles\path.file"" ""{app}\"""; Flags: runhidden

[Code]
var
OldModsListBox: TNewCheckListBox;

///////////////////////////////////////////////
function IsOldMods(const Msg: String): Boolean;
begin
with OldModsListBox do
Result := Checked[Items.IndexOf(CustomMessage(Msg))]
end;

//////////////////////////////
procedure CreateSelectDirPage;
var
rt: TRect;
begin
OldModsListBox := TNewCheckListBox.Create(WizardForm);
with OldModsListBox do
begin
Parent := WizardForm.SelectDirPage;
Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(10);
Width := Parent.ClientWidth;
BorderStyle := bsNone;
ParentColor := True;
ShowLines := False;
WantTabs := True;
AddCheckBox(CustomMessage('DeleteOldMods'), '', 0, True, True, True, False, nil);
AddCheckBox(CustomMessage('CreateBackupOldMods'), '', 1, True, True, False, True, nil);
rt := ItemRect(ItemCount-1);
Height := rt.Bottom;
end;
end;

/////////////////////////////
procedure InitializeWizard();
begin
CreateSelectDirPage;
end;

AlekseyPopovv
23-09-2014, 20:55
Dodakaedr
Так и записать.

AlekseyPopovv
23-09-2014, 20:59
Dodakaedr
Да, все строки при удалении удаляются!

Kashtan007
23-09-2014, 22:00
El Sanchez, спасибо огромное за помощь)
Но файл paths.xml не возвращается после удаление сборки.
Когда сборку устанавливаешь, то он перемещается в папку OriginalFiles, но после удаления восстанавливается только бекап, а файл paths.xml нет.

P.S. Перенес все в свой скрипт... и возникла проблема под чекбоксами серый фон. Возможно это из-за того, что у меня весь дизайн установщика состоит из BitMapImage?
http://s017.radikal.ru/i418/1409/b7/33c2d03bb733.png
Текст я убрал, так как он написан на картинке, но фон под чекбоксами не пропал.
Как убрать фон из под чекбоксов?
Заранее спасибо за ответ!

Nordek
24-09-2014, 01:26
Подскажите как записать такие данные в секции [Registry]? »
Dodakaedr, 1. Показать/скрыть: Дополнительные программы для Inno Setup: »
Converter (http://forum.oszone.net/post-1216149-86.html) - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
Последняя версия: 0.1.4 [13.03.2010] - Скачать (http://forum.oszone.net/attachment.php?attachmentid=41380&d=1268419710); »

2. "Inno Script Studio (https://www.kymoto.org/products/inno-script-studio/downloads) » Проект » Импорт из файла » Импорт файла реестра"


AlekseyPopovv, 1. И надо начать паковать в ZIP (http://www.outsidethebox.ms/12663/#_Toc305928290). »
2. Пусть сам пробует разобраться (см. выше).

vint56
24-09-2014, 02:58
Kashtan007, пример http://rghost.ru/58173793

Kashtan007
24-09-2014, 13:57
vint56, спасибо больше работает!

P.S.
У меня есть код, который проверяет папку на файл WorldOfTanks.exe, и файл на версию.
Дело в том, что если выбираешь папку без файла WorldOfTanks.exe, то ошибку дает, что установка не возможна в другой путь.
А вот если взять файл с версией отличающейся с той, которая в установщике, то ошибки не будет.
Взгляните пожалуйста, если ли ошибка в коде? Заранее спасибо за ответ!
function FileVersion(const FilePath: String): String;
var
oFS: Variant;
begin
oFS:= CreateOleObject('Scripting.FileSystemObject');
try
Result:= oFS.GetFileVersion(FilePath);
except
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageID of
wpSelectDir:
begin
if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
MsgBox('Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!', mbError, MB_OK);
Result := False;
end;
if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '0.9.3' then begin
MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.2. Обновите клиент игры! ', 'Моды не подходят к данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
Result:= false;
end;end;
end;
end;
end;

saurn
24-09-2014, 16:21
Дело в том, что если выбираешь папку без файла WorldOfTanks.exe, то ошибку дает, что установка не возможна в другой путь.
А вот если взять файл с версией отличающейся с той, которая в установщике, то ошибки не будет. »
function NextButtonClick(CurPageID: Integer): Boolean;
var
msg, ver: string;
begin
Result := True;

case CurPageID of
wpSelectDir:
begin
msg = '';

if not FileExists( ExpandConstant( '{app}\WorldOfTanks.exe' ) ) then
msg := 'Установка модов невозможна, так как по выбранному пути отсутствует клиент игры World of Tanks. Выберите правильный путь и продолжайте установку!'
else if GetVersionNumbersString( ExpandConstant( '{app}\WorldOfTanks.exe' ), ver) then
if ( ver <> '0.9.2' ) then
msg := 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.2. Обновите клиент игры! ';

Result := msg = '';

if not Result then
MsgBox( msg, mbError, MB_OK );
end;
end;
end;

Kashtan007
24-09-2014, 16:46
saurn, выдало ошибку на этой строке

msg = '';
Я ее убрал и заработало. Эта строка вообще нужна?
Или заменить на это?

Result := msg = '';

saurn
24-09-2014, 16:57
Эта строка вообще нужна? »
Она задает начальное состояние переменной msg. Можно и без нее. msg и так будет пустой, если выполнены условия.
выдало ошибку на этой строке »
Я пропустил двоеточие
msg := '';

Kashtan007
24-09-2014, 22:30
vint56, как увеличить размер чекбоксов, если увеличиваешь картинку (на который чекбоксы нарисованы) то все становиться криво, а в коде я не нашел где можно изменить размер исходной картинки.

И как по-вашему примеру можно убрать фон из под StatusLabel и FilenameLabel?

Заранее спасибо за ответ!

roman_kudin@vk
24-09-2014, 23:17
Добрый вечер. Подскажите как сделать, что бы при наведении на компонент, появлялось описание?
Брал код из справки, пишет ошибку: "descctrl.dll не найден". Можно как то реализовать без этой библиотеки?

saurn
24-09-2014, 23:41
Добрый вечер. Подскажите как сделать, что бы при наведении на компонент, появлялось описание? »
#1308 (http://forum.oszone.net/post-2030282-1308.html)
Если поискать, еще с десяток постов с примерами найдется.




© OSzone.net 2001-2012