specxml
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [more=Код скрипта][Setup] AppName=Components Descriptions AppVerName=Components Descriptions CreateAppDir=false [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl [Types] Name: tweak; Description: Оптимальный выбор Name: full; Description: Выбрать все компоненты Name: deselect; Description: Сбросить все компоненты Name: custom; Description: Пользовательский режим; Flags: iscustom [Components] Name: Safe; Description: Параметры безопасности; Types: deselect Name: Safe\wscsvc; Description: Отключить 'Центр обеспечения безопасности'; Types: full tweak Name: Safe\Signing; Description: Разрешить установку неподписанных драйверов; Types: full Name: WB; Description: 'Мой компьютер' - Настройки; Types: deselect Name: WB\Computer; Description: Добавить ярлыки - Корзина, Сетевые подключения; Types: full tweak Name: WB\Low; Description: Уведомление о недостатке свободного места на диске Name: WB\Low\1; Description: Изменить порог срабатывания с 10 % до 1%; Flags: exclusive; Types: tweak Name: WB\Low\No; Description: Не предупреждать о переполнении дисков; Flags: exclusive; Types: full Name: IE; Description: Настройки обозревателя Internet Explorer; Types: deselect Name: IE\Cache; Description: Временные файлы Internet - использовать сжатие; Types: full tweak Name: User; Description: Параметры входа в систему Name: User\Logon; Description: Пользователи - использовать страницу приветствия; Flags: exclusive; Types: full Name: User\Logon2K; Description: Классический вид - выводить запрос имени и пароля; Flags: exclusive; Types: tweak Name: User\Autologon; Description: Задействовать автоматический вход в систему; Types: full tweak Name: User\Sound; Description: Не сопровождать звуком загрузку и завершение работы; Types: full Name: User\English; Description: Английский язык ввода по умолчанию для всех; Types: full Name: Sys; Description: Настройки системы и оборудования; Types: deselect Name: Sys\Memory; Description: Память - оптимизировать работу ядра Windows Name: Sys\Memory\1024; Description: 1024Мб физической памяти на этом компьютере; Flags: exclusive Name: Sys\Timeout; Description: Разрешить быстрое завершение работы; Types: full tweak [Files] Source: compiler:descctrl.dll; Flags: dontcopy ; скачать библиотеку descctrl.dll (6 кб) можно здесь: http://victor-dobrov.narod.ru/inno_descctrl.7z [Code] var Point: TPoint; CompDesc: TEdit; MessageForm: TForm; MessagePanel: TPanel; MessageLabel: TLabel; n, frame: integer; CompUpKey: Boolean; Descriptions: String; Messages: array of String; function EnableDesc(ComponentsListHandle, DescLabelHandle: HWND; DescStrings: PChar): BOOL; external 'enabledesc@files:descctrl.dll stdcall'; function disabledesc(): BOOL; external 'disabledesc@files:descctrl.dll stdcall'; procedure GetCursorPos(var Point: TPoint); external 'GetCursorPos@user32 stdcall delayload'; function SetWindowPos(hWnd, hWndInsertAfter, X, Y, cx, cy, wFlags: Longint):Boolean; external 'SetWindowPos@user32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32 stdcall delayload'; function DrawIconEx(hdc, x, y, hIcon, cx, cy, AniCur, Draw, Flags: Longint): Longint; external 'DrawIconEx@user32 stdcall delayload'; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32 stdcall delayload'; Procedure DrawIcon(Form: TWinControl; File: String; nIcon, Left, Top, Size, BColor: Integer); var Panel: TPanel; Rect: TRect; Begin Panel:= TPanel.Create(Form); Panel.SetBounds(Left, Top, Size, Size); Panel.Parent:= Form with TBitmapImage.Create(Panel) do begin Parent:= Panel; with Bitmap do begin Width:= Size; Height:= Size; Rect.Right:= Size; Rect.Bottom:= Size; Canvas.Brush.Color:= BColor; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0,0, ExtractIcon(GetModuleHandle(0), ExpandConstant(File), nIcon), Size, Size,0,0,3); end; end; End; Function StringToArray(Text, Cut: String): array of String; var t, i, k: Integer; Begin { создать массив из текста} Repeat SetArrayLength(Result, GetArrayLength(Result) + 1); t:= 1; k:= Pos(Cut, Text); if k > 0 then t:= Length(Cut) else k:= Pos(#10, Text); i:= GetArrayLength(Result) - 1; if k > 0 then begin Result[i]:= Copy(Text, 1, k - 1); Text:= Copy(Text, k + t, Length(Text)) end else begin Result[i]:= Text; SetLength(Text, 0) end; Until Length(Text) = 0 End; Procedure ResizeLabel(Obj: TLabel; Text: String; MaxWidth: Integer); var k, w, h: integer; Begin { размер формы подгоняется под текст} Obj.AutoSize:= true; Obj.WordWrap:= false; Obj.Caption:= Text; { авторазмер} w:= Obj.Width; h:= Obj.Height; n:= (w + frame*2)/MaxWidth + 1 Repeat Obj.Width:= w/n + frame*2*n + k Obj.Height:= h * n Obj.WordWrap:= true; k:= k + 4 Until Obj.Height/h = n End; Procedure ShowHint(String: string; AIndex: Integer; XCenter, YCenter: Bool); Begin { размер формы подгоняется под текст, если AIndex = 0, значок не рисуется} frame:= 10; if AIndex <> 0 then String:= ' '+ String; GetCursorPos(Point); MessageLabel.Left:= frame; MessageLabel.Top:= frame ResizeLabel(MessageLabel, String, WizardForm.ClientWidth) if XCenter then Point.X:= WizardForm.Left + WizardForm.Width/2 - (MessageLabel.Width + frame*2 -2)/2 else Point.X:= Point.X + 12; if YCenter then Point.Y:= WizardForm.Top + WizardForm.BeveledLabel.Top else Point.Y:= Point.Y + 12; MessageForm.SetBounds(Point.X, Point.Y, MessageLabel.Width + frame*2 -2, MessageLabel.Height + frame*2 -2) if AIndex <> 0 then DrawIcon(MessageForm, '{sys}\shell32.dll', AIndex, 9, 8, 16, MessagePanel.Color); MessageForm.Show; SetWindowPos(MessageForm.Handle, -1, 0, 0, 0, 0, 3); End; Procedure CompKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); Begin CompUpKey:= true n:= WizardForm.ComponentsList.ItemIndex if n >= 0 then ShowHint(Messages[n], -1001, true, true) else MessageForm.Hide; End; Procedure ObjectOnClick(Sender: TObject); Begin Case TObject(Sender) of { событие объекта} CompDesc: if CompDesc.Text > '' then if CompUpKey then CompUpKey:= false else ShowHint(CompDesc.Text, -1001, false, false) else MessageForm.Hide; MessageForm: WizardForm.BringToFront; end; End; Procedure DeinitializeSetup(); Begin disabledesc(); End; Procedure CurStepChanged(CurStep: TSetupStep); Begin if CurStep = ssInstall then disabledesc; End; Procedure CurPageChanged(CurPageID: Integer); Begin if CurPageID = wpSelectComponents then enableDesc(WizardForm.ComponentsList.Handle,CompDesc.Handle,Descriptions) else MessageForm.Hide; End; Procedure InitializeWizard; Begin CompDesc:= TEdit.Create(WizardForm) CompDesc.Parent:= WizardForm CompDesc.Visible:= false CompDesc.OnChange:= @ObjectOnClick MessageForm:= CreateCustomForm; MessageForm.BorderStyle:= bsNone MessageForm.OnActivate:= @ObjectOnClick MessagePanel:= TPanel.Create(MessageForm) MessagePanel.BevelInner:= bvLowered; MessagePanel.Align:= alClient; MessagePanel.Color:= $E1FFFF; MessagePanel.Parent:= MessageForm MessageLabel:= TLabel.Create(MessagePanel) MessageLabel.Transparent:= true MessageLabel.Font.Name:= 'Arial' MessageLabel.Font.Size:= WizardForm.Font.Size + 1 MessageLabel.Parent:= MessagePanel WizardForm.ComponentsList.OnKeyUp:= @CompKeyUp Descriptions:= 'Демонстрационный режим. Действия по изменению настроек системы или параметров безопасности не выполняются. Компоненты и их описания даны только для примера. Описания отделяются друг от друга точкой с запятой и должны содержать не более 255 символов.;' + 'Отключить «Центр обеспечения безопасности» (рекомендуется отключить эту практически бесполезную службу);' + 'Разрешить установку неподписанных драйверов (упрощает настройку компьютера сразу после установки системы);' + '«Мой компьютер» - Секция настроек, влияющих на работу компьютера;' + 'ярлыки Корзина и Сетевые подключения будут созданы в папке «Мой компьютер»;' + 'Изменить порог срабатывание уведомления о недостатке свободного места на диске;' + 'Изменить порог срабатывания с 10 % (значение по-умолчанию) до 1% (необходимо для дисков большой ёмкости);' + 'Выдача всплывающей подсказки о переполнении дисков будет отключена;' + 'Общие настройки обозревателя Internet Explorer;' + 'Папка временных файлов Internet Explorer будет сжата средствами файловой системы NTFS;' + 'Параметры входа в систему;' + 'Пользователи - использовать страницу приветствия (новый экран загрузки, появившийся в Windows XP);' + 'Классический вид - выводить запрос имени и пароля (экран загрузки, использующийся в Windows 2000);' + 'Задействовать автоматический вход в систему для текущего пользователя без запроса имени и пароля;' + 'Не сопровождать звуком загрузку и завершение работы (немного ускоряет загрузку «Рабочего стола»);' + 'Английский язык ввода по умолчанию для всех (для новых пользователей);' + 'Настройка системы на имеющийся объём оперативной памяти и процессорного кэша, оптимизация файловой подсистемы;' + 'После установке данной опции уменьшать объём оперативной памяти НЕЖЕЛАТЕЛЬНО;' + 'Вычисленный объём установленной физической памяти на этом компьютере;' + 'Разрешить быстрое завершение работы (сетевые соединения могут быть разорваны преждевременно)'; Messages:= StringToArray(Descriptions,';') End; | Всего записей: 7 | Зарегистр. 12-01-2016 | Отправлено: 15:52 13-01-2016 | Исправлено: specxml, 15:55 13-01-2016 |
|