Друзья, извините, что повторяю вопрос, но данная проблема, насколько мне известно, ещё не поднималась. Можно ли заставить Inno Setup копировать файлы с внешнего источника. Поясняю, перед страницей выбора директории установки выводилось бы окно, в котором предлагалось
откуда (папка и файлы на HDD или папка и файлы на гибком диске) инсталлятору копировать необходимые файлы. А ещё интереснее было бы совместить это окно со страницей выбора директории установки (2 кнопки "Обзор...", одна из которых открывает диалоговое окно выбора директории установки, а другая - диалоговое окно выбора источника с которого будет происходить копирование). При этом в случае отсутствия в конкретной папке необходимых для копирования файлов, выводилось бы соотвествующее сообщение. Надеюсь вопрос изложен понятно, он немного перекликается с моим предыдущим вопросом (см. стр. 40), если у кого есть опыт реализации подобных действий в скрипте, с радостью приму Вашу помощь!!!
Добавлено: Вот написал необходимую форму - [more=см. скрипт.]
[_Code]
var
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
NewStaticText1: TNewStaticText;
Panel2: TPanel;
Button2: TButton;
Edit2: TEdit;
NewStaticText3: TNewStaticText;
NewStaticText2: TNewStaticText;
NewStaticText4: TNewStaticText;
NewStaticText5: TNewStaticText;
NewStaticText6: TNewStaticText;
{ MyForm_Activate }
procedure MyForm_Activate(Page: TWizardPage);
begin
// enter code here...
end;
{ MyForm_ShouldSkipPage }
function MyForm_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
Result := False;
end;
{ MyForm_BackButtonClick }
function MyForm_BackButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;
{ MyForm_NextkButtonClick }
function MyForm_NextButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;
{ MyForm_CancelButtonClick }
procedure MyForm_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
begin
// enter code here...
end;
{ MyForm_CreatePage }
function MyForm_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:MyForm_Caption}'),
ExpandConstant('{cm:MyForm_Description}')
);
{ Panel1 }
Panel1 := TPanel.Create(Page);
with Panel1 do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(160);
Width := ScaleX(393);
Height := ScaleY(49);
BevelInner := bvLowered;
TabOrder := 0;
end;
{ Button1 }
Button1 := TButton.Create(Page);
with Button1 do
begin
Parent := Panel1;
Caption := ExpandConstant('{cm:MyForm_Button1_Caption0}');
Left := ScaleX(304);
Top := ScaleY(17);
Width := ScaleX(77);
Height := ScaleY(23);
TabOrder := 0;
end;
{ Edit1 }
Edit1 := TEdit.Create(Page);
with Edit1 do
begin
Parent := Panel1;
Left := ScaleX(8);
Top := ScaleY(18);
Width := ScaleX(291);
Height := ScaleY(21);
TabOrder := 1;
Text := ExpandConstant('{cm:MyForm_Edit1_Text0}');
end;
{ NewStaticText1 }
NewStaticText1 := TNewStaticText.Create(Page);
with NewStaticText1 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText1_Caption0}');
Left := ScaleX(16);
Top := ScaleY(153);
Width := ScaleX(104);
Height := ScaleY(14);
Font.Color := 16711680;
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
ParentFont := False;
TabOrder := 1;
end;
{ Panel2 }
Panel2 := TPanel.Create(Page);
with Panel2 do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(56);
Width := ScaleX(393);
Height := ScaleY(49);
BevelInner := bvLowered;
TabOrder := 2;
end;
{ Button2 }
Button2 := TButton.Create(Page);
with Button2 do
begin
Parent := Panel2;
Caption := ExpandConstant('{cm:MyForm_Button2_Caption0}');
Left := ScaleX(304);
Top := ScaleY(17);
Width := ScaleX(77);
Height := ScaleY(23);
TabOrder := 0;
end;
{ Edit2 }
Edit2 := TEdit.Create(Page);
with Edit2 do
begin
Parent := Panel2;
Left := ScaleX(8);
Top := ScaleY(18);
Width := ScaleX(291);
Height := ScaleY(21);
TabOrder := 1;
Text := ExpandConstant('{cm:MyForm_Edit2_Text0}');
end;
{ NewStaticText3 }
NewStaticText3 := TNewStaticText.Create(Page);
with NewStaticText3 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText3_Caption0}');
Left := ScaleX(16);
Top := ScaleY(49);
Width := ScaleX(119);
Height := ScaleY(14);
Font.Color := 16711680;
Font.Height := ScaleY(-11);
Font.Name := 'Tahoma';
ParentFont := False;
TabOrder := 3;
end;
{ NewStaticText2 }
NewStaticText2 := TNewStaticText.Create(Page);
with NewStaticText2 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText2_Caption0}');
Left := ScaleX(16);
Top := ScaleY(128);
Width := ScaleX(311);
Height := ScaleY(17);
Font.Color := 32768;
Font.Height := ScaleY(-11);
Font.Name := 'Comic Sans MS';
Font.Style := [fsBold];
ParentFont := False;
TabOrder := 4;
end;
{ NewStaticText4 }
NewStaticText4 := TNewStaticText.Create(Page);
with NewStaticText4 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText4_Caption0}');
Left := ScaleX(16);
Top := ScaleY(24);
Width := ScaleX(295);
Height := ScaleY(17);
Font.Color := 32768;
Font.Height := ScaleY(-11);
Font.Name := 'Comic Sans MS';
Font.Style := [fsBold];
ParentFont := False;
TabOrder := 5;
end;
{ NewStaticText5 }
NewStaticText5 := TNewStaticText.Create(Page);
with NewStaticText5 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText5_Caption0}');
Left := ScaleX(8);
Top := ScaleY(216);
Width := ScaleX(365);
Height := ScaleY(14);
TabOrder := 6;
end;
{ NewStaticText6 }
NewStaticText6 := TNewStaticText.Create(Page);
with NewStaticText6 do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:MyForm_NewStaticText6_Caption0}');
Left := ScaleX(16);
Top := ScaleY(2);
Width := ScaleX(217);
Height := ScaleY(18);
Font.Color := 128;
Font.Height := ScaleY(-12);
Font.Name := 'Arial Black';
ParentFont := False;
TabOrder := 7;
end;
with Page do
begin
OnActivate := @MyForm_Activate;
OnShouldSkipPage := @MyForm_ShouldSkipPage;
OnBackButtonClick := @MyForm_BackButtonClick;
OnNextButtonClick := @MyForm_NextButtonClick;
OnCancelButtonClick := @MyForm_CancelButtonClick;
end;
Result := Page.ID;
end;
{ MyForm_InitializeWizard }
procedure InitializeWizard();
begin
MyForm_CreatePage(wpWelcome);
end;
[CustomMessages]
MyForm_Caption=Выбор папки установки
MyForm_Description=В какую папку Вы хотите установить [name]?
MyForm_Button1_Caption0=Обзор...
MyForm_Edit1_Text0=
MyForm_NewStaticText1_Caption0= Папка назначения:
MyForm_Button2_Caption0=Обзор...
MyForm_Edit2_Text0=
MyForm_NewStaticText3_Caption0= Папка с исходниками:
MyForm_NewStaticText2_Caption0=Программа скопирует исходники в следующую папку:
MyForm_NewStaticText4_Caption0=Произвести поиск исходников в следующем месте:
MyForm_NewStaticText5_Caption0=Требуется как минимум [mb] Мб свободного дискового пространства.
MyForm_NewStaticText6_Caption0=Восстановление полных путей
[/more]
Правда как заменить данной формой стандартное окно выбора каталога установки и реализовать все необходимые процедуры и функции я не знаю. Поэтому искренне надеюсь на Вашу помощь!
Добавлено: И ещё ребята, подскажите где можно найти
коды исходных (стандартных) страниц Inno Setup или м.б.
файлы форм этих страниц для ISFD. Просто гложит познавательный интерес!