Inno Setup VCL

Хамик

Старожил
@Leserg, спасибо за обновление. Можете еще добавить функции?
code_language.pascal:
// Date & Time function
function Date: TDateTime;
function DateTimeToStr(DateTime: TDateTime): String;
procedure DateTimeToString(var Result: String; const Format: String; DateTime: TDateTime);
function DateToStr(Date: TDateTime): String;
function DayOfWeek(Date: TDateTime): Integer;
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
function EncodeDate(Year, Month, Day: Word): TDateTime;
function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
function FormatDateTime(const Format: String; DateTime: TDateTime): String;
function Now: TDateTime;
function StrToDate(const S: String): TDateTime;
function StrToDateTime(const S: String): TDateTime;
function StrToTime(const S: String): TDateTime;
function Time: TDateTime;
function TimeToStr(Time: TDateTime): String;
 

Da-Bro

Мимокрокодил
Leserg, здравствуйте!
Можете, пожалуйста, еще добавить SelectLanguageForm и CenterInsideControl.
В пятой расширенной они распознаются, а тут увы.
 

Andreo Fadio

Старожил
Можете, пожалуйста, еще добавить SelectLanguageForm.
В пятой расширенной они распознаются
на то она и расширенная версия...

и в пятой обычной это есть, а в 6 версии данная функция заменена на FlipSizeAndCenterIfNeeded
 
Последнее редактирование:

Leserg

Участник
добавить SelectLanguageForm
Нет. Там вся фишка в том, что этот диалог должен отображаться до инициализации основного окна мастера установки, чтобы установить начальные значения строк мастера установки для выбранного языка. А настройки и кастомизацию окон мастера установки мы можем сделать только во время создания самого мастера. Чтобы можно было кастомизировать диалог выбора языка, его вызов следует разместить после создания основного окна установщика. Но в этом случае не все значения строк будут установлены согласно выбранному языку. Будет это выглядеть как полуперевод интерфейса (одни строки на английском, другие на выбранном языке). Я думаю это можно как-то решить, но сам я этим вопросом не справлюсь. Поэтому - нет. :sorry:

А вот делать индификатор IS_ENHANCED по-умолчанию как в старой версии, какое-то сомнительное решение.
Изначальная идея была воссоздать фишки Restools. В процессе выяснилось, что моих сил и знаний на это не хватает. Одного желания маловато будет. Что-то получилось, что-то с небольшими вариациями, что-то добавил свое. Если считаете что дефайн IS_ENHANCED не нужен, я его уберу. :yes:
 

Leserg

Участник
Очередное обновление Inno Setup 6.0.5 FullVCL XP.
  • Добавлены функции даты и времени:
    • function Date: TDateTime;
    • function DateTimeToStr(DateTime: TDateTime): String;
    • procedure DateTimeToString(var Result: String; const Format: String; DateTime: TDateTime);
    • function DateToStr(Date: TDateTime): String;
    • function DayOfWeek(Date: TDateTime): Integer;
    • procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
    • procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
    • function EncodeDate(Year, Month, Day: Word): TDateTime;
    • function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
    • function FormatDateTime(const Format: String; DateTime: TDateTime): String;
    • function Now: TDateTime;
    • function StrToDate(const S: String): TDateTime;
    • function StrToDateTime(const S: String): TDateTime;
    • function StrToTime(const S: String): TDateTime;
    • function Time: TDateTime;
    • function TimeToStr(Time: TDateTime): String;
  • Добавлены компоненты TMonthCalendar и TDateTimePicker. В среде Inno Setup это соответственно TNewMonthCalendar и TNewDateTimePicker.
  • Добавлена функция Windows API:
    • function SetWindowTheme(hWnd: HWND; pszSubAppName, pszSubIdList: PAnsiChar): Integer; – позволяет включать или выключать программно визуальные стили Windows для отдельного окна. Например, если у компонента TMonthCalendar (TNewMonthCalendar) отключить стиль Windows, то будет возможность кастомизировать цвета элементов календаря (см. пример в Example_DateTime.iss);
  • Добавлен (точнее возвращен) шрифт FontAwesome (значки) для поддержки визуальных стилей .vsf компонентами TMonthCalendar (TNewMonthCalendar) и TDateTimePicker (TNewDateTimePicker). Также его можно использовать для кастомизации страниц мастера установки (см. пример в Example_DateTime.iss);
  • Добавлена поддержка свойства StyleElements для стандартных компонентов Delphi. Позволяет отключать у компонентов элементы визуальных стилей при подключении стиля .vsf (см. пример в Example_DateTime.iss);
  • Расширен перечень поддерживаемых свойств у компонентов TCustomMemoryStream, TResourceStream, TFont, TCustomButton и TButton.
