Inno Setup VCL

  • Автор темы Автор темы 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 ничем не отличается от настоящего.

Всем, кто пользуется данной разработкой, рекомендую обновиться.
 
Небольшое обновление 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).
 
Доброго времени суток!
А "заявки" принимаются?))

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

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

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

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

З.Ы.З.Ы.: Я не внимательный, вот ответ на мой вопрос.
 
Последнее редактирование:
@Leserg, куда пропал ваш мод Inno Setup? В папке Install на диске я не вижу. Мне нужна сборка т.к. почему то у меня не работают сетапники на Win XP
 
Я так понимаю новый Inno Setup 6.2.2 не поддерживает botva. Мне выдает ошибку, что не находит данyую строчку. FileSize:= ExtractTemporaryFileSize(Filename); Как с этим быть, может кто знает?.
 
Ну на inno setup ultra не было ошибок,что мне надо написать,чтобы убрать ошибку.
 
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;
 
Назад
Сверху