Доброго времени суток,хотелось бы узнать,как реализовать вот это
Возможно я ошибаюсь , но скорее всего Inno Setup Form Designer-ом

Код: Выделить всё
function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';
var
SupportPage: TWizardPage;
Steam, NoSteam: TNewRadiobutton;
function MyFuncIcons: Boolean;
begin
if Steam.Checked = True then
Result:= False
else Result:= True;
end;
procedure InitializeWizard();
var
Str1, Str2, Str3: TNewStaticText;
Rect: TRect;
hIcon: LongInt;
begin
SupportPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:INST_MODE}'), ExpandConstant('{cm:INST_MODE_CPT}'));
Steam:= TNewRadiobutton.Create(SupportPage);
with Steam do
begin
SetBounds(ScaleX(20), ScaleY(40), ScaleX(200), ScaleY(16));
Font.Style:= [fsBold];
Caption:= ExpandConstant('{cm:INST_EXPR}');
Checked:= True;
Parent:= SupportPage.Surface;
end;
hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 118);
with TBitmapImage.Create(SupportPage) do
begin
SetBounds(ScaleX(36), Steam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
with Bitmap do
begin
Width:= ScaleX(32);
Height:= ScaleY(32);
Rect.Right:= ScaleX(32);
Rect.Bottom:= ScaleY(32);
Rect.Left:= ScaleX(0);
Rect.Top:= ScaleY(0);
Canvas.Brush.Color:= clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end;
Parent:= SupportPage.Surface;
end;
Str1:= TNewStaticText.Create(SupportPage);
with Str1 do
begin
SetBounds(ScaleX(78), Steam.Top + ScaleY(20), ScaleX(349), ScaleY(32));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:INST_EXPR_STR}');
Parent:= SupportPage.Surface;
end;
NoSteam:= TNewRadiobutton.Create(SupportPage);
with NoSteam do
begin
SetBounds(ScaleX(20), Str1.Top + ScaleY(52), ScaleX(200), ScaleY(16));
Font.Style:= [fsBold];
Caption:= ExpandConstant('{cm:INST_CUST}');
Parent:= SupportPage.Surface;
end;
hIcon:= ExtractIcon(GetModuleHandle(0), ExpandConstant('{sys}\shell32.dll'), 119);
with TBitmapImage.Create(SupportPage) do
begin
SetBounds(ScaleX(36), NoSteam.Top + ScaleY(20), ScaleX(32), ScaleY(32));
with Bitmap do
begin
Width:= ScaleX(32);
Height:= ScaleY(32);
Rect.Right:= ScaleX(32);
Rect.Bottom:= ScaleY(32);
Rect.Left:= ScaleX(0);
Rect.Top:= ScaleY(0);
Canvas.Brush.Color:= clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, 3);
end;
Parent:= SupportPage.Surface;
end;
Str2:= TNewStaticText.Create(SupportPage);
with Str2 do
begin
SetBounds(ScaleX(78), NoSteam.Top + ScaleY(20), ScaleX(349), ScaleY(50));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:INST_CUST_STR}');
Parent:= SupportPage.Surface;
end;
Str3:= TNewStaticText.Create(SupportPage);
with Str3 do
begin
SetBounds(ScaleX(36), ScaleY(221), ScaleX(381), ScaleY(16));
Autosize:= False;
WordWrap:= True;
Caption:= ExpandConstant('{cm:NEXT}');
Parent:= SupportPage.Surface;
end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpSelectDir then
begin
if Steam.Checked = True then
WizardForm.DirEdit.Text:= ExpandConstant('{reg:HKLM\SOFTWARE\Valve\Steam,InstallPath|{pf}\ARPS}')
else WizardForm.DirEdit.Text:= ExpandConstant('{pf}\Half-Life 2');
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = wpSelectProgramGroup then
begin
if Steam.Checked = True then
Result:= True;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if Steam.Checked = True then
begin
DelTree(ExpandConstant('{app}\UninstallDir'), True, True, True);
RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9C9D1016-916D-40D5-B034-A0071759F1B7}_is1');
end;
end;
end;
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo,
MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + ExpandConstant('{cm:INST_MODE}') + NewLine;
if Steam.Checked = True then
S := S + Space + ExpandConstant('{cm:INST_EXPR}') + NewLine + NewLine
else
S := S + Space + ExpandConstant('{cm:INST_CUST}') + NewLine + NewLine;
S := S + MemoDirInfo + NewLine + Newline;
S := S + MemoGroupInfo + NewLine + Newline;
S := S + MemoTasksInfo + NewLine + NewLine;
Result := S;
end;
{
HINT: В режиме "Экспресс Режим" (Steam) может возникнуть ситуация, когда к примеру не хватает места
на жестком диске, а страница выбора папки установки в "Экспресс Режиме" будет пропущена,
в результате чего получится так, что установка сообщит о нехватке места уже в процессе
копирования файлов.
}
[url=viewtopic.php?p=2804297#p2804297]»[/url]
А вы немогли бы ещё сделать так, чтобы у вариантов установки "Steam" и "NoSteam", можно было указать разные наборы компонентов, и разные параметры [Tasks]?