lmiol, в твоем случае, без содания дополнительной страницы компонентов, и описания кучи условий, вариант только такой:
читать дальше »
Код:

[Setup]
AppName=Quake Live
AppVerName="Quake Live"
AppPublisher=Mio Dark Project
CreateAppDir=no
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;
[Types]
Name: "full"; Description: "Все компоненты";
Name: "custom"; Description: "Выбрать компоненты"; Flags: iscustom
[Components]
Name: "main"; Description: "Cтандартные файлы Quake Live"; Types: full custom; Flags: fixed
Name: "main2"; Description: "Премиум файлы Quake Live"; Types: full custom;
Name: "plug"; Description: "Плагин Quake Live"; Types: full custom;
Name: "browser"; Description: "Портативный Firefox под Quake Live"; Types: full custom;
Name: "manual"; Description: "Руководство и Награды"; Types: full custom;
Name: "anti"; Description: "Античит PunkBuster"; Types: full custom;
[CustomMessages]
HeaderLabelPage=Выберите тип вашего аккаунта
MyRadioCaption_1=Standart
MyRadioCaption_2=Premium / Pro
PageTextHeader=На этой странице Вы можете выбрать тип вашего аккаунта, который вы используете в игре.
MyText_1=Будут установлены файлы которые доступны для игроков без подписки.
MyText_2=Будут установлены файлы которые доступны для игроков с Premium/Pro подпиской.
[*code]
var
MyNewPage: TWizardPage;
MyRadioBtn:ArraY[0..1]of TNewRadioButton;
procedure GetInstType;
begin
WizardForm.ComponentsList.ItemEnabled[1]:= MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
WizardForm.ComponentsList.Checked[1]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
WizardForm.ComponentsList.Checked[4]:=MyRadioBtn[1].Checked or not MyRadioBtn[0].Checked;
end;
procedure GetInstTypePage;
var
i:integer;
begin
MyNewPage := CreateCustomPage(wpWelcome,
ExpandConstant('{cm:HeaderLabelPage}'), '');
with TNewStaticText.Create(WizardForm) do
begin
Width := WizardForm.InnerNotebook.Width;
Height := ScaleY(26);
WordWrap := True;
Caption := ExpandConstant('{cm:PageTextHeader}');
Parent := MyNewPage.Surface;
end;
for i:=0 to 1 do
begin
MyRadioBtn[i] := TNewRadioButton.Create(WizardForm);
with MyRadioBtn[i] do
begin
Parent := MyNewPage.Surface;
Top := ScaleY(50+i*70);
Width := ScaleX(150);
case i of
0: begin
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
Checked := True;
end;
1:Caption := ExpandConstant('{cm:MyRadioCaption_2}');
end;
end;
with TNewStaticText.Create(WizardForm) do
begin
Parent := MyNewPage.Surface;
SetBounds(ScaleX(16),ScaleY(68+i*70),WizardForm.InnerNotebook.Width - ScaleX(60),ScaleY(26));
WordWrap := True;
case i of
0:Caption := ExpandConstant('{cm:MyText_1}');
1:Caption := ExpandConstant('{cm:MyText_2}');
end;
end;
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID <= wpSelectDir)
and (PageID = wpReady)
and (MyRadioBtn[1].Checked)
then Result := True;
end;
procedure InitializeWizard();
begin
GetInstTypePage;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectComponents then GetInstType;
end;
Цитата lmiol:
это 100%, я видел в какойто из версий Klite codec pack »
|
Конечно можно. создаешь еще одну страницу компонентов и делаешь привязки к старой по каждому пункту.
Сам.