Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

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
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup - создание инсталляционных пакетов (Часть 15)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru