2013-03-26 2 views
2

У меня есть набор WiX, который я создаю для загрузки некоторых необходимых предварительных условий на клиентском компьютере. Я развертываю эти предварительные программы через их установщики exe. Кажется, что все работает нормально, за исключением того, что пользовательские интерфейсы exe работают за интерфейсом Bundle. Для некоторых из этих установщиков это не проблема, так как они не требуют взаимодействия, но для пары из них я хочу, чтобы пользователь взаимодействовал с установщиком этого продукта, задавал в нем параметры и т. Д. Пользователь может щелкнуть по интерфейсу установщика в фоновом режиме вывести его вперед, но он немного запутан для того, кто раньше этого не делал.Как принести пакет WiX ExePackage на передний план при запуске

Я использую WiX 3.7, и загружаемые установщики exe, о которых идет речь, предназначены для PostgreSQL и PostGIS.

Итак, мой вопрос в том, как получить цель пакета exe для запуска на переднем плане ... или, наоборот, как это сделать, я получаю интерфейс WiX Bundle для перехода на задний план или скрыть во время работы ExePackage?

ответ

2

Проблема заключается в том, что Windows выполняет большую работу по борьбе с исполняемыми файлами, занимающими z-порядок. Это делается для предотвращения раздражающих приложений, которые пытаются запустить материал в вашем лице.

Burn делает приложение Bootstrapper hwnd всегда получает нужный z-порядок (поэтому он не мигает в панели задач, как и многие другие загрузочные машины). Кроме того, установщик Window позволяет внешним обработчикам пользовательского интерфейса (например, Burn) предоставлять дескриптор окна, чтобы гарантировать, что любой представленный пользовательский интерфейс MSI окажется поверх этого окна. К сожалению, ::CreateProcess() не обеспечивает такой механизм, поэтому см. Текущее поведение.

Вы можете попытаться написать свой собственный код BA, чтобы сражаться с Windows, чтобы найти, затем вывести на экран новые окна исполняемых файлов (я думаю, это будет возможно, потому что ваш BA будет иметь верхний z-порядок и может отдать это).

Лично я мог бы попытаться охватить конфигурацию в BA и запустить другие pacakges.

+0

Спасибо Робу, что делает его немного понятнее. По пользовательскому BA-коду я предполагаю, что вы имеете в виду создание чего-то вроде WPF Managed Bootstrapper Application (MBA), поскольку в проекте пакета нет никаких пользовательских действий. Я не уверен, что у меня есть время для этого прямо сейчас, поэтому я, вероятно, просто буду жить, щелкнув, чтобы вывести запущенные exe procs на передний план. – Avery

+0

Вы можете написать пользовательский BA в собственном или управляемом коде. Твой выбор. –

Смежные вопросы