Inno Setup Compiler:根据选择添加页面选项

时间:2014-08-28 21:42:20

标签: inno-setup

我想仅在激活前一页面的选项时才显示自定义页面,例如,我有以下代码:

[Code]
var page_option : TInputOptionWizardPage;
    page_dir_se : TInputDirWizardPage;

procedure InitializeWizard();
begin
    page_option := CreateInputOptionPage(1,'Select','','',False,True);
    page_option.Add('Option 1');
    page_option.Add('Option 2');

    page_dir_se :=CreateInputDirPage(page_option.ID,'Select', '','',False, '');
    page_dir_se.Add('Select A');
    page_dir_se.Add('Select B');
    page_dir_se.Add('Select C');

end;

仅在示例中,如果page_option.Values [0]为TRUE,则page_dir_se应显示我,如果page_option.Values [1]为TRUE,则应显示另一页。

我使用Inno Setup Compiler

谢谢你的帮助。 关心xD

1 个答案:

答案 0 :(得分:2)

您可以跳过ShouldSkipPage事件中的任何页面:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
var
  DirPage: TInputDirWizardPage;
  OptionPage: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  OptionPage := CreateInputOptionPage(wpWelcome, 'Caption', 'Description',
    'SubCaption', False, True);
  OptionPage.Add('Option 1');
  OptionPage.Add('Option 2');

  DirPage := CreateInputDirPage(OptionPage.ID, 'Caption', 'Description',
    'SubCaption', False, '');
  DirPage.Add('Select A');
  DirPage.Add('Select B');
  DirPage.Add('Select C');
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  // skip the page if your custom dir page is about to show and
  // the option is not checked
  Result := (PageID = DirPage.ID) and not OptionPage.Values[0];
end;