How to detects that "Full" installation type was selected in Inno Setup

Viewed 67

I have a lot of components and want to create a few different extraction (installation) scenarios. All data is extracting from external archives with solid compression, so, when full install components is selected, it would be faster to decompress everything at once. But in custom installation just for a few components that way has no sense, setup (extraction tools: FreeArc+7z) will extract only selected directories. Unfortunately this process need to be repeated for each selected component (I do not know how to extract multiple directories at once, not sure that's possible). Is it possible to check the selected [Types] values in [Code] similarly to WizardIsComponentSelected function? Or maybe any other idea?

[Components]
Name: "Comp1";     Description: "Component 1";  Types: full custom
  Name: "Comp1\A"; Description: "TypeA";        Types: full typea custom
  Name: "Comp1\B"; Description: "TypeB";        Types: full typeb custom
Name: "Comp2";     Description: "Component 2";  Types: full custom
  Name: "Comp2\A"; Description: "TypeA";        Types: full typea custom
  Name: "Comp2\B"; Description: "TypeB";        Types: full typeb custom
;etc...

[Types]
Name: "full"; Description: "Full installation";
Name: "typea"; Description: "Full installation of TypeA";
Name: "typeb"; Description: "Full installation of TypeB";
Name: "custom"; Description: "Custom installation";
[Code]
//Release variation, types is not using
//....
begin
   if not WizardIsComponentSelected('Comp1'+'Comp2') then
   begin
   //extraction commands for each selected components
   end else
   begin
   //extraction commands for full installation
      if not WizardIsComponentSelected ('Comp1\A'+'Comp2\A') then
      //delete files and dirs included typea
      if not WizardIsComponentSelected ('Comp1\B'+'Comp2\B') then
      //delete files and dirs included typeb
   end;
end;             
1 Answers

You can read WizardForm.TypesCombo.ItemIndex.


Though wouldn't it be more correct to check if all components were selected?

if WizardIsComponentSelected('Comp1 and Comp2 and Comp3') then

Or equivalent code

if WizardIsComponentSelected('Comp1') and
   WizardIsComponentSelected('Comp2') and
   WizardIsComponentSelected('Comp3') then
Related