Скрипты Inno Setup. Помощь и советы [часть 4]

Ответить
 • Просмотры: 20
Аватара пользователя
EvilAlex

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение EvilAlex »

Цитата El Sanchez:



ну и правильно, родителем эдита ведь страница SelectTasksPage назначена, без секции [Tasks] ее не будет, значит не будет и контролов, ей принадлежащих.
Скрипты Inno Setup. Помощь и советы [часть 4]




Ну а как это добро типа IPAddressEdit1: TIPAddressEdit; теперь впихивать, и чтоб без всяких Тасков?

А то хорошо говорить
Цитата Serega:



В расширенной версии есть редактор форм "WizardForm Designer", добавляете свои страницы и кидаете на форму нужные контролы.
Скрипты Inno Setup. Помощь и советы [часть 4]




, звучит так просто, а на деле!

Тогда я вообще ни болта не рублю, что там вообще нужно.
Аватара пользователя
valyok666

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение valyok666 »

Цитата Devils Night:



звучит так просто, а на деле!
Скрипты Inno Setup. Помощь и советы [часть 4]




На деле, ещё проще... Нажимаете вкладку WizardForm Designer, затем в меню Designer выбираете пункт Import a WizardPage, появляется новая страница. Затем нажимаете мышкой в панели компонент на IPAddressEdit и нажимаете мышкой на любое место новой страницы... ну и т.д. и т.п.
Аватара пользователя
EvilAlex

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение EvilAlex »

Цитата Serega:



На деле, ещё проще...
Скрипты Inno Setup. Помощь и советы [часть 4]




Круто. Вот долго бы я гадал. Спасибо большое!



Ребят, а как вы привязываете кнопку к чему либо?

Ну вот скажем на примере этого:


читать дальше »




Код:

Код: Выделить всё

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D0030108602000054504630F10B5457697A617264466F726D0A57697A617264466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C65667402000B4578706C69636974546F7002000D4578706C69636974576964746803F9010E4578706C696369744865696768740383010D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B4C6963656E7365506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650F53656C6563745461736B73506167650D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED00000E54495041646472657373456469740E4950416464726573734564697431044C656674020803546F7003D000055769647468039600064865696768740215085461624F72646572020200000A544E6577427574746F6E0A4E6577427574746F6E31044C65667403B00003546F7003CC00055769647468024B0648656967687402190743617074696F6E060A4E6577427574746F6E31085461624F72646572020300000000000000
[ Code]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
var
  IPAddressEdit1: TIPAddressEdit;
  NewButton1: TNewButton;
procedure RedesignWizardForm;
begin
  { IPAddressEdit1 }
  IPAddressEdit1 := TIPAddressEdit.Create(WizardForm);
  with IPAddressEdit1 do
  begin
    Name := 'IPAddressEdit1';
    Parent := WizardForm.SelectTasksPage;
    Left := ScaleX(8);
    Top := ScaleY(208);
    Width := ScaleX(150);
    Height := ScaleY(21);
  end;
  { NewButton1 }
  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do
  begin
    Name := 'NewButton1';
    Parent := WizardForm.SelectTasksPage;
    Left := ScaleX(176);
    Top := ScaleY(204);
    Width := ScaleX(75);
    Height := ScaleY(25);
  end;
  IPAddressEdit1.TabOrder := 2;
  NewButton1.TabOrder := 3;
{ ReservationBegin }
  // Вы можете добавить ваш код здесь.
{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!
procedure InitializeWizard();
begin
  RedesignWizardForm;
end;
Аватара пользователя
EvilAlex

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение EvilAlex »

Цитата Devils Night:



Ребят, а как вы привязываете кнопку к чему либо?
Скрипты Inno Setup. Помощь и советы [часть 4]




Тоже всё просто, т.е. после того как вы установили кнопку на новой странице, достаточно нажать на новой кнопке два раза, либо выбрать в инспекторе объектов (с правой стороны) вкладку Events, там будут все поддерживаемые процедуры для этой кнопки. Выбираете нужную и также нажимаете мышкой два раза на комбобоксе справа от названия необходимой процедуры. В результате в вашем скрипте появится нужная процедура, в которой вы будете обрабатывать выбранное действие.

В вкладке Properties, вы можете настроить свойства вашей кнопки.
Аватара пользователя
El Sanchez

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение El Sanchez »

Помогите с кодом, пожалуйста.

При установке проги в папке назначения нужно удалить все кроме двух папок и трех файлов.

Как получить список папок и файлов? рекурсия во вложенные папки не нужна.



Заранее спасибо!
Аватара пользователя
Akella2007

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение Akella2007 »

Цитата R.i.m.s.k.y.:



Gugle, думаю да, алгоритмически глобальной переменной присваиваем TRUE и через CurPageChanged отслеживаем примерно так, но могут быть подводные камни:
Скрипты Inno Setup. Помощь и советы [часть 4]




Не прокатило. У меня есть несколько страниц, на которых надо обязательно сделать выбор, для того что бы перейти к следующей странице, но даже если их убрать (или сделать там выбор поумолчанию), то установка все равно происходит. А установки хотелось бы избежать.



Возможно лучше использовать не переход на страницу финиш (ну т.к. это геморно Изображение ), по выполнению условия, а "искусственно" нажать на кнопку "Отмена"?

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



Откуда числа 513 и 514?


Цитата R.i.m.s.k.y.:



SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)

SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
Скрипты Inno Setup. Помощь и советы [часть 4]
Аватара пользователя
LinkOFF

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение LinkOFF »

Цитата Gugle:



Возможно лучше использовать не переход на страницу финиш (ну т.к. это геморно ), по выполнению условия, а "искусственно" нажать на кнопку "Отмена"?
Скрипты Inno Setup. Помощь и советы [часть 4]




помоему код Serega это и делает



числа 513 и 514 из шапочного примера "Нажать кнопку Далее"
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение R.i.m.s.k.y. »

Цитата R.i.m.s.k.y.:



помоему код Serega это и делает
Скрипты Inno Setup. Помощь и советы [часть 4]




Прошу прощения, а ссылку на код можно?
Аватара пользователя
VASYAKRN

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение VASYAKRN »

Цитата Gugle:



Прошу прощения, а ссылку на код можно?
Скрипты Inno Setup. Помощь и советы [часть 4]




Скрипты Inno Setup. Помощь и советы [часть 4]





Цитата R.i.m.s.k.y.:



Помогите с кодом, пожалуйста.

При установке проги в папке назначения нужно удалить все кроме двух папок и трех файлов.

Как получить список папок и файлов? рекурсия во вложенные папки не нужна.
Скрипты Inno Setup. Помощь и советы [часть 4]




спасибо всем прочитавшим, вопрос снят
Аватара пользователя
valyok666

Re: Скрипты Inno Setup. Помощь и советы [часть 4]

Сообщение valyok666 »

Цитата R.i.m.s.k.y.:



Как получить список папок и файлов?
Скрипты Inno Setup. Помощь и советы [часть 4]





Цитата R.i.m.s.k.y.:



спасибо всем прочитавшим, вопрос снят
Скрипты Inno Setup. Помощь и советы [часть 4]




Для личных целей сделал, но думаю, что будет многим интересно :

получение всех файлов в папке, с полными путями:




читать дальше »




Код:

Код: Выделить всё

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[*code]
var
  fIleCount: TLabel;
  ISCustomPage1: TWizardPage;
  FileList: TNewListBox;
procedure GetAllFiles( Path: string; Lb: TNewListBox );
var
sRec: TFindRec;
isFound: boolean;
begin
  isFound := FindFirst(Path +'\*.*',sRec);
  while isFound do
  begin
    if (sRec.Name  '.') and (sRec.Name  '..') then
    begin
      if (sRec.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY then
      GetAllFiles(Path + '\' + sRec.Name, Lb);
      Lb.Items.Add(Path + '\' + sRec.Name);
      fIleCount.Caption:= 'Количество файлов:'+ IntToStr(FileList.Items.Count);
    end;
    Application.ProcessMessages;
    isFound := FindNext(sRec);
  end;
  FindClose(sRec);
end;
procedure FlistClick(Sender: TObject);
begin
  GetAllFiles(ExpandConstant('{pf}\Inno Setup 5'), FileList );
end;
procedure InitializeWizard();
begin
  { Creates custom wizard page }
  ISCustomPage1 := CreateCustomPage(wpWelcome, 'Список Файлов', 'Нажмите конпку Ок, чтобы получить список файлов');
  { FileList }
  FileList := TNewListBox.Create(WizardForm);
  with FileList do
  begin
    Parent := ISCustomPage1.Surface;
    SetBounds(ScaleX(0),ScaleY(0),ISCustomPage1.SurfaceWidth,ISCustomPage1.SurfaceHeight - ScaleY(30));
    ItemHeight := 13;
    ItemIndex := -1;
  end;
  with TNewButton.Create(WizardForm) do
  begin
    Caption := 'Ок';
    Parent := ISCustomPage1.Surface;
    SetBounds(ScaleX(0),ISCustomPage1.SurfaceHeight - ScaleY(28),ScaleX(75),ScaleY(25));
    OnClick:=@FlistClick;
  end;
  { fIleCount }
  fIleCount := TLabel.Create(WizardForm);
  with fIleCount do
  begin
    Parent := ISCustomPage1.Surface;
    Caption := 'Количество файлов:';
    SetBounds(ScaleX(80),ISCustomPage1.SurfaceHeight - ScaleY(25),ScaleX(300),ScaleY(25));
  end;
end;
Ответить

Вернуться в «Автоматическая установка приложений»