Пропустить раздел «Подготовка к установке» в Inno Setup - PullRequest
1 голос
/ 06 ноября 2019

Обращаясь к вопросу Выбор основного или расширенного режима установки для пропуска или использования страниц расширенных параметров , мне нужно пропустить страницу мастера Подготовка к установке .

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

Мне нужно, чтобы эта страница была скрыта от процесса установки в Basic режим и, если используются некоторые файлы, программа установки автоматически закрывает приложения, использующие их, ничего не спрашивая пользователя.

Я пытался редактировать ShouldSkipPage как:

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
  { If "Basic" mode is selected, skip Directory and Components pages }
  Result := 
    ModePage.Values[0] and
    ((PageID = wpSelectDir) or (PageID = wpSelectComponents) or (PageID = wpReady) or (PageID = wpPreparing));
end;

добавление (PageID = wpPreparing) но страница все еще отображается в основном режиме.

Есть ли способ реализовать это с помощью Inno Setup?

1 Ответ

1 голос
/ 06 ноября 2019

ShouldSkipPage событие даже не вызывается для wpPreparing. Эта страница не должна быть пропущена.

Если вы все еще хотите пропустить ее, вы должны использовать такие хаки:

При первом подходе вашкод будет выглядеть так:

[Code]
const
  BN_CLICKED = 0;
  WM_COMMAND = $0111;
  CN_BASE = $BC00;
  CN_COMMAND = CN_BASE + WM_COMMAND;

procedure CurPageChanged(CurPageID: Integer);
var
  Param: Longint;
begin
  { If Basic mode is selected, skip Preparing page }
  if (CurPageID = wpPreparing) and ModePage.Values[0] then
  begin
    Param := 0 or BN_CLICKED shl 16;
    PostMessage(WizardForm.NextButton.Handle, CN_COMMAND, Param, 0);
  end;
end;
...