1
我想在我的AfterInstall函数失败时在IS中执行回滚。这是我的代码示例。撤销或回滚安装
[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显示后,由于SendMessage的缘故,显示ExitSetupMsgBox。当我在ExitSetupMsgBox中单击是时,将执行回滚。我想要的是ExitSetupMsgBox不显示,因为我已经显示了MsgBox。所以当我单击确定MsgBox回滚将被执行。
可以这样做吗?
这很好..但我怎么能不通过点击取消按钮对话框来调用这个事件呢? – patlimosnero 2011-06-08 08:03:49
@patlimosnero - 更新答案,详细说明如何避免发送消息。 – 2011-06-08 09:44:48