Inno setup Inno设置-查看选择了多少组件

Inno setup Inno设置-查看选择了多少组件,inno-setup,pascal,pascalscript,Inno Setup,Pascal,Pascalscript,实际上,我只需要看看它是1还是更多。以下是我计划如何使用它: if [Only one component is selected] then begin Result := CustomMessage('[Name of that component]'); if IsComponentSelected('[Specific Component]') then begin if IsTaskSelected('[Task]') then begin Re

实际上,我只需要看看它是
1
还是更多。以下是我计划如何使用它:

if [Only one component is selected] then
begin
  Result := CustomMessage('[Name of that component]');
  if IsComponentSelected('[Specific Component]') then
  begin
    if IsTaskSelected('[Task]') then
    begin
      Result := CustomMessage('[Name of that task]');
    end
  end
end
if [More than one component is selected] then
begin
  Result := 'Full Feature';// or '{#SetupSetting("AppName")}'
end;
我想我知道至少有一种“变通”方法可以做到这一点,但我想知道是否可以用更传统的Inno方法(和更干净的代码)来实现这一点

----编辑---

使用Martins答案的最终函数:

function UninstallName(Value: string): string;
begin
  if GetSelectedComponentsCount = 1 then
  begin
    Result := CustomMessage(WizardSelectedComponents(False));
    if IsComponentSelected('bc2') then
    begin      
      if IsTaskSelected('bc2tp2') then
      begin
        Result := CustomMessage('bc2tp2');
      end;
    end;
    if Pos(':',Result) > 1 then
    StringChangeEx(Result, ':', ' -', False)
  end;
  if GetSelectedComponentsCount > 1 then
  begin
    Result := '{#SetupSetting("AppName")}';
  end;
end;

检查
向导表单。组件列表

函数GetSelectedComponentCount:整数;
变量
I:整数;
开始
结果:=0;
对于I:=0到WizardForm.ComponentsList.Items.Count-1 do
开始
如果选中了WizardForm.ComponentsList
结果:=结果+1;
结束;
结束;

您还可以计算以下区域中的元素数:

函数GetSelectedComponentCount:整数;
变量
S:TStringList;
开始
S:=TStringList.Create();
S.CommaText:=向导选择的组件(False);
结果:=S.计数;
美国自由;
结束;

(计算逗号会更有效,代码也会稍微少一点,但理解起来有些晦涩。)

下次,请向我们展示您的解决方法。展示你已经尝试过的东西是你的责任
getselectedcomponentscont
对我来说非常有用。非常感谢。我的“变通方法”与您的第二个答案(使用WizardSelectedComponents)类似,但没有那么紧凑。