ksunechkin,
serg aka lain, такой вариант еще можно, ток вот картинка остаеться(
Код:

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;
[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Выборочная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Установка будет произведена полностью в автоматическом режиме.%n(Подходит для не подготовленных пользователей)
MyText_2=Будет предложен выбор директории установки.%n(Для продвинутых пользователей)
MyText_0=Наведите курсор мыши на тип установки, чтобы прочесть его описание.
[_code]
const
DI_NORMAL = 3;
var
MyNewPage: TWizardPage;
Rect: TRect;
HIcon: LongInt;
AIconFileName: String;
MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;
Text: TNewStaticText;
NoChecks: TLabel;
function GetModuleHandle(lpModuleName: LongInt): LongInt;
external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt;
external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth,
cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;
external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt;
external 'DestroyIcon@user32.dll stdcall';
procedure Check1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=True
Text.Caption:=ExpandConstant('{cm:MyText_1}')
try
AIconFileName := ExpandConstant('{sys}\shell32.dll');
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := 32;
Rect.Bottom := 32;
hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 26);
try
with TBitmapImage.Create(WizardForm) do
begin
Left := ScaleX(15);
Top := ScaleY(130);
Width := 32;
Height := 32;
with Bitmap do
begin
Width := 32;
Height := 32;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
end;
Parent := MyNewPage.Surface;
end;
finally
DestroyIcon(hIcon);
end;
except
end;
end;
procedure Check2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=True
Text.Caption:=ExpandConstant('{cm:MyText_2}')
try
AIconFileName := ExpandConstant('{sys}\shell32.dll');
Rect.Left := 0;
Rect.Top := 0;
Rect.Right := 32;
Rect.Bottom := 32;
hIcon := ExtractIcon(GetModuleHandle(0), AIconFileName, 19);
try
with TBitmapImage.Create(WizardForm) do
begin
Left := ScaleX(15);
Top := ScaleY(130);
Width := 32;
Height := 32;
with Bitmap do
begin
Width := 32;
Height := 32;
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Rect);
DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
end;
Parent := MyNewPage.Surface;
end;
finally
DestroyIcon(hIcon);
end;
except
end;
end;
procedure NoChecksMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Text.Enabled:=False
Text.Caption:=ExpandConstant('{cm:MyText_0}')
end;
procedure GetInstTypePage();
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;
MyRadioBtn_1 := TNewRadioButton.Create(WizardForm);
with MyRadioBtn_1 do
begin
Top := ScaleY(50);
Width := ScaleX(150);
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
Checked := True;
Parent := MyNewPage.Surface;
OnMouseMove:=@Check1MouseMove
end;
MyRadioBtn_2 := TNewRadioButton.Create(WizardForm);
with MyRadioBtn_2 do
begin
Top := ScaleY(70);
Width := ScaleX(150);
Caption := ExpandConstant('{cm:MyRadioCaption_2}');
Parent := MyNewPage.Surface;
OnMouseMove:=@Check2MouseMove
end;
end;
Procedure InitializeWizard();
begin
begin
GetInstTypePage();
end;
begin
Text:=TNewStaticText.Create(WizardForm)
Text.Left := ScaleX(60);
Text.Top := ScaleY(138);
Text.Width := WizardForm.InnerNotebook.Width - ScaleX(60);
Text.Height := ScaleY(26);
Text.WordWrap := True;
Text.Parent := MyNewPage.Surface;
end;
begin
NoChecks:=TLabel.Create(WizardForm)
NoChecks.Width:=WizardForm.Width
NoChecks.Height:=WizardForm.Height
NoChecks.Autosize:=False
NoChecks.Transparent:=True
NoChecks.OnMouseMove:=@NoChecksMouseMove
NoChecks.Parent:=MyNewPage.Surface
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID >= wpSelectDir) and (PageID < wpReady) and (MyRadioBtn_1.Checked) then
Result := True;
end;