Как сделать собственный диалог в InstallShield? - PullRequest
3 голосов
/ 01 марта 2012

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

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

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

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

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

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

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

enter image description here

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

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

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

Ответы [ 4 ]

4 голосов
/ 02 марта 2012

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


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

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

  1. Используйте мастер создания диалогов, чтобы добавить новый настраиваемый диалог в ваш проект.Для получения дополнительной информации см. Использование мастера создания диалогового окна для добавления нового настраиваемого диалогового окна в проект MSScript InstallScript или InstallScript.
  2. Добавление элементов управления в диалоговое окно.Для получения дополнительной информации см. Добавление элемента управления к диалогу в MSI-проекте InstallScript или InstallScript.
  3. Создание функции сценария, которая загружает диалоговое окно в память, отображает его на экране, обрабатывает взаимодействие конечного пользователя с диалоговым окном.контролирует и закрывает диалог, когда пользователь заканчивает работу с ним.Для получения дополнительной информации см. Использование InstallScript для реализации пользовательских диалогов.
1 голос
/ 13 марта 2014

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

На этом шаге вы измените только что созданный диалог WelcomeBitmap: Сначала создайте растровое изображение (используя программу, подобную Microsoft Paint) размером 300 на 150. Откройте диалоговое окно. Разверните узел диалога WelcomeBitmap. Нажмите «Английский (США)», чтобы открыть редактор диалогов. Щелкните текстовое поле «Жирный заголовок диалога» в верхней части диалогового окна. В текстовом поле введите Welcome Bitmap. Это меняет основной заголовок диалога. Щелкните текстовое поле «Обычное описание диалога» в верхней части диалогового окна. В текстовом поле введите Отображение моего приветствия. Это меняет описание диалога. Нажмите кнопку «Растровое изображение» на панели инструментов «Диалоговое управление» и с помощью курсора перетащите блок в диалоговом окне. Установите Высота до 150, а Ширина до 300. В поле «Файл» перейдите к файлу растрового изображения, созданному на шаге 1. После перестройки проекта (нажатием клавиши F7) и его запуска (нажатием комбинации клавиш CTRL + F5) после диалогового окна установки приветствия появится диалоговое окно «Приветствие».

0 голосов
/ 14 марта 2018

С помощью стандартных диалогов InstallShield, таких как sdWelcome, sdFinish и sdFinishReboot, вы сможете использовать API-интерфейсы сценариев по умолчанию для диалогов с выполненной настройкой

0 голосов
/ 21 сентября 2015

Вам необходимо отредактировать ResourceID (для чего-то уникального) в таблице диалога, которая находится в редакторе Direct в разделе Дополнительные инструменты в конструкторе установки.

...