如何让Inno设置只显示取消按钮显示消息,以便安装停止

时间:2012-08-23 19:09:18

标签: inno-setup

我正在使用Inno设置来提供软件包。它会检测Access的版本并弹出消息。我想让消息告诉用户他们已经下载了错误的版本并停止安装。目前Inno脚本使用

itd_downloadafter(NoRuntimePage.ID);

显示一条消息,告诉用户他们需要安装AccessRuntime。当用户按下它时,它会下载AccessRuntime并继续。我想为我的新脚本更改此信息,告诉用户他们有错误的版本,然后在他们按下一个或只是取消时结束安装脚本。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

为什么要使用InitializeSetup?

如果要在向导启动之前有条件地退出设置,请不要使用InitializeWizard事件函数并引发Abort异常。你会浪费你的时间,需要创建整个向导表单。请改用InitializeSetup事件功能。在那里你可以提高Abort异常或者更好地将False返回到它的布尔结果,并按原样退出函数 - 最终效果肯定是一样的。

在内部,当您从脚本返回False时,InitializeSetup函数会引发此Abort异常。与InitializeWizard事件相反,当InitializeSetup事件被触发时,尚未创建向导表单,因此您不会浪费时间从不使用系统资源。

代码示例:

在下面的伪代码中你需要有一个像UserDownloadedWrongVersion这样的函数,如果你返回True,设置将被终止,没有任何反应。

[Code]
function UserDownloadedWrongVersion: Boolean;
begin
  // make your check here and return True when you detect a wrong 
  // version, what causes the setup to terminate; False otherwise
end;

function InitializeSetup: Boolean;
begin
  Result := not UserDownloadedWrongVersion;
  if not Result then
  begin
    MsgBox('You''ve downloaded the wrong version. Setup will now exit!', 
      mbError, MB_OK);
    Exit;   // <-- or use Abort; instead, but there's no need for panic
  end;
end;

答案 1 :(得分:1)

** TLama的答案更准确。 **

您可以使用InitializeWizard过程在开始时运行访问检查...如果失败,您应该能够显示您的消息框,然后调用Abort()。

[code]
var CustomPage: TInputQueryWizardPage;

procedure InitializeWizard;
begin;
  {your checking Access version and message box}
  Abort();
end;