跳过 Inno Setup 中准备安装向导页面

Skip Preparing to Install Wizard page in Inno Setup

关于问题,我现在需要跳过准备安装向导页面。

在我的例子中,显示此页面是因为一个或多个程序正在使用需要由安装程序替换的文件;因此安装程序会询问用户是否希望安装程序自动关闭应用程序并在安装结束时重新启动。

我需要在 基本 模式下从安装过程中隐藏此页面,并且如果使用了某些文件,安装程序会自动关闭使用它们的应用程序而不询问任何内容用户。

我试过将 ShouldSkipPage 编辑为:

function ShouldSkipPage(PageID: Integer): Boolean; 
begin 
  { If "Basic" mode is selected, skip Directory and Components pages }
  Result := 
    ModePage.Values[0] and
    ((PageID = wpSelectDir) or (PageID = wpSelectComponents) or (PageID = wpReady) or (PageID = wpPreparing));
end;

正在添加 (PageID = wpPreparing) 但页面仍显示为基本模式。

有没有办法使用 Inno Setup 来实现这个?

ShouldSkipPage event 甚至没有为 wpPreparing 调用。不能跳过该页。

如果您仍然想跳过它,则必须使用如下技巧:

  • How to skip all the wizard pages and go directly to the installation process?

使用第一种方法,您的代码将如下所示:

[Code]
const
  BN_CLICKED = 0;
  WM_COMMAND = 11;
  CN_BASE = $BC00;
  CN_COMMAND = CN_BASE + WM_COMMAND;

procedure CurPageChanged(CurPageID: Integer);
var
  Param: Longint;
begin
  { If Basic mode is selected, skip Preparing page }
  if (CurPageID = wpPreparing) and ModePage.Values[0] then
  begin
    Param := 0 or BN_CLICKED shl 16;
    PostMessage(WizardForm.NextButton.Handle, CN_COMMAND, Param, 0);
  end;
end;

只是不要那样做。曾经。 绝对 不提示用户就关闭任意应用程序列表是不可接受的。向前推进然后在安装结束时要求重新启动同样是不礼貌的。 (不可原谅,然后不问就触发重启。)

可以做的是在PrepareToInstall[Code]函数中添加一些代码,它会自动关闭你的[=20] =] 申请。这在提示用户关闭应用程序之前执行,因此如果只涉及您的应用程序,则不会提示它们。