Как я могу показать окно «пожалуйста, подождите» при проверке наличия необходимых компонентов в моем установщике?

#inno-setup

#inno-setup

Вопрос:

Я выполняю ряд проверок в InitializeSetup функции в моем скрипте. Для завершения этого требуется около 10 секунд, в течение которых ничего не отображается, за исключением кнопки окна на панели задач (нажатие на нее ничего не дает). Вместо этого я хотел бы показать простое окно «Пожалуйста, подождите». Как я могу это сделать?

Ответ №1:

Вот пример сценария, который показывает, как вы можете создать пользовательский диалог.

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

 [Setup]
AppName='Test Date Script'
AppVerName='Test Date Script'
DefaultDirName={pf}test

[Code]

function InitializeSetup() : boolean;
var
  DlgWait : TSetupForm;
  lblWait : TLabel;
  I : Integer;
begin
  dlgWait :=  CreateCustomForm;
  dlgWait.FormStyle := bsDialog;
  dlgWait.Position := poMainFormCenter;
  lblWait := TLabel.Create(dlgWait);
  lblWait.Parent := dlgWait;
  lblWait.Caption := 'Please Wait';
  lblWait.Visible := True;
  dlgWait.Show;
  dlgWait.Refresh; // Process the paint message

  for I := 0 to 10 do
  begin
     Sleep(1000); // Simulate Functions taking 10 sec
     dlgWait.Refresh;
  end;

  DlgWait.Free;
end;
  

Комментарии:

1. Возможно ли отобразить окно в отдельном потоке? Это не сильно поможет, если вы будете обновлять после каждой итерации, поскольку большую часть времени оно будет заморожено.