Обсуждение Inno Setup 6

Как вам Inno Setup 6?


  • Всего проголосовало
    31

Leserg

Участник
Хотелось бы видеть еще несколько фичей.
CenterInsideControl
WizardForm.CancelButton.Click
SelectLanguageForm
Если не трудно, распишите каждый пункт подробно: зачем, что делает, примеры (лучше готовые сценарии для наглядности).
По SelectLanguageForm: я так понимаю - это диалог выбора языка установки? Но он же есть в Inno! Или вы имеете в виду что-то другое?
 

Xabib2302

Новичок
По SelectLanguageForm: я так понимаю - это диалог выбора языка установки?
Да. Но у меня вылетает ошибка.
WizardForm.CancelButton.Click
Используется в скрипте для предварительной деинсталляции старой версии программ

Код:
#include "UninstallMyApp.iss"

[Code]
function UninstallMyApp(): Boolean;
var
    Buff: String;
    i, id : Integer;

begin
    Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
    if not Result then Result := not FileExists(RemoveQuotes(Buff));
    if not Result then id := MsgBox('Перед установкой необходимо удалить предыдущую версию {#Name}. Продолжить?', mbError, MB_YESNO);
    case id of
      IDYES:  try
                  Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i);
              finally
                  Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff );
                  if not Result then MsgBox('Удаление завершилось неудачей!', mbError, MB_OK);
              end;
      IDNO:  WizardForm.CancelButton.Click;
    end;
end;
У меня используется в коде для смены пути в строке DirEdit если в инсталляторе есть портативная версия программы. И так же помогает если пользователь случайно выбрал установку, а не распаковку, чтобы при возвращении к странице компонентов в странице SelectDirPage поменялся путь на {src}
 

Вложения

Leserg

Участник
--
SelectLanguageForm
--
Да. Но у меня вылетает ошибка.
А-а, так вы хотите получить доступ к свойствам этого окошка.
Тогда да, ошибка верная, разработчик не предоставил такой возможности.
Посмотрю, что можно сделать; обещать ничего не буду.

Используется в скрипте для предварительной деинсталляции старой версии программ
--
IDNO: WizardForm.CancelButton.Click;
--
А здесь вы имитируете нажатие кнопки на форме, в данном случае CancelButton.
А в чем смысл этого действия? Я не совсем понимаю...
Думаю с добавлением поддержки процедуры Click сложностей не будет.

--
CenterInsideControl
--
У меня используется в коде для смены пути в строке DirEdit...
Если не ошибаюсь, то теперь вместо CenterInsideControl используется новая процедура FlipSizeAndCenterIfNeeded (загляните в справку, глава Pascal Scripting: Support Classes Reference).
Она имеет вид
code_language.pascal:
procedure FlipSizeAndCenterIfNeeded(const ACenterInsideControl: Boolean; const CenterInsideControlCtl: TWinControl; const CenterInsideControlInsideClientArea: Boolean);
Правда, как её правильно применять подсказать затрудняюсь.
 

Shegorat

Lord of Madness
Администратор
@Leserg, может стоит оформить информацию по расширенной инно в отдельную тему или ресурс? А то так сразу и не найдешь в сообщениях
 

Leserg

Участник
@Xabib2302, возможность модификации SelectLanguageForm посредством кода сценария добавить не смогу. У Restools для него ещё используется дополнительная функция InitializeLanguageDialog. В оригинальной инке инициализация диалога с выбором языка выполняется в функции InitializeSetup. И как отделить диалог от этой функции, куда вставить и как связать с вызовом из кода сценария я не понимаю. В общем здесь я бессилен. :scratchhead:

Имхо, модификация данного диалога это излишняя мера. В тексте изменений от Restools пишется, что он отделил данное окно для того, чтобы его можно было скинировать, т.к. обычным спобом это сделать не удавалось. В моей сборке скинизация внедрена в код инки и диалог выбора языка скинируется без проблем.

WizardForm.CancelButton.Click
Включил поддержку метода Click для кнопок. Он уже был в коде, только закомментирован (отключен), поэтому сложностей никаких не возникло (это и другие изменения будут доступны в версии 6.1.0). :dance:

Я уже писал, что вместо неё используется новая процедура FlipSizeAndCenterIfNeeded (она включает в себя функцию CenterInsideControl).

может стоит оформить информацию по расширенной инно в отдельную тему или ресурс?
Возможно вы правы. Просто я не знаю как правильно это сделать (уже есть тема Enhanced Inno ISCmplr Setup и VCL Styles for Inno Setup – а моя модификация это всё вместе). Плюс у меня ещё нет связной информации по всей модификации, к тому же она постоянно обновляется. Из-за нехватки времени я перестал вести историю изменений, поэтому не готов сделать окончательную публикацию. :$
 

