检查Inno Setup中是否仅选择了一个特定组件

时间:2018-03-22 06:31:24

标签: inno-setup pascalscript

当在组件选择页面中仅选择特定组件时,我需要跳过页面。请看下面的图片

Component Selection Page

[Components]
Name: DBS\TRACE; Types: DBS TBLWOS; Description: DBS Tracing Bodylife Database;

当选择单独选择“DBS Tracing Bodylife Database”(在图像中突出显示)并单击Next按钮时,要求跳过页面。如果我只选择该选项,我可以使用以下代码成功跳过该页面。

if PageID = PageToBeSkipped.ID then begin
    Result := not (IsComponentSelected('not DBS\TRACE'));
end;

但是,如果我从此页面中选择任何其他附加组件以及“DBS Tracing Bodylife数据库”,该页面将近20,则不应跳过该页面。如果选择了任何其他组件,上面的代码会跳过页面。

我该如何处理?

提前致谢!

1 个答案:

答案 0 :(得分:2)

要测试是否选择了除一个特定组件之外的任何组件,您可以使用WizardSelectedComponents function(返回以逗号分隔的所选组件列表)。

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := False;

  if PageID = PageToBeSkipped.ID then
  begin
    Result := (CompareText(WizardSelectedComponents(False), 'DBS,DBS\TRACE') = 0);
  end;
end;

请注意,WizardSelectedComponents甚至会返回“部分”选定的组件组。