Примечание: полный перечень поддерживаемых классов со всеми изменениями и дополнениями смотрите в прилагаемом файле "Support Classes.txt".
По факту изменения коснулись только двух файлов расширенной версии: ISCmplr.dll и Setup.e32. Сборка мини осталась без изменений.
Обновление версий 6.2.1 и 6.2.2 ещё не делал.
 

Leserg

Участник
Очередное небольшое обновление Inno Setup 6.0.5 FullVCL XP.
  • Исправлена регистрация класса TGraphic;
  • Добавлена глобальная переменная FontAwesome (класс TFontAwesome) с поддержкой функций DrawChar, DrawChar2 и GetIcon, а также констант шрифта FontAwesome (см. прилагаемый файл "Support Classes.txt");
  • Добавлен пример сценария (файл "Example_FontAwesome.iss") использования класса TFontAwesome и применения указанных выше функций (из примера Example_DateTime.iss удалена демонстрация FontAwesome) ;
  • Экспериментальная функция. Для графической оболочки компилятора и редактора сценариев (Compil32.exe) добавлена возможность сохранения его настроек в файл Compil32.ini по месту размещения программы (переносной режим). Просто добавьте пустой файл Compil32.ini в папку с Compil32.exe. Удостоверьтесь, что в этом каталоге для файла Compil32.ini есть разрешения на запись. Если файл настроек отсутствует, то по умолчанию все настройки редактора хранятся в реестре.
 

tihiy_don

Старожил
Заметил интересную особенность. Отрисовываю объект так:
code_language.pascal:
  Page1Bar.FCreate(Page1.Handle);
  Page1Bar.FillColor(AlBlack);
  Page1Bar.Opacity(0.8);
  Page1Bar.SetBounds(10, NSSY(100), 590, NSSY(180));
  Page1Bar.CornerStyle(NSX(10), NSY(10), [tcTopLeft, tcTopRight, tcBottomLeft, tcBottomRight], ctRound);
  FMXForm.AddMousedownControls(Page1Bar.Handle);
Форма шириной 600. В ванильной версии отступ есть, а в VCL-версии отступа с правого края нет, прям к краю формы объект прилегает и приходится устанавливать значение на 580. Что по логике верно, 10+580 = 590 (10 отступ как положено). Косяк ванильной версии Inno 6.2.2?
 
Последнее редактирование:

Crachlow

Старожил
Заметил интересную особенность. Отрисовываю объект так:
code_language.pascal:
  Page1Bar.FCreate(Page1.Handle);
  Page1Bar.FillColor(AlBlack);
  Page1Bar.Opacity(0.8);
  Page1Bar.SetBounds(10, NSSY(100), 590, NSSY(180));
  Page1Bar.CornerStyle(NSX(10), NSY(10), [tcTopLeft, tcTopRight, tcBottomLeft, tcBottomRight], ctRound);
  FMXForm.AddMousedownControls(Page1Bar.Handle);
Форма шириной 600. В ванильной версии отступ есть, а в VCL-версии отступа с правого края нет, прям к краю формы объект прилегает и приходится устанавливать значение на 580. Что по логике верно, 10+580 = 590 (10 отступ как положено). Косяк ванильной версии Inno 6.2.2?
InnoSetup с версии 6.0 добавляет на форму X = 8 пикселей . к Y = 4 пикселя.
 

Crachlow

Старожил
Да пока так накидал временно, потом исправлю.
Мы как то с @audiofeel этот вопрос разбирали, там с dpi проблема была очень существенная, по-моему решили это частично, убрав все гвозди т.е. стало выглядеть примерно так
Page1Bar.SetBounds(10, 100, 590, 180);
 

tihiy_don

Старожил
Мы как то с @audiofeel этот вопрос разбирали, там с dpi проблема была очень существенная, по-моему решили это частично, убрав все гвозди т.е. стало выглядеть примерно так
Я пока не заморачивался. Делаю NS и всё. Тут просто временно накидал. Куда кстати этот пенсионер пропал?
 

tihiy_don

Старожил
@Crachlow, вроде как без работы сидел. Может нашёл работу. Раньше с ним хорошо общались, потом он на меня бочку накатил, но это уже другая история. На филефорумс тоже его не видно.
 

Crachlow

Старожил
@Crachlow, вроде как без работы сидел. Может нашёл работу. Раньше с ним хорошо общались, потом он на меня бочку накатил, но это уже другая история. На филефорумс тоже его не видно.
На фф тоже с 11 мая не был. Думаю не в работе дело.
 
Сверху