Giter Site home page Giter Site logo

leserg73 / is605ru Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 1.0 2.83 MB

Расширенная версия Inno Setup 6.0.5 (RUS) с поддержкой Windows XP.

License: Other

Pascal 63.21% Inno Setup 29.23% Batchfile 0.19% HTML 0.77% CSS 0.32% JavaScript 0.62% PHP 0.02% XSLT 0.29% C 5.36%
pascal inno-setup vcl

is605ru's Introduction

Latest Version Total Downloads Latest Release Downloads

Inno Setup v6.0.5 RUS

Неофициальная сборка Inno Setup v6.0.5 на русском языке, в которую встроена поддержка визуальных стилей *.vsf. Теперь не нужно использовать сторонние библиотеки и писать соответствующий код для применения стиля. Достаточно в сценарии указать параметр SetupStyleFile с выбранным файлом стиля и на этом все. Компиляция выполнена с максимальной поддержкой VCL компонентов (в пределах возможностей библиотеки RemObjects Pascal Script), а также дополнена некоторыми функциями и параметрами из расширенной версии компилятора от RESTOOLS.

Разработка данной модификации ведётся на базе исходного кода Inno Setup (Copyright© Jordan Russell и Martijn Laan), компонента VCL Styles Utils (Copyright© Rodrigo Ruz) и компонента SynTaskDialog (Copyright© Synopse Informatique).

Состав (только модифицированные файлы!)

  • ISCmplr.dll – библиотека компиляции сценариев для Compil32 и ISCC;
  • ISPP.dll – библиотека реализующая интерфейс препроцессора Inno Setup;
  • Setup.e32 – модуль программы установки (интерфейс мастера и выполнение);
  • SetupLdr.e32 – модуль загрузчика для программы установки (распаковка и запуск);
  • ISCC.exe – интерфейс командной строки для компилятора (русский);
  • Compil32.exe – графический интерфейс для компилятора (русский, расширенный).

Примечание:

  • компиляция файлов ISPP.dll, SetupLdr.e32, ISCC.exe выполнена в Delphi 2009;
  • компиляция файлов ISCmplr.dll, Setup.e32, Compil32.exe — Delphi 10.3.3 Rio Community.

Особенности

Добавлена поддержка ОС Windows XP, при этом сам установщик поддерживает эту систему не полностью, ввиду использования функций, недоступных в Windows XP. Поэтому на этих системах в работе сложных инсталляторов возможны ошибки, сбои и отказы. Также удалены записи вызова библиотек DLL, повышающих безопасность пользовательских системы от возможной атаки предварительной загрузки DLL. Это сделано для поддержки ОС Windows Vista.

