LordVeider  Цитата: Вопрос о хитром расположении компонентов до сих пор открыт.
  Если я тебя правильно понял то попробуй [more=так] 
 [Setup] 
 AppName=My Program 
 AppVerName=My Program version 1.5 
 DefaultDirName={pf}\My Program   
 [Components] 
 Name: A; Description: Группа А 
 Name: A\A1; Description: Компонент 1 
 Name: A\A2; Description: Компонент 2 
 Name: B; Description: Группа B 
 Name: B\B1; Description: Группа B1 
 Name: B\B1\B11; Description: Компонент 1; Flags: exclusive 
 Name: B\B1\B22; Description: Компонент 2; Flags: exclusive   
 [Files] 
 Source: compiler:Examples\MyProg.exe; DestDir: {app}; Check: Check1 
 Source: compiler:Examples\MyProg.chm; DestDir: {app}; Check: Check2   
 [_Code] 
 function Check1: Boolean; 
 begin 
   Result:=WizardForm.ComponentsList.ItemEnabled[5] and WizardForm.ComponentsList.Checked[5] 
 end;   
 function Check2: Boolean; 
 begin 
   Result:=WizardForm.ComponentsList.ItemEnabled[6] and WizardForm.ComponentsList.Checked[6] 
 end;   
 procedure OnClickCheck(Sender: TObject); 
 begin 
   if WizardForm.ComponentsList.Checked[2] = True then 
   begin 
     WizardForm.ComponentsList.ItemEnabled[4]:=True 
     WizardForm.ComponentsList.ItemEnabled[5]:=True 
     WizardForm.ComponentsList.ItemEnabled[6]:=True 
   end else 
   begin 
     WizardForm.ComponentsList.ItemEnabled[4]:=False 
     WizardForm.ComponentsList.ItemEnabled[5]:=False 
     WizardForm.ComponentsList.ItemEnabled[6]:=False 
   end 
 end;   
 procedure InitializeWizard(); 
 begin 
   WizardForm.ComponentsList.Checked[2]:=True 
   WizardForm.ComponentsList.Checked[4]:=True 
   WizardForm.ComponentsList.OnClickCheck:=@OnClickCheck 
 end;   
 [/more]