Xabib2302

Новичок
Имхо, модификация данного диалога это излишняя мера.
По сути да. Я соглашусь с вами.
Включил поддержку метода Click для кнопок. Он уже был в коде
Спасибо. :happy::happy::happy:
это и другие изменения будут доступны в версии 6.1.0
Жду новую версию.
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
Возможно вы правы. Просто я не знаю как правильно это сделать (уже есть тема Enhanced Inno ISCmplr Setup и VCL Styles for Inno Setup – а моя модификация это всё вместе). Плюс у меня ещё нет связной информации по всей модификации, к тому же она постоянно обновляется. Из-за нехватки времени я перестал вести историю изменений, поэтому не готов сделать окончательную публикацию. :$
Можно пока не делать финальную публикацию, просто вынести информацию в тему к примеру ISE (Inno Setup Extended), чтобы её можно было быстрее найти
 

Leserg

Участник
Всем привет. Сожалею, но вынужден приостановить (возможно навсегда) свою разработку из-за положительного детекта антивирусного ПО (в частности Microsoft Defender и Kaspersky) на стаб-файл Setup.e32 и создаваемый на его основе файл деинсталляции. Служба поддержки этих антивирусов сообщила, что сам файл является чистым, а детект ложным. Но при создании любого инсталлятора, файл деинсталляции начинает представлять угрозу и соответственно блокируется. Это касается версии 6.0.5 и последующих, более ранние свои версии не проверял. Что служит спусковым крючком положительного детекта - не знаю, почему вдруг файл начинает представлять собой угрозу - компании не сообщают. Таким образом, воздержитесь от использования моей версии. Приношу свои извинения за предоставленные неудобства и обещания. :(
 

Хамик

Старожил
Всем привет. Сожалею, но вынужден приостановить (возможно навсегда) свою разработку из-за положительного детекта антивирусного ПО (в частности Microsoft Defender и Kaspersky) на стаб-файл Setup.e32 и создаваемый на его основе файл деинсталляции. Служба поддержки этих антивирусов сообщила, что сам файл является чистым, а детект ложным. Но при создании любого инсталлятора, файл деинсталляции начинает представлять угрозу и соответственно блокируется. Это касается версии 6.0.5 и последующих, более ранние свои версии не проверял. Что служит спусковым крючком положительного детекта - не знаю, почему вдруг файл начинает представлять собой угрозу - компании не сообщают. Таким образом, воздержитесь от использования моей версии. Приношу свои извинения за предоставленные неудобства и обещания. :(
На NSIS тоже детект хороший идет, но это не влияет на выпуск новых версий. На вашем месте я бы продолжал, Вы делаете доброе дело.
 

Krinkels

Он где то тут
Администратор
Не стоит опускать руки и приходить в отчаяние, благодаря таким как вы инка и живет
 

Andreo Fadio

Ветеран
из-за положительного детекта антивирусного ПО (в частности Microsoft Defender и Kaspersky). Это касается версии 6.0.5
Как пользователь вашей сборки, но версии 6.0.5 с поддержкой XP.
Такой акивности антивирусов не замечено (в частности от Microsoft Defender и Kaspersky).
 

sergey3695

Ветеран
Модератор
Поведение элементов ничем на форме не отличается от ранних версий Inno – они будут размещены на форме корректно
поставил 6.05. заменил на vclmod_mini (или full) (если отдельно заменить Compil32.exe, то проблемы нет)
стоит увеличение шрифта в системе (по умолчанию) (монитор такой). с modern стилем такая же проблема.
 

Leserg

Участник
стоит увеличение шрифта в системе (по умолчанию) (монитор такой). с modern стилем такая же проблема.
Спасибо. Исправил.
Версию 6.0.5 пересобрал, также включил в неё поддержку свойств ItemFontStyle и SubItemFontStyle (по аналогии с модификацией от Restools) компонентом TNewCheckListBox (как Mini так Full VCL) и включил поддержку метода Click для кнопок (только Full VCL).

Скачать можно здесь. Рекомендую обновиться.
Пока реакция антивирусов на стаб-файл Setup.e32 - нулевая. Надеюсь таковой и останется.
Там же по ссылке доступны установочные версии. В папке "Install" архив innosetup-6.0.5VCL.rar содержит стандартный установщик Inno Setup с поддержкой MiniVCL. Архив innosetup-6.0.5VCLR.rar содержит установщик как Mini так Full VCL по выбору, коллекцию стилей и редакторы стилей, а также примеры для расширенной версии (на базе от RESTOOLS). Все тоже самое доступно по отдельности, смотрите по ссылке в соответствующих папках.

Онлайн справка на русском теперь будет доступна здесь. Пока только по препроцессору, в дальнейшем планирую добавить и основную.

Пока все.
 
Сверху