Основные отличия

  • SetupStyleFile (директива секции [Setup]) – применение визуального стиля (файлы с расширением .vsf).

    Примеры.

    1) Файл стиля находится в одной папке с файлом сценария:

    SetupStyleFile=Glow.vsf

    2) Файл стиля находится в каталоге Inno Setup, в подпапке "Styles":

    SetupStyleFile=compiler:Styles\Glow.vsf

    3) Файл стиля находится в определенном каталоге:

    SetupStyleFile=D:\My Files\For Install\VCL Style\Glow.vsf

  • DirSelectModern (директива секции [Setup]) – включение диалога выбора папки в стиле Vista (только для систем Vista и выше, на системе Windows XP будет показан стандартный диалог Inno Setup). Значение по умолчаниюFalse;

  • TaskBarView (директива секции [Setup]) – включение отображения эскиза окна установки на Панели задач. Значение по умолчаниюFalse, т.е. стандартное поведение мастера установки.

    Также доступны следующие процедуры для кастомизации информации панели и эскиза окна установки на Панели задач:

    1. SetAppTaskbarProgressValue(const Completed: Integer) – позволяет указать процент выполнения текущей задачи.
    Действительные значения от 0 до 100.

    Пример: SetAppTaskbarProgressValue(10);

    2. SetAppTaskbarProgressState(const State: TTaskbarProgressState) – позволяет указать состояние прогресс-бара.

    Доступные состояния:

    • tpsNoProgress – прогресс не отображается;
    • tpsIndeterminate – прогресс бар постоянно мерцает;
    • tpsNormal – обычное отображение прогресса;
    • tpsError – отображение ошибки;
    • tpsPaused – отображение паузы.

    Пример: SetAppTaskbarProgressState(tpsPaused);

    3. SetAppTaskbarThumbnailTooltip(const ToolTipStr: String) – позволяет установить текст всплывающей подсказки при наведении курсора мышки на экскиз.

    Пример: SetAppTaskbarThumbnailTooltip('Application');

    4. SetAppTaskbarOverlayIconRes(const ResOvIcon: String) – позволяет добавить иконку состояния к основному значку приложения. Эта процедура добавляет иконку из ресурсов программы установки.

    Пример: SetAppTaskbarOverlayIconRes('_IS_OVICON');

    Чтобы добавить иконку в ресурсы файла инсталлятора, нужно использовать директиву IconResource в секции [Setup] (см. далее).

    Пример: IconResource=ovicon>okR.ico

    где ovicon – имя ресурса (любое без пробелов); okR.ico – файл значка 16х16 пикс. с глубиной цвета 32-бит.
    Использовать значки большего размера нет смысла, т.к. они все равно автоматически будут уменьшены до 16х16.

    При записи в ресурсы инсталлятора к имени иконки будет добавлена приставка "_IS_". Таким образом для загрузки иконки из ресурсов инсталлятора необходимо указать имя "_IS_OVICON". Чтобы удалить иконку состояния, в функции необходимо передать пустое значение: SetAppTaskbarOverlayIconRes('');

    5. SetAppTaskbarOverlayIconFile(const FileIcon: String) – позволяет добавить иконку состояния к основному значку приложения, но уже из внешнего файла.

    Пример: SetAppTaskbarOverlayIconFile(ExpandConstant('{tmp}\okR.ico'));

    Чтобы удалить иконку состояния, в функции необходимо передать пустое значение: SetAppTaskbarOverlayIconFile('');

  • Компонент TNewStaticText поддерживает свойство "Transparent" со значением по умолчанию "True";

  • Компоненту TNewCheckListBox добавлена поддержка VCL Style, а также свойства: "ItemFontStyle", "SubItemFontStyle", "ItemFontColor", "SubItemFontColor";

  • Для Windows XP добавлена поддержка диалогов задач (TaskDialog), появившихся в Windows Vista. Это сделано на базе стороннего компонента SynTaskDialog.

  • Поддержка стандартных компонентов VCL и их свойств (в пределах возможностей библиотеки RemObjects Pascal Script): TMemoryStream, TResourceStream, TParser, TCollectionItem, TCollection, TIcon, TControlScrollBar, TScrollBox, TApplication, TScreen, TGroupBox, TNewGroupBox, TScrollBar, TTrackBar, TUpDown, THotKey, TImageList, TStatusBar, TListView, TListBox, TShape, TImage, TPaintBox, THeader, TTimer, TSpeedButton, TBitBtn, TMenu, TPopupMenu, TPicture, TPngImage, TTreeView, TTab, TPageControl, THint, TBalloonHint, TMargins, TPadding, TMetafile, TMetafileCanvas, TMonthCalendar, TDateTimePicker;

  • Поддержка компонентами свойств: OnMouseEnter, OnMouseLeave, DoubleBuffered и ParentDoubleBuffered;

  • У компонента TNewButton активирован метод Click;

  • Поддержка изображений в формате JPG, PNG;

  • Изменение классов: TForm = class(TCustomForm) - ранее был TScrollingWinControl; TCanvas = class(TCustomCanvas) - ранее был TPersistent;

  • Поддержка функций даты и времени (см. в SupportClasses.txt);

  • Поддержка шрифта FontAwesome. Введена переменная FontAwesome (класс TFontAwesome) для вывода значков на Canvas (см. в SupportClasses.txt и пример в Example_FontAwesome.iss);

  • Добавлена функция события InitializeLanguageDialog для кастомизации диалога выбора языка. При использовании директивы ShowLanguageDialog=yes эта функция выполняется ранее функции InitializeSetup. При ShowLanguageDialog=no вызов функции InitializeLanguageDialog пропускается. Если функция вернёт значение False, то диалог выбора языка установки показан не будет, даже если используется директива ShowLanguageDialog=yes. Имейте в виду, что события InitializeLanguageDialog выполняются до инициализации некоторых параметров программы установки;

  • Добавлена глобальная переменная SelectLanguageForm (класс TSelectLanguageForm) для доступа к элементам диалога выбора языка (поддерживаемые компоненты и свойства см. в прилагаемом файле "Support Classes.txt", пример в Example_InitializeLanguageDialog.iss).

