InnoSetup: Как начать установку без вывода сообщений после отображения моей собственной формы из DLL?
Мне нужно начать установку без вывода сообщений после отображения моей собственной формы на экране.
Как это сделать?
Вот мой код МКС, OpenWizardForm
процедура импортирована из моей собственной DLL. Он откроет модальную форму, примет данные пользователя, закроет модальную форму и затем продолжит выполнение.
[Setup]
DisableWelcomePage=yes
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableStartupPrompt=yes
DisableFinishedPage=yes
[Code]
procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsNone;
WizardForm.Width := 0;
WizardForm.Height := 0;
OpenWizardForm(WizardForm.Handle); // here is my own modal form will appear
// and now the silent installation must be started
end;
2 ответа
Решение
Я создал хак для этого:
[Setup]
DisableWelcomePage=yes
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyMemo=yes
DisableReadyPage=yes
DisableStartupPrompt=yes
DisableFinishedPage=yes
[Code]
const
WM_CLOSE = $0010;
WM_KEYDOWN = $0100;
WM_KEYUP = $0101;
VK_RETURN = 13;
procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsNone;
WizardForm.Width := 0;
WizardForm.Height := 0;
OpenWizardForm(WizardForm.Handle);
// Pressing the default "Install" button to continue the silent install
PostMessage(WizardForm.Handle, WM_KEYDOWN, VK_RETURN, 0);
PostMessage(WizardForm.Handle, WM_KEYUP, VK_RETURN, 0);
// Or can exit the wizard if the user has cancelled installation
// PostMessage(WizardForm.Handle, WM_CLOSE, 0, 0);
end;
Невозможно отключить настройку после запуска. Единственный способ - пройти /silent
или же /verysilent
параметр в командной строке.