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

时间:2019-11-06 15:03:04

标签: installer inno-setup pascalscript

关于问题Basic or Advanced installation mode choice to skip or use advanced options pages,我需要立即跳过准备安装向导页面。

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

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

我尝试将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来实现?

2 个答案:

答案 0 :(得分:1)

甚至没有为wpPreparing调用

ShouldSkipPage event。该页面不会被跳过。

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

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

[Code]
const
  BN_CLICKED = 0;
  WM_COMMAND = $0111;
  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;

答案 1 :(得分:-1)

别那样做。曾经在没有提示用户的情况下关闭任意应用程序列表,这是绝对。同样很不礼貌,先安装然后在安装结束时要求重新启动。 (这是不可原谅的,然后不询问就触发重启。)

您可以 做的是在users PrepareToInstall函数中放入一些代码,该代码将自动关闭您的应用程序。这是在提示用户关闭应用程序之前执行的,因此,如果仅涉及您的应用程序,则不会提示它们。