Дополнения от RESTOOLS

  • Директива IS_ENHANCED для препроцессора Inno Setup, объявлена по умолчанию;

  • Константа {apphwnd} – возвращает дескриптор Application программы установки (эквивалент Application.handle в Delphi);

  • Функции и процедуры:

    • procedure Randomize – включение генератора случайных чисел;
    • function FormatFloat(const Format: String; Value: Extended): String; – форматирование числа с плавающей запятой в строку;
    • procedure ExtractTemporaryFileEx(const FileName: String; const DestDir: String); – распаковка файла в указанный каталог;
    • procedure ExtractTemporaryFileToStream(const FileName: String; const Stream: TStream); – распаковка файла в память;
    • procedure ExtractTemporaryFileToBuffer(const FileName: String; Buffer: Integer); – распаковка файла в буфер (макс. размер 256 Кб).
    • function ExtractTemporaryFileSize(const FileName: String): Cardinal; – получение размера файла;
    • function CastAnsiStringToInteger(var S: AnsiString): Longint;
    • function CastIntegerToAnsiString(const L: Longint): AnsiString;.
  • Функции Windows API:

    • function FindResource(ModuleHandle: Longint; ResourceName, ResourceType: PAnsiChar): Longint; – выясняет место ресурса с заданным типом и именем в указанном модуле;
    • function LoadResource(ModuleHandle: Longint; ResHandle: Longint): Longint; – загружает указанный ресурс в глобальную память;
    • function SizeofResource(ModuleHandle: Longint; ResHandle: Longint): Integer; – возвращает размер указанного ресурса в байтах;
    • function LockResource(ResData: Longint): Longint; – блокирует указанный ресурс в памяти;
    • function UnlockResource(ResData: Longint): Boolean; – разблокирует указанный ресурс в памяти;
    • function FreeResource(ResData: Longint): Boolean; – освобождает память связанную с ресурсом;
    • function LoadCursorFromFile(lpFileName: String): Cardinal; – создает и загружает курсор из указанного файла (.cur, .ani);
    • function LoadImage(hInst: LongInt; ImageName: String; ImageType: LongWord; X, Y: Integer; Flags: LongWord): LongInt; – загружает значок, курсор или изображение BMP;
    • function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: Integer; cxWidth, cyWidth: Integer; istepIfAniCur: LongWord; hbrFlickerFreeDraw: LongWord; diFlags: LongWord): Boolean; – рисует значок или курсор в контекст указанного устройства;
    • function DestroyIcon(hIcon: Integer): Boolean; – разрушает значок и освобождает любую память занятую значком;
    • function SetWindowText(hWnd: HWND; const lpString: String): Boolean; – изменяет текст заголовка заданного окна;
  • Директивы секции [Setup]:

    • BitmapResource – добавление в ресурсы файла установки изображений Bitmap.

      Пример: BitmapResource=MyBmp1>Resource\2000a.bmp

      Формат BitmapResource:

      BmpResName1>BmpFileName1,..BmpResNameN>BmpFileNameN

      Примечание: при записи к имени ресурса добавляется приставка "_IS_". Поэтому, при вызове такого ресурса к его имени следует добавлять "_IS_".

      Пример: Bitmap.LoadFromResourceName(HInstance, '_IS_MYBMP1');

    • IconResource – добавление в ресурсы файла установки значков Icon.

      Пример: IconResource=MyIcon1>Resource\2000a.ico

      Формат IconResource:

      IcoResName1>IconFileName1,..IcoResNameN>IconFileNameN

      Примечание: при записи к имени ресурса добавляется приставка "_IS_". Поэтому, при вызове такого ресурса к его имени следует добавлять "_IS_".

      Пример: LoadIcon(HInstance, '_IS_MYICON1');

    • RawDataResource – добавление в ресурсы файла установки других данных.

      Пример: RawDataResource=MyFile1>Resource\Readme1.txt

      Формат RawDataResource:

      RDResName1>RDFileName1,..RDResNameN>RDFileNameN

      Примечание: при записи к имени ресурса добавляется приставка "_IS_". Поэтому, при вызове такого ресурса к его имени следует добавлять "_IS_".

      Пример: TResourceStream.Create(HInstance, '_IS_MYFILE1', RT_RCDATA);

Практическое использование функций, компонентов и параметров расширенной версии смотрите в примерах сценариев (папка Examples_ENVCL).

Установка

Создайте копию папки с установленной программой Inno Setup v6.0.5 (официальный релиз). Переименуйте копию папки в удобное и понятное название, например "Inno Setup 6 VCL". Скопируйте в эту папку ВСЕ перечисленные выше файлы и подтвердите их замену.

Известные проблемы

Исправлено 16.02.2023

Некорректное отображением границы у компонента TRichEditViewer на пользовательских страницах в виде прозрачной окантовки вокруг элемента, под которой просматривается предыдущая или следующая страница инсталлятора. Для её устранения в секции [Code] компоненту TRichEditViewer необходимо добавить свойство BevelKind со значением bkNone (при инициализации или изменении текущей страницы (процедура CurPageChanged)).


Обновлено 02.06.2023

Обновлено 19.09.2023

is605ru's People

Contributors

leserg73 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

sektor2704

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.