Отменить или откатить установку - PullRequest
1 голос
/ 08 июня 2011

Я хочу выполнить откат в IS, когда моя функция AfterInstall не работает.Вот пример моего кода.

[Files]
   Source: "MyWinService.exe"; DestDir: "{app}"; Flags: ignoreversion; AfterInstall:     MyAfterInstall
   Source: "MyApp.exe"; DestDir: "{app}"; Flags: ignoreversion
[Code]
   const
    WM_CLOSE = $0010;
   procedure MyAfterInstall();
   var
     exitCode: Integer;
   begin
      MsgBox (ExpandConstant('{cm:ErrServiceInstall}'), mbError, MB_OK);
      SendMessage(WizardForm.Handle, WM_CLOSE, 0, 0);
   end;

В этом примере я просто хочу отменить установку, чтобы проверить откат установки.Здесь происходит то, что после отображения MsgBox, ExitSetupMsgBox отображается из-за SendMessage.Когда я нажимаю Да в ExitSetupMsgBox, выполняется откат.Я хочу, чтобы ExitSetupMsgBox не отображался, так как у меня уже отображается MsgBox.Поэтому, когда я нажму OK в MsgBox, будет выполнен откат.

Можно ли это сделать?

1 Ответ

1 голос
/ 08 июня 2011

Вы можете использовать Событие CancelButtonClick, где вы можете выключить диалоговое окно подтверждения.

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Cancel := True;
  Confirm := False;
end;

Вы можете вызвать метод отмены, просто закрыв WizardForm, не нужно отправлять специальное сообщение, просто позвоните. WizardForm.Close Это единственный известный мне способ отменить установку во время AfterInstall события.

Примечание: это не будет работать, если у вас есть

[setup]
AllowCancelDuringInstall=no

или запустите настройку с параметром командной строки / NOCANCEL.

...