Inno Setup VCL

sergey3695

Ветеран
Модератор
@Leserg, как будет время попробую у себя пересобрать, пока некогда смотреть. Спасибо.
 

Leserg

Участник
Очередное обновление Inno Setup v6.0.5 VCL (XP).

1) Моя модификация компонента TNewCheckListBox заменена на официальную версию (разработчик исправил мои ошибки и доработал код). Теперь с версии Inno Setup 6.1.3 в компоненте TNewCheckListBox свойства ItemFontStyle и SubItemFontStyle будут официально.

2) Вернул обратно стандартное значение ошибки в классе TTaskbarProgressState
(было tpsErrog - теперь снова стандартное tpsError)

3) Переделал функцию записи ресурсов и добавил вывод сообщения в лог компиляции.

4) Добавил поддержку диалогов задач (TaskDialogMsgBox и SuppressibleTaskDialogMsgBox) в Windows XP на базе компонента SynTaskDialog. Правда вид этих диалогов на Windows XP несколько отличается от вида на системах Windows Vista и выше. Не поддерживаются многострочные названия на кнопках выбора задачи - вторая строка будет отображаться в виде всплывающей подсказки. Не поддерживается значок щита, сигнализирующий о необходимости повышенных прав для выполнения заданного действия при выборе задачи. Не поддерживается вывод иконки программы установки - в этом случае выводится диалог без значка.
Вид диалога задач на Windows 10:
TaskDialogW10.png

Вид того же самого диалога на Windows XP:
TaskDialogXP.png
Отличия:
1) Значок щита игнорируется
2) Вторая строка на кнопке выводится всплывающей подсказкой.
3) Название кнопки отмены (Cancel) всегда будет на английском (пока не смог разобраться в коде для возможности локализации из языковых файлов *.isl).
В остальном поведение такого диалога задач на Windows XP ничем не отличается от настоящего.

Всем, кто пользуется данной разработкой, рекомендую обновиться.
 

Leserg

Участник
Небольшое обновление Inno Setup v6.0.5 VCL (XP) .

1. Из библиотеки VCL Style вырезан шрифт Awesome и функции его обработки. В инке это шрифт не использовался, а место занимал в стаб-файле (Setup.e32) около 250 Кб.
2. Добавлена поддержка локализации из языковых файлов кнопки "Cancel" для диалога задач, который установщик может показать на системах Windows XP.
3. Изменены функции SetAppTaskbarOverlayIconRes и SetAppTaskbarOverlayIconFile (установка значка состояния на Панели задач. Теперь имеется возможность убрать значок, передав в функции пустую строку: SetAppTaskbarOverlayIconRes('') и SetAppTaskbarOverlayIconFile('').
4. В секции Setup добавлена директива DirSelectModern, которая позволяет активировать диалога выбора папки в стиле Vista. Работает на системах Vista и выше, на системе Windows XP будет показан стандартный диалог Inno Setup. Значение по умолчанию - False. Чтобы активировать стиль, необходимо указать директиву со значением True.
5. Добавлена процедура ExtractTemporaryFileToBuffer – распаковка файла в буфер. Эта функция была в расширенной версии от Restools: procedure ExtractTemporaryFileToBuffer(const FileName: String; Buffer: Integer). Пример использования смотрите в файле Example_ExtractTemporaryFileToBuffer.iss.

Изменения 3-5 доступны только в расширенном издании (Full VCL Mod - IS6.0.5FullVclMod(xp).rar).
 

Timick

Старожил
Доброго времени суток!
А "заявки" принимаются?))

Хочется потихоньку уйти от расширенной версии инно в пользу вашей сборки, но не хватает некоторых моментов.

1. Автодополнение, показ аргументов функции, и все вот это.
2. Переход к методам при удержании Ctrl и клика левой кнопкой мыши на название метода.

Конечно, после условной связки VS + ReSharper, то, что есть в расширенной версии кажется немного смешным (по правде сказать, после Решарпера мне и стандартные фичи Вижлы кажутся убогими), но это лучше, чем вообще ничего.

Спасибо :yes:
 

Leserg

Участник
А "заявки" принимаются?
@Timick, я всего лишь любитель. Все что вы озвучили выходит за рамки моих познаний и опыта в программировании. Поэтому пользуйтесь редакторами, которые на ваш взгляд считаете удобными. Кстати на форуме Inno приводили в пример редактор от Restool и просили добавить возможности, о которых вы просите. На что разработчик ответил, что затрудняется это реализовать. Автор Inno Script Studio, Tim Chilvers (Kymoto), пообещал рассмотреть возможность добавления этого функционала в новой версии своего редактора. Но пока он находится в поиске решения.
 

Nemko

Дилетант
Модератор
Проблема с выгрузкой ExtractTemporaryFileToBuffer, если размер файла больше 65535 байт (Word 16 бит), изображение не передается через CastStringToInteger, хотя тем же методом (ниже пример) работает в Inno EE и в Inno VCL (если размер изображения < 65535 байт).
Может, делаю что-то не так?
Код:
var
  Buffer: String;
  FileSize: LongInt;
begin
  FileSize:= ExtractTemporaryFileSize(FileName);
  SetLength(Buffer, FileSize);
  ExtractTemporaryFileToBuffer(FileName, CastStringToInteger(Buffer));
  Result:= spImgLoadImageFromBuffer(Handle, CastStringToInteger(Buffer), FileSize, Left, Top, Width, Height, Stretch, IsBkg);
  SetLength(Buffer, 0);
З.Ы.: Метод CastAnsiStringToInteger, не принимает ISSprite

З.Ы.З.Ы.: Я не внимательный, вот ответ на мой вопрос.
 
Последнее редактирование:

Xabib2302

Новичок
@Leserg, куда пропал ваш мод Inno Setup? В папке Install на диске я не вижу. Мне нужна сборка т.к. почему то у меня не работают сетапники на Win XP
 

Yaroslav950

Участник
Я так понимаю новый Inno Setup 6.2.2 не поддерживает botva. Мне выдает ошибку, что не находит данyую строчку. FileSize:= ExtractTemporaryFileSize(Filename); Как с этим быть, может кто знает?.
 

Yaroslav950

Участник
Ну на inno setup ultra не было ошибок,что мне надо написать,чтобы убрать ошибку.
 

Nemko

Дилетант
Модератор
Yaroslav950, правильно, что не было ошибок, ведь Inno EE поддерживает функцию ExtractTemporaryFileSize а Inno Setup 6.2.2 - нет.
Andreo Fadio так и ответил вам. А что написать, то нужно изменить метод ввода\вывода файла изображения в коде, проще говоря - методом распаковки файла изображения во временную папку, а затем его загрузкой, пример ниже.
Код:
[Setup]
AppName=Test
AppVerName=Test
CreateAppDir=no

[Files]
Source: Files\*; Flags: dontcopy

[Modules]
#include "Modules\botva2.iss"

[Code]
procedure InitializeWizard;
begin
  with WizardForm do begin
    ExtractTemporaryFile('botva2.dll');
    ExtractTemporaryFile('MyImage.png');

    ImgLoad(Handle, ExpandConstant('{tmp}\MyImage.png'), 0, 0, Width, Height, True, True);
    ImgApplyChanges(Handle);
  end;
end;

procedure DeinitializeSetup;
begin
  gdipShutdown;
end;
 
Сверху