#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. Возможно ли отобразить окно в отдельном потоке? Это не сильно поможет, если вы будете обновлять после каждой итерации, поскольку большую часть времени оно будет заморожено.