Что нового?

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

Как вам Inno Setup 6?


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

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), чтобы её можно было быстрее найти
 
Сверху