Проект установки Visual Studio 2013. Как отключить кнопку «Отмена» в небольшом диалоговом окне индикатора выполнения?

У меня есть один мастер пользовательского интерфейса Windows Form в качестве пользовательского действия в проекте установки MSI в Visual Studio 2013. Во время установки поверх пользовательского интерфейса появляется одно небольшое диалоговое окно индикатора выполнения. В этом диалоговом окне также есть кнопка «Отмена» и текст наподобие «Подождите, пока Windows настраивается…».

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


person Pravesh Gupta    schedule 28.05.2015    source источник
comment
Я могу избавиться от этого диалогового окна индикатора выполнения ВО ВРЕМЯ УСТАНОВКИ, добавив один из стандартных диалоговых окон пользовательского интерфейса, таких как «Добро пожаловать» или «Готово». Хотя это добавленное диалоговое окно является избыточным, но при установке не отображается индикатор выполнения. Проблема все еще существует для Un-installation. Я хотел использовать тот же подход и для удаления, но он не позволяет мне добавить стандартный диалог пользовательского интерфейса для удаления. Пройдя по некоторым ссылкам и сообщениям об этой проблеме, я ищу обходной путь, например обнаружение кнопки «Отмена». Нажмите во время удаления и обработайте это в своем пользовательском действии?   -  person Pravesh Gupta    schedule 03.06.2015


Ответы (2)


На этот вопрос нет хорошего ответа, так что в основном это просто информация.

Архитектура установщика Windows предполагает, что весь пользовательский интерфейс будет выполняться в первой последовательности пользовательского интерфейса, где вводятся данные. Вы, вероятно, поняли это из подавляющего большинства других установок, которые делают это. Последовательность выполнения предназначена для молчания, за исключением ошибок и индикатора выполнения. Когда установки Visual Studio разрешили классы установщика как способ запуска пользовательских действий управляемого кода, я не думаю, что они ожидали, что у людей будет пользовательский интерфейс. Это часто не работает из-за различий в потоках STA/MTA для перекачки сообщений, и, поскольку сам установщик Windows ничего не знает о вашем пользовательском действии, показывающем пользовательский интерфейс (пользовательский интерфейс не должен быть!), он все еще считает, что имеет фокус пользователя. Другая проблема заключается в том, что многие клиенты ожидают возможности автоматической установки, но ваше требование к мастеру пользовательского интерфейса противоречит этому.

Я думаю, что некоторые люди пытались решить вашу проблему, перечислив все Windows в системе, чтобы найти установщик Windows и перевести его в фоновый режим, но в последнее время я ничего не видел в этом или каких-либо примерах кода.

В вашем случае, если ваши данные пользовательского интерфейса могут быть собраны заранее с помощью одного из стандартных диалоговых окон пользовательского интерфейса, попробуйте это. К сожалению, настройки VS не позволяют проверить ввод. Если мастер пользовательского интерфейса предназначен для самого приложения, то его обычно проще сделать при первом запуске приложения, а также его легче тестировать и отлаживать, его можно запустить позже для перенастройки и избежать подобных проблем.

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

person PhilDW    schedule 29.05.2015

Я могу скрыть сам диалог индикатора выполнения, используя API-интерфейсы Win32.

person Pravesh Gupta    schedule 04.06.2015
comment
Да, это не сложно, но все настраиваемые действия VS запускаются в конце установки, когда все уже установлено, так что на самом деле это не решение для настроек VS. - person PhilDW; 04.06.2015