не отображаются надписи
В каком смысле? Я буквально только что проверил скрипт - всё работает. Возможно, вы забыли удалили нижнее подчеркивание в [Code_]?
Код: Выделить всё
#define MyAppName "Test"
#define MyAppVersion "1.0"
[setup]
appid=test1
appname={#MyAppName}
appvername={#MyAppVersion}
DefaultDirName={sd}\{#MyAppName}
[code]
var
BtnDel, BtnNDel: TNewRadioButton;
function CheckChoose(): Boolean;
var
ShowForm: TSetupForm;
begin
ShowForm := CreateCustomForm;
ShowForm.Position:=poScreenCenter;
try
ShowForm.ClientWidth := ScaleX(410);
ShowForm.ClientHeight := ScaleY(170);
ShowForm.BorderStyle := bsSingle;
ShowForm.BorderIcons := [biSystemMenu];
ShowForm.Caption := '{#MyAppName} {#MyAppVersion}';
with TNewButton.Create(ShowForm) do
begin
Parent := ShowForm;
SetBounds(ScaleX(110), ScaleY(120), ScaleX(90), ScaleY(25));
ModalResult := mrYes;
Caption := 'OK';
end;
with TNewStaticText.Create(ShowForm) do
begin
Parent:= ShowForm;
Caption:='Мастер может выполнить поиск предыдущей версии {#MyAppName} {#MyAppVersion} и'+ #13#10 +
'удалить её. Вы хотите удалить предыдущую версию?';
Left:=ScaleX(20);
Top:=ScaleY(20);
Font.Name:= 'Tahoma';
Font.Size:= 9;
Font.Color:=clBlack;;
end;
BtnDel := TNewRadioButton.Create(ShowForm);
with BtnDel do
begin
Parent := ShowForm;
Left := ScaleX(20);
Top := ScaleY(60);
Width := ScaleX(200);
Height := ScaleY(17);
Caption := 'Да, удалить предыдущую версию';
Checked := True;
end;
BtnNDel := TNewRadioButton.Create(ShowForm);
with BtnNDel do
begin
Parent := ShowForm;
Left := ScaleX(20);
Top := ScaleY(80);
Width := ScaleX(272);
Height := ScaleY(17);
Caption := 'Нет, установить с заменой';
end;
with TNewButton.Create(ShowForm) do
begin
Parent := ShowForm;
SetBounds(ScaleX(210), ScaleY(120), ScaleX(90), ScaleY(25));
ModalResult := mrcancel;
Caption := SetupMessage(msgButtonCancel);
end;
Result := (ShowForm.ShowModal = mrYes);
finally
ShowForm.Free;
end;
end;
function TrueDel: boolean;
begin
result := BtnDel.Checked;
end;
function FalseDel: boolean;
begin
result := BtnNDel.Checked;
end;
function UninstallApp(): Boolean;
var
Buff: String;
i: Integer;
begin
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + ExpandConstant( '{#SetupSetting( "AppId" )}_is1' ), 'UninstallString', Buff );
if not Result then
begin
Result := not FileExists(RemoveQuotes(Buff));
if not Result then
try
Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
finally
Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + ExpandConstant( '{#SetupSetting( "AppId" )}_is1' ), 'UninstallString', Buff );
if not Result then result := false; end;
end else MsgBox('Программа не найдена!', mbError, MB_OK);
end;
function InitializeSetup(): Boolean;
begin
if CheckChoose then
if TrueDel then result := UninstallApp else result := false;
if FalseDel then result := true;
end;Код: Выделить всё
[Run]
Filename: {app}\MyProg32.exe; WorkingDir: {app}; Description: {cm:LaunchProgram,MyProg}; Flags: nowait postinstall skipifsilent; Check: NOT IsWin64
Filename: {app}\MyProg64.exe; WorkingDir: {app}; Description: {cm:LaunchProgram,MyProg}; Flags: nowait postinstall skipifsilent; Check: IsWin64Код: Выделить всё
; --- Generated by InnoSetup Script Joiner version 3.0, Jul 22 2009, (c) Bulat Ziganshin . More info at http://issjoiner.codeplex.com/
; --- Source: exstracted.iss ------------------------------------------------------------
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.
Uninstallable=IsChecked
CreateUninstallRegKey=IsChecked
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl;
[Tasks]
; Дополнительно
; Ярлык(и) на «Рабочем столе»
Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked
; Ярлыки в меню «Пуск»
Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked
[Icons]
Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon
Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon
[Files]
; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить!
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs
[CustomMessages]
HeaderLabelPage=Выбор типа установки
LabelPage=Выберите нужный тип установки
MyRadioCaption_1=Распаковка
MyRadioCaption_2=Обычная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице
MyText_2=Будет произведена стандартная установка
Extracted=Распаковка — %1
ExtractedFolder=Выбор папки распаковки
ExtractedFolder2=В какую папку вы хотите распаковать %1?
ExtractedFolder3=Программа распакует %1 в следующую папку.
ExtractedFolder4=Программа установит %1 в следующую папку.
Installing=Распаковка...
InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер.
FinishedHeadingLabel=Завершение распаковки%n%1
FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки.
[UninstallDelete]
Type: filesandordirs; Name: {app}
[code]
const
DI_NORMAL = 3;
var
MyNewPage: TWizardPage;
Rect: TRect;
HIcon: LongInt;
AIconFileName: String;
MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;
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';
function IsChecked: Boolean;
begin
Result:= MyRadioBtn_2.checked;
end;
procedure RadBtnOnClick(Sender: TObject);
begin
case Sender of
MyRadioBtn_1: begin
WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
MyRadioBtn_2: begin
WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
end;
end;
procedure GetInstTypePage();
begin
MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}'));
try
// в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа.
// Можно использовать обычные .ico
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(138);
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;
hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19);
try
with TBitmapImage.Create(WizardForm) do begin
Left:= ScaleX(15);
Top:= ScaleY(68);
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;
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(120);
Width:= ScaleX(150);
Caption:= ExpandConstant('{cm:MyRadioCaption_1}');
OnClick:= @RadBtnOnClick;
Parent:= MyNewPage.Surface;
end;
with TNewStaticText.Create(WizardForm) do begin
Left:= ScaleX(60);
Top:= ScaleY(138);
Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
Height:= ScaleY(26);
WordWrap:= True;
Caption:= ExpandConstant('{cm:MyText_1}');
Parent:= MyNewPage.Surface;
end;
MyRadioBtn_2:= TNewRadioButton.Create(WizardForm);
with MyRadioBtn_2 do begin
Top:= ScaleY(50);
Width:= ScaleX(150);
Caption:= ExpandConstant('{cm:MyRadioCaption_2}');
Checked:= True;
OnClick:= @RadBtnOnClick;
Parent:= MyNewPage.Surface;
end;
with TNewStaticText.Create(WizardForm) do begin
Left:= ScaleX(60);
Top:= ScaleY(68);
Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
Height:= ScaleY(26);
WordWrap:= True;
Caption:= ExpandConstant('{cm:MyText_2}');
Parent:= MyNewPage.Surface;
end;
end;
function ShouldSkipPage1(PageID: Integer): Boolean;
begin
if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then
Result:= True;
end;
procedure InitializeWizard1();
begin
GetInstTypePage();
WizardForm.DiskSpaceLabel.Hide;
end;
procedure CurPageChanged1(CurPageID: Integer);
begin
if not IsChecked then begin
case CurPageID of
wpSelectDir: begin
WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}');
WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
wpInstalling: begin
WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}');
WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
wpFinished: begin
WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
end;
end;
end;
end;
[Setup]
; --- Source: MUI_InstallShield.iss ------------------------------------------------------------
//====={ Выбор языка }=====\\
[Languages]
Name: "rus"; MessagesFile: "compiler:Default.isl"
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"
[Files]
Source: "bottom.bmp"; Flags: dontcopy
Source: "topline.bmp"; Flags: dontcopy
[code]
const
SM_CXSCREEN = 0;
SM_CYSCREEN = 1;
function GetSystemMetrics(nIndex: Integer): Integer; external 'GetSystemMetrics@user32.dll stdcall';
procedure Set_MUI_InstallShield;
var
MyNewPage, ScreenWidth, ScreenHeight: Integer;
begin
WizardForm.BEVEL1.Hide;
ExtractTemporaryFile('bottom.bmp');
WizardForm.WizardSmallBitmapImage.SetBounds(0, 418, 690, 41);
WizardForm.WizardSmallBitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\bottom.bmp'));
WizardForm.WizardSmallBitmapImage.Parent := WizardForm;
ExtractTemporaryFile('topline.bmp');
WizardForm.WizardBitmapImage2.SetBounds(0, 53, 690, 2);
WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\topline.bmp'));
WizardForm.WizardBitmapImage2.Parent := WizardForm;
WizardForm.SelectDirBitmapImage.Hide;
WizardForm.SelectGroupBitmapImage.Hide;
WizardForm.Height := 483;
WizardForm.Width := 696;
ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
WizardForm.SetBounds((ScreenWidth - WizardForm.Width) div 2, (ScreenHeight - WizardForm.Height) div 2,
WizardForm.Width, WizardForm.Height);
WizardForm.BACKBUTTON.SetBounds(296, 427, 77, 22);
WizardForm.NEXTBUTTON.SetBounds(378, 427, 77, 22);
WizardForm.CANCELBUTTON.SetBounds(600, 427, 77, 22);
WizardForm.WizardBitmapImage.SetBounds(0, 55, 171, 363);
WizardForm.WizardBitmapImage.Parent := WizardForm;
WizardForm.WelcomePage.Parent.SetBounds(171,55,519,363);
WizardForm.WelcomePage.Color := $00AB663D;
WizardForm.FinishedPage.Color := $00AB663D;
WizardForm.LicensePage.Color := $00AB663D;
WizardForm.PasswordPage.Color := $00AB663D;
WizardForm.InfoBeforePage.Color := $00AB663D;
WizardForm.UserInfoPage.Color := $00AB663D;
WizardForm.SelectDirPage.Color := $00AB663D;
WizardForm.SelectDirPage.Parent.Align := alClient;
WizardForm.SelectComponentsPage.Color := $00AB663D;
WizardForm.SelectProgramGroupPage.Color := $00AB663D;
WizardForm.SelectTasksPage.Color := $00AB663D;
WizardForm.ReadyPage.Color := $00AB663D;
WizardForm.PreparingPage.Color := $00AB663D;
WizardForm.InstallingPage.Color := $00AB663D;
WizardForm.InfoAfterPage.Color := $00AB663D;
WizardForm.MAINPANEL.Parent := WizardForm;
WizardForm.MAINPANEL.Color := $00663300;
WizardForm.MAINPANEL.SetBounds(0, 0, 690, 53);
WizardForm.WELCOMELABEL1.SetBounds(45, 119, 437, 42);
WizardForm.WELCOMELABEL1.Font.Height := -12;
WizardForm.WELCOMELABEL1.Font.Color := clWhite;
WizardForm.WELCOMELABEL2.SetBounds(85, 167, 378, 160);
WizardForm.WELCOMELABEL2.Font.Color := clWhite;
WizardForm.PAGENAMELABEL.SetBounds(17, 5, 380, 12);
WizardForm.PAGENAMELABEL.Font.Color := clWhite;
WizardForm.PAGEDESCRIPTIONLABEL.SetBounds(30, 24, 366, 29);
WizardForm.PAGEDESCRIPTIONLABEL.Font.Color := clWhite;
WizardForm.LICENSELABEL1.SetBounds(64, 20, 437, 300);
WizardForm.LICENSELABEL1.Font.Color := clWhite;
WizardForm.LICENSEMEMO.SetBounds(64, 56, 437, 227);
WizardForm.LICENSEMEMO.BringToFront;
WizardForm.LICENSEACCEPTEDRADIO.Font.Color := clWhite;
WizardForm.LICENSEACCEPTEDRADIO.SetBounds(64, 332, 150, 16);
WizardForm.LICENSENOTACCEPTEDRADIO.Font.Color := clWhite;
WizardForm.LICENSENOTACCEPTEDRADIO.SetBounds(230, 332, 150, 16);
WizardForm.INFOBEFORECLICKLABEL.SetBounds(64, 20, 437, 24);
WizardForm.INFOBEFORECLICKLABEL.Font.Color := clWhite;
WizardForm.INFOBEFOREMEMO.SetBounds(64, 56, 437, 227);
WizardForm.INFOAFTERCLICKLABEL.SetBounds(64, 20, 437, 24);
WizardForm.INFOAFTERCLICKLABEL.Font.Color := clWhite;
WizardForm.INFOAFTERMEMO.SetBounds(64, 56, 437, 227);
WizardForm.USERINFONAMELABEL.SetBounds(64, 60, 128, 14);
WizardForm.USERINFONAMELABEL.Font.Color := clWhite;
WizardForm.USERINFONAMEEDIT.SetBounds(64, 79, 435, 20);
WizardForm.USERINFOORGLABEL.SetBounds(64, 112, 128, 14);
WizardForm.USERINFOORGLABEL.Font.Color := clWhite;
WizardForm.USERINFOORGEDIT.SetBounds(64, 131, 435, 20);
WizardForm.USERINFOSERIALLABEL.SetBounds(64, 164, 128, 14);
WizardForm.USERINFOSERIALLABEL.Font.Color := clWhite;
WizardForm.USERINFOSERIALEDIT.SetBounds(64, 183, 435, 20);
WizardForm.SELECTDIRLABEL.SetBounds(64, 20, 437, 24);
WizardForm.SELECTDIRLABEL.Font.Color := clWhite;
WizardForm.SelectDirBrowseLabel.SetBounds(64, 44, 435, 24);
WizardForm.SelectDirBrowseLabel.Font.Color := clWhite;
WizardForm.DISKSPACELABEL.SetBounds(72, 277, 60, 14);
WizardForm.DISKSPACELABEL.Font.Color := clWhite;
WizardForm.BEVEL.SHAPE := bsFrame;
WizardForm.BEVEL.SetBounds(64, 283, 437, 45);
WizardForm.BEVEL.Parent := WizardForm.SelectDirPage;
WizardForm.DIREDIT.SetBounds(72, 301, 345, 12);
WizardForm.DIREDIT.BorderStyle := bsNone;
WizardForm.DIREDIT.Color := $00AB663D;
WizardForm.DIREDIT.Font.Color := clWhite;
WizardForm.DIREDIT.AUTOSELECT := False;
WizardForm.DirBrowseButton.SetBounds(420, 296, 77, 23);
WizardForm.SELECTCOMPONENTSLABEL.SetBounds(64, 20, 437, 24);
WizardForm.SELECTCOMPONENTSLABEL.Font.Color := clWhite;
WizardForm.TYPESCOMBO.SetBounds(64, 56, 437, 20);
WizardForm.COMPONENTSLIST.SetBounds(64, 80, 437, 227);
WizardForm.COMPONENTSDISKSPACELABEL.SetBounds(64, 320, 437, 24);
WizardForm.COMPONENTSDISKSPACELABEL.Font.Color := clWhite;
WizardForm.SELECTSTARTMENUFOLDERLABEL.SetBounds(64, 20, 437, 36);
WizardForm.SELECTSTARTMENUFOLDERLABEL.Font.Color := clWhite;
WizardForm.SelectStartMenuFolderBrowseLabel.SetBounds(64, 100, 437, 14);
WizardForm.SelectStartMenuFolderBrowseLabel.Font.Color := clWhite;
WizardForm.GROUPEDIT.SetBounds(64, 120, 343, 20);
WizardForm.GroupBrowseButton.SetBounds(414, 119, 77, 23);
WizardForm.READYLABEL.SetBounds(64, 20, 437, 24);
WizardForm.READYLABEL.Font.Color := clWhite;
WizardForm.READYMEMO.SetBounds(64, 53, 437, 280);
WizardForm.FINISHEDHEADINGLABEL.SetBounds(64, 20, 437, 24);
WizardForm.FINISHEDHEADINGLABEL.Font.Height := -12;
WizardForm.FINISHEDHEADINGLABEL.Font.Color := clWhite;
WizardForm.FINISHEDLABEL.SetBounds(64, 60, 437, 14);
WizardForm.FINISHEDLABEL.Font.Color := clWhite;
WizardForm.RUNLIST.SetBounds(64, 146, 437, 190);
WizardForm.RUNLIST.Font.Color := clWhite;
WizardForm.STATUSLABEL.SetBounds(64, 20, 437, 14);
WizardForm.STATUSLABEL.Font.Color := clWhite;
WizardForm.FILENAMELABEL.SetBounds(64, 60, 437, 14);
WizardForm.FILENAMELABEL.Font.Color := clWhite;
WizardForm.PROGRESSGAUGE.SetBounds(64, 90, 430, 20);
WizardForm.PASSWORDLABEL.SetBounds(64, 60, 437, 14);
WizardForm.PASSWORDLABEL.Font.Color := clWhite;
WizardForm.PASSWORDEDITLABEL.SetBounds(64, 90, 437, 14);
WizardForm.PASSWORDEDITLABEL.Font.Color := clWhite;
WizardForm.PASSWORDEDIT.SetBounds(64, 110, 400, 20);
WizardForm.SELECTTASKSLABEL.SetBounds(64, 20, 437, 14);
WizardForm.SELECTTASKSLABEL.Font.Color := clWhite;
WizardForm.TASKSLIST.SetBounds(64, 45, 430, 300);
WizardForm.TASKSLIST.Color := $00AB663D;
WizardForm.TASKSLIST.Font.Color := clWhite;
WizardForm.MyNewPage.Font.Color := clWhite;
end;
function CheckSerial(Serial: String): Boolean;
begin
Result := Serial = '123456';
end;
procedure InitializeWizard2();
begin
Set_MUI_InstallShield;
end;
[Setup]
; --- Dispatching code ------------------------------------------------------------
[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := ShouldSkipPage1(PageID); if not Result then exit;
end;
procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;
procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged1(CurPageID);
end;
Код: Выделить всё
[Setup]
PrivilegesRequired=admin