VCL Styles for Inno Setup

DLL VCL Styles for Inno Setup 1.5.4.1

Нет прав для скачивания
Я хочу уточнить. Вы использовали установку Inno Setup из архива innosetup-6.0.3VCL.rar. Правильно?
И в этом случае проявлялась ошибка.
После этого, вы установили Inno Setup из официального релиза, а потом вручную
Так? И проблема ушла.
Да.
Да, действительно баг с отображением компонента TRichEditViewer - в нем отсутствует стиль WS_EX_CLIENTEDGE. Теперь бы ещё разобраться, почему так вышло. :scratchhead:
Да там все просто.
При установке как оказалось побился чуть-чуть файл (Setup.e32) в сравнение по HEX содержанию пару строк оказалось сдвину и занулены.
Сам не пойму как так получилось :scratchhead: (в первой такое)
 
Leserg, подскажите ответ на вопрос. Как присвоить TNewStaticText и TLabel цвет при подключение скина?
Если выключить скин - все как надо собирает (надпись - красная, текст - оранжевый, ссылки - синие), со скином все в один тон красит и команда
Код:
....Font.Color:=
как бы не работает.
 
Как присвоить TNewStaticText и TLabel цвет при подключение скина?
Никак (в рамках проекта Inno Setup).

При включении стиля визуализации все пользовательские настройки компонентов игнорируются и устанавливаются те, которые заданы в используемом стиле. Это не я придумал, так работают стили от любого разработчика. Или вы используете стиль, или вы его не используете. Одно из двух. Если вы создаете приложение в среде разработки, допустим в Embarcadero Delphi, и используете стилевое оформление GUI, то вы можете отменить применение стиля для заданного класса, например для TLabel, и присвоить ему нужные свойства (например, цвет текста). Для этого нужно создать перехватчик стиля, который будет перерисовывать нужный вам компонент с указанными свойствами. Пример того, как это можно осуществить, можно посмотреть здесь. Но сделать это в Inno Setup - архисложная задача. Нужно заново переписать Inno Setup и дополнить стороннюю библиотеку Pascal Script, которая используется для обработки секции Code, соответствующим кодом.
 
Leserg, нашел проблему просвета элемента при одновременном использование:
Код:
[Setup]
DisableWelcomePage=no
SetupStyleFile="....vsf"
и
Код:
procedure InitializeWizard();
begin
  //удаление пункта О программе
  WizardForm.Position:= poScreenCenter;
end;
Наблюдаем ту проблему отсутствия стиля WS_EX_CLIENTEDGE
Убираем какую-нибудь одну из трех строчек и все компилируется нормально без проблемы.
 

Вложения

это сточка

делает destroy, потом create окна, создание окна должно хуком перехватываться, там и добавить нужный стиль (если это не сделано)
Так если стиль использовать и эту сточку - то все нормально срабатывает и работает. Только при совпадение 3 строк компилятор как-то странно реагирует на такое совпадение.
 
Наблюдаем ту проблему отсутствия стиля WS_EX_CLIENTEDGE
Как раз здесь со стилем WS_EX_CLIENTEDGE все в порядке. Причина бага в другом. Я пока не могу разобраться, почему так происходит. Поэтому пока воздержитесь от использования WizardForm.Position. По умолчанию окно инсталлятора и так размещается по центру экрана.
 
Leserg, при стандартных сообщениях (предупреждениях) на SelectDirPage:

или использование стандартных строк секции [setup], например:
Код:
[Setup]
EnableDirDoesntExistWarning=yes
при переходе на страницу с компонентами или задачами - ломается скин чекбоксов.
должен быть, к примеру:

будет так:

листаем вперед и возвращаемся назад скин на чекбоксах опять такой какой должен быть.
 
а почему именно от нее? Так-то она работает со стилем и командой на показ начальной страницы по-отдельности.
Потому что при использовании "LicenseFile=", "InfoBeforeFile=" или "InfoAfterFile=" также проявляется данная ошибка отображения контролла. Поэтому пока воздержитесь от использования WizardForm.Position. По умолчанию окно инсталлятора и так размещается по центру экрана.

при стандартных сообщениях (предупреждениях) на SelectDirPage
Пожалуйста, давайте полный текст сценария. Если я просто добавлю "EnableDirDoesntExistWarning=", то описанной вами проблемы не наблюдаю.
 
Кстати, такая же ошибка (отмена стиля для CheckBox'ов на странице выбора компонентов при вызове MessageBox) происходит с оригинальным плагином VCL Style.
 
Обновил файлы Inno с использованием VCL Style.

Поправил (как смог) ошибки для стандартных страниц инсталлятора:

- просвет в компоненте TRichEditViewer при использовании в секции кода команды WizardForm.Position;
- потеря скина у чекбоксов на странице с компонентами при использовании в секции Setup параметра
EnableDirDoesntExistWarning=yes или DirExistsWarning=yes.

При использовании собственных страниц с этими компонентами и проявлении вышеописанных ошибок (возможные решения):
- для компонента TRichEditViewer необходимо задать свойство BevelKind := bkNone;
- для компонента TNewCheckListBox (список с чекбоксами) в процедуре CurPageChanged (когда происходит переход на страницу с этим компонентом) необходимо переназначить свойство компонента: сначала установить BorderStyle := bsNone, а следующей командой BorderStyle := bsSingle вернуть исходное значение. Этим действием мы заставим библиотеку перерисовать элемент заново, что восстановит скин.
 
- потеря скина у чекбоксов на странице с компонентами при использовании в секции Setup параметра
EnableDirDoesntExistWarning=yes или DirExistsWarning=yes.
Не знаю что должно было поменяться от фикса, но результат тот же происходит при использование команд.
(использую компилятор MiniVLC от 1 декабря)

Но за совет по обновлению свойств работает отлично, за него спасибо :)
 
В связи с выходом финальной версии Inno Setup 6.0.4 обновлены компоненты программы на модифицированные версии с поддержкой стилей VCL.
Ссылка на общую папку с ресурсами: здесь.
 
The skin will not apply to browse folder windows' scroll bars :(

also It has a long load time :(

also, the VCL style will stretch the progress bar image which is not what I need.

How to avoid such effects and have a correct progress bar show with the specific lined image?

dotnetfx_installer3.jpg
 
Последнее редактирование:
Назад
Сверху