можно ли отсрочить проверку fileexist при установке компонентов.

cspp

Новичок
Напротив компонента делаю check: Fileexist bla bla

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

То есть сам инсталлятор, находя созданный файл с кастомной страницы не отображает компоненты. Так как проверяет их раньше, при запуске установщика. Wizardform.update тут не катит, поэтому нужен совет как заставить инсталлер не делать чек файла автоматом при инициализации, а только на странице выбора компонентов.
 

sergey3695

Ветеран
Модератор
cspp, в InitializeWizard формируй лист тогда.
Пример куском, только у тебя componentlist и в секции [Components] не должно быть пусто, хоть что-то туда добавь.
Код:
  Components2 := TNewCheckListBox.Create(nil);
with Components2 do
begin
//  BorderStyle:= bsNone;
  SetBounds(ScaleX(295),ScaleY(127),ScaleX(221),ScaleY(121))
  Parent := Form;
  BorderWidth := (Width-ClientWidth) div 2;
  ShowLines := True;
  Flat := True;
  Font.Color := clWhite;
  ItemHeightFixed:= True;
// Чекбоксы
  AddCheckBoxEx('Таблетка от жадности:', '', 0, False, False, False, True, nil, True);
  AddRadioButtonEx('3DM', '', 1, True, True, nil, True);
  AddRadioButtonEx('ALI213', '', 1, False, True, nil, True);
  AddRadioButtonEx('SKIDROW', '', 1, False, True, nil, True);
//  AddRadioButtonEx('CODEX', '', 1, False, True, nil, True);
  ItemFontStyle[0] := [fsUnderline]; // Подчеркивание 1 строки
#ifdef BonusComponents
if FileExists(ExpandConstant('{src}\Bonus.bin')) then
begin
  AddCheckBoxEx('Bonus:', '', 0, False, False, False, True, nil, True);
  AddRadioButtonEx('Да', '', 1, True, True, nil, True);
  AddRadioButtonEx('Нет', '', 1, False, True, nil, True);
  ItemFontStyle[3] := [fsUnderline];
end;
#endif
 

cspp

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

Поищу, возможно есть функция которая делает автоматом ту проверку check и ее можно хукнуть тогда там прописать false и плясать оттуда.
 

Kotyarko_O

Новичок
cspp, а так не вариант?
Код:
Procedure CurPageChanged(CurPageID: Integer);
begin
 case CurPageID of
 wpSelectComponents:
  begin
   with WizardForm.ComponentList do
    Checked[IndexOf('мой компонент')] := FileExists('мой файл');
  end;
end;
end;
При этом, убрать у компонента параметр "Check".
 

cspp

Новичок
остановился на решении

Wizardform.ComponentsList.ItemEnabled[6] := FileExists('');
 
Сверху