You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup 自定义页面跳转:如何指定后续显示页面?

在Inno Setup中指定向导下一页的实现方法

可以通过拦截向导的NextButtonClick事件,结合自定义页面的用户选择,手动指定下一页的跳转目标,以下是具体实现步骤和代码示例:

核心思路

Inno Setup允许通过NextButtonClick事件拦截默认的下一页跳转逻辑,根据用户在自定义页面的选择,调用WizardForm.SelectNextPage方法直接跳转到目标页面(也可直接设置WizardForm.ActivePage)。

代码实现

1. 定义全局变量

先声明自定义页面和选项控件的全局变量,方便在事件中访问:

var
  CustomOptionPage: TWizardPage;
  RadioOption1, RadioOption2, RadioOption3, RadioOption4: TRadioButton;

2. 创建自定义页面及选项控件

在InitializeWizard过程中创建自定义页面和四个单选选项:

procedure InitializeWizard;
begin
  // 创建自定义选项页面,插入在欢迎页之后
  CustomOptionPage := CreateCustomPage(wpWelcome, '选择操作类型', '请选择您需要执行的操作');
  
  // 创建四个单选按钮
  RadioOption1 := TRadioButton.Create(WizardForm);
  RadioOption1.Parent := CustomOptionPage.Surface;
  RadioOption1.Top := 10;
  RadioOption1.Left := 10;
  RadioOption1.Caption := '选项1:跳转到安装目录页面';
  
  RadioOption2 := TRadioButton.Create(WizardForm);
  RadioOption2.Parent := CustomOptionPage.Surface;
  RadioOption2.Top := RadioOption1.Top + RadioOption1.Height + 8;
  RadioOption2.Left := 10;
  RadioOption2.Caption := '选项2:跳转到组件选择页面';
  
  RadioOption3 := TRadioButton.Create(WizardForm);
  RadioOption3.Parent := CustomOptionPage.Surface;
  RadioOption3.Top := RadioOption2.Top + RadioOption2.Height + 8;
  RadioOption3.Left := 10;
  RadioOption3.Caption := '选项3:跳转到任务选择页面';
  
  RadioOption4 := TRadioButton.Create(WizardForm);
  RadioOption4.Parent := CustomOptionPage.Surface;
  RadioOption4.Top := RadioOption3.Top + RadioOption3.Height + 8;
  RadioOption4.Left := 10;
  RadioOption4.Caption := '选项4:直接跳转到准备安装页面';
  
  // 默认选中第一个选项
  RadioOption1.Checked := True;
end;

3. 拦截Next按钮点击事件,实现条件跳转

在NextButtonClick事件中判断当前页面是否为自定义选项页,根据用户选择指定下一页:

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  // 仅处理自定义选项页的跳转
  if CurPageID = CustomOptionPage.ID then
  begin
    // 阻止默认跳转逻辑,手动控制跳转
    Result := False;
    
    if RadioOption1.Checked then
      // 跳转到安装目录页(对应内置页面ID:wpSelectDir)
      WizardForm.SelectNextPage(wpSelectDir)
    else if RadioOption2.Checked then
      // 跳转到组件选择页(对应内置页面ID:wpSelectComponents)
      WizardForm.SelectNextPage(wpSelectComponents)
    else if RadioOption3.Checked then
      // 跳转到任务选择页(对应内置页面ID:wpSelectTasks)
      WizardForm.SelectNextPage(wpSelectTasks)
    else if RadioOption4.Checked then
      // 跳转到准备安装页(对应内置页面ID:wpReady)
      WizardForm.SelectNextPage(wpReady);
  end;
end;

注意事项

  • 确保目标页面在你的安装脚本中是启用状态,比如如果设置了ComponentsPage=no,就无法跳转到wpSelectComponents页面
  • 若需要跳转到上一页,可使用WizardForm.SelectPrevPage方法
  • 也可通过CurPageChanged事件实现跳转逻辑,但NextButtonClick更贴合“点击下一页后跳转”的场景

内容的提问来源于stack exchange,提问作者sevi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:31:15