InnoSetup: Как начать установку без вывода сообщений после отображения моей собственной формы из DLL? - PullRequest
2 голосов
/ 06 января 2012

Мне нужно начать установку без вывода сообщений после отображения моей собственной формы на экране.

Как это сделать?

Вот мой код ISS, процедура 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 ]

6 голосов
/ 06 января 2012

Я создал для этого хак:

[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;
0 голосов
/ 06 января 2012

Невозможно отключить установку после ее запуска.Единственный способ - передать параметр /silent или /verysilent в командной строке.

...