Передайте параметры в CustomAction и используйте возвращаемое значение - PullRequest
2 голосов
/ 03 ноября 2011

Есть ли способ передать данные в (управляемый, C #) CustomAction? Предпочтительно использовать коллекцию CustomActionData объекта Session. Я также хотел бы использовать возвращаемое значение из своего CustomAction в разделе управления пользовательским интерфейсом.

В частности, я хочу разрешить пользователю указывать имя пользователя и пароль, под которыми будет запускаться устанавливаемая мной служба. Поэтому я создал диалоговое окно, когда пользователь нажимает кнопку Далее, и я хочу запустить настраиваемое действие, которое проверяет правильность учетных данных. Настраиваемое действие вернет Успех, если учетная запись существует, и некоторое другое значение, если оно не существует (предпочтительно NotExecuted или SkipRemainingActions, но выполнит Сбой). Затем в диалоговом окне (wxs), если пользовательское действие возвращает успех, просто перейдите к следующему диалоговому окну (в последовательности установки). Если действие возвращает альтернативное значение (NotExecuted), появится SpawnDialog, сообщающий пользователю, что учетная запись не может быть проверена, но может продолжить, если хочет, используя кнопку да или нет.

Если кто-то может объяснить лучший способ сделать это в Wix, это было бы здорово. Спасибо.

Ответы [ 2 ]

6 голосов
/ 08 ноября 2011

Учитывая ограничения интерфейса Windows Installer, я решил использовать немного другой подход. Теперь я включаю / отключаю кнопку Далее в зависимости от того, является ли допустимым ввод основного поля, т. Е. Если поле Имя пользователя пустое, то кнопка отключается. Я использую (C #) CustomAction для проверки того, что учетная запись пользователя существует, путем передачи имени пользователя / пароля через свойства и возврата результата в другое свойство. Вернитесь в интерфейс программы установки, если учетная запись недействительна, появится окно сообщения.

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

Я получил идею от http://www.geekproject.com/showtopic.aspx?ID=94

См. Изображение ниже.

Example dialog

2 голосов
/ 04 ноября 2011

Установщик Windows на самом деле не поддерживает это через пользовательские действия C #.

WiX Toolset предлагает поддержку для доступа к свойствам установщика из C #, но у него есть некоторые ограничения. Кроме того, я не думаю, что вы можете контролировать код возврата настраиваемого действия с ним.

Таким образом, лучшим решением остается библиотека win32, которая получает дескриптор установки: http://www.codeproject.com/KB/install/msicustomaction.aspx

Таким образом, вы можете использовать API установщика Windows для чтения и установки свойств:

После создания настраиваемого действия вы можете обусловить следующее диалоговое окно свойством установщика вместо кода возврата:

  • обусловливает событие управления NewDialog, которое показывает следующее диалоговое окно
  • обусловливает настраиваемое действие в окне сообщения, которое информирует пользователя, почему он не может продолжить или каковы его параметры

Вот статья с более подробной информацией: http://setupanddeployment.com/installation-user-interface/validate-user-input-installation/

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...