Как сделать собственный диалог в InstallShield?

Я пытаюсь понять InstallShield (2009)/InstallScript на лету, потому что я модифицирую чужой скрипт установки.

В одном из диалогов во время процедуры установки ранее было одно текстовое поле, запрашивающее экземпляр SQL Server, предполагая определенное имя базы данных. Теперь я только что завершил усовершенствование, позволяющее вам выбрать любое имя базы данных, а не только имя по умолчанию, и мне нужно добавить поле в это диалоговое окно, чтобы пользователь мог ввести выбранное имя базы данных. Обезьяна видит, обезьяна делает, просто создайте новый элемент управления, продублируйте и адаптируйте любую функциональность формы для первого текстового поля — достаточно просто, верно?

Эм... тут проблема. Кажется, что форма «SdShowDlgEdit1» — это общая вещь, которая поставляется с InstallShield и используется везде, где у вас есть диалоговое окно, для которого требуется одно текстовое поле. Измените эту форму, и она изменится везде, где она называется... так что теперь у меня есть ложное второе текстовое поле, появляющееся повсюду в моей установке, где раньше было одно текстовое поле.

Упс. Отмените изменения и измените ссылку на «SdShowDlgEdit2», которая, как вы уже догадались, является стандартной формой InstallShield для диалогов, требующих 2 текстовых поля. Теперь это было бы здорово .... за исключением того, что предыдущий разработчик добрался до меня и добавил кнопку «Обзор» в эту форму для места, где ему нужно было второе текстовое поле, содержащее путь к папке. Мне не нужна эта кнопка "Обзор", и я не могу ее удалить.

Вот я и думаю, а почему бы мне не создать свою собственную форму и не попасть под чьи-то пальцы? Итак, я клонирую форму, переименовываю новый экземпляр в «EnterDbDetails», удаляю кнопку «Обзор» и придаю форме правильный вид.

Затем я возвращаюсь к InstallScript для перенаправления на «EnterDbDetails» и обнаруживаю, что функция EzDefineDialog требует, чтобы я передал «ID ресурса» формы. Теперь, что это было снова... 12018... отлично... заполните все необходимые детали, скомпилируйте, соберите и запустите. Выглядит красиво, все правильные значения по умолчанию заполнены в двух текстовых полях — но эй! Почему там кнопка просмотра? И почему текст на этикетках не тот, что я поставил?

Вернитесь к InstallScript, проверьте идентификатор ресурса — оказывается, исходный «SdShowDlgEdit2» также имеет идентификатор ресурса 12018. Что ж, это прекрасно объясняет. Глупо, что InstallShield позволяет вам иметь две формы с одним и тем же идентификатором, но как бы там ни было... Итак, давайте вернемся к моей форме "EnterDbDetails" и изменим идентификатор...

введите здесь описание изображения

... но свойство идентификатора ресурса доступно только для чтения! Что за хрень?

Так что теперь я не могу использовать ни одну из стандартных форм, и я не могу использовать пользовательскую форму, потому что она не позволяет мне изменить идентификатор ресурса.

Я в тупике. Может ли кто-нибудь объяснить, как вы должны делать что-то подобное, что действительно должно быть самой простой вещью в мире?


person Shaul Behr    schedule 01.03.2012    source источник


Ответы (4)


Создание новых настраиваемых диалоговых окон в проектах InstallScript и InstallScript MSI


Цитата с сайта (издание 2015 г.):

Чтобы создать настраиваемый диалог, вам необходимо выполнить следующие общие шаги:

  1. Используйте мастер создания диалоговых окон, чтобы добавить в проект новое пользовательское диалоговое окно. Дополнительные сведения см. в разделе Использование мастера создания диалоговых окон для добавления нового настраиваемого диалогового окна в проект InstallScript или MSI-проект InstallScript.
  2. Добавьте элементы управления в диалог. Дополнительные сведения см. в разделе Добавление элемента управления в диалоговое окно в проекте MSI InstallScript или InstallScript.
  3. Создайте функцию сценария, которая загружает диалоговое окно в память, отображает его на экране, обрабатывает взаимодействие конечного пользователя с элементами управления диалогового окна и закрывает диалоговое окно, когда пользователь завершает работу с ним. Дополнительные сведения см. в разделе Использование InstallScript для реализации настраиваемых диалоговых окон.
person Christopher Painter    schedule 02.03.2012
comment
Спасибо! Жаль, что мне пришлось создавать с нуля, и я не мог скопировать предыдущий диалог. К счастью, это было не слишком сложно. - person Shaul Behr; 04.03.2012
comment
Этот ответ подвержен гниению ссылок. - person Kenneth K.; 28.07.2015

Чтобы создать новое диалоговое окно: Откройте представление «Диалоги». Представление «Диалоги» находится в разделе «Пользовательский интерфейс» списка представлений. Щелкните правой кнопкой мыши проводник «Все диалоги» и выберите «Новое диалоговое окно». Откроется мастер диалогов. Щелкните Далее, чтобы закрыть панель приветствия. На панели «Шаблон диалогового окна» нажмите «Панель мастера интерьера» и установите флажок «Позвольте мне вставить это диалоговое окно в последовательность пользовательского интерфейса». На панели «Пользовательский интерфейс» выберите «Установка» в списке «Последовательность пользовательского интерфейса». В списке диалогов выберите InstallWelcome. На основе этих вариантов InstallShield вставит новое диалоговое окно сразу после диалогового окна InstallWelcome. На панели «Положение диалогового окна и условия» оставьте настройки по умолчанию и нажмите «Готово». Ваш новый диалог появится в списке диалогов. Щелкните диалоговое окно правой кнопкой мыши и выберите «Переименовать». Переименуйте диалоговое окно WelcomeBitmap. Используя ту же технику, вы можете вставлять дополнительные диалоги в пользовательский интерфейс вашей установки.

На этом шаге вы измените только что созданное диалоговое окно WelcomeBitmap: во-первых, создайте растровое изображение (с помощью такой программы, как Microsoft Paint) размером 300 на 150. Откройте представление диалогов. Разверните узел диалогового окна WelcomeBitmap. Щелкните Английский (США), чтобы открыть редактор диалоговых окон. Щелкните текстовое поле Полужирный заголовок диалогового окна в верхней части диалогового окна. В поле Текст введите Приветственное растровое изображение. Это изменяет основной заголовок диалога. Щелкните текстовое поле Dialog Normal Description в верхней части диалогового окна. В поле Текст введите Отображает растровое изображение моего приветствия. Это изменяет описание диалога. Нажмите кнопку «Растровое изображение» на панели инструментов «Управление диалоговыми окнами» и с помощью курсора перетащите поле в диалоговое окно. Установите для высоты значение 150, а для ширины — 300. В поле «Файл» перейдите к файлу растрового изображения, созданному на шаге 1. диалоговое окно появится после приветственного диалогового окна установки.

person rightcodeatrighttime    schedule 13.03.2014

Вам нужно отредактировать ResourceID (что-то уникальное) в таблице Dialog, которая находится в Direct Editor в разделе Additional Tools в Installation Designer.

person Markh    schedule 21.09.2015

Настраивая стандартные диалоги InstallShield, такие как sdWelcome, sdFinish и sdFinishReboot, вы сможете использовать стандартные API-интерфейсы диалогов с выполненными настройками.

person singidunumx    schedule 14.03.2018