2

我正在创建一个 WiX Bundle,以在客户端计算机上引导一些必需的先决条件。我通过它们的 exe 安装程序部署这些必备程序。除了 exe 安装程序 UI 在 Bundle UI 后面运行之外,一切似乎都运行良好。对于其中一些安装程序,这没有问题,因为它们不需要交互,但对于其中一些,我希望用户与该产品的安装程序进行交互,在其中设置选项等。用户可以在后台单击安装程序 UI提出来,但对于以前没有这样做过的人来说,这有点令人困惑。

我正在使用 WiX 3.7,并且有问题的引导式 exe 安装程序适用于 PostgreSQL 和 PostGIS。

所以我的问题是如何让 exe 包的目标在前台运行......或者相反,如何让 WiX Bundle UI 在 ExePackage 运行时进入后台或隐藏?

4

1 回答 1

2

挑战在于,Windows 做了大量工作来对抗可执行文件接管 z-order。这是为了防止那些恼人的应用程序试图在你的脸上启动东西。

Burn 确实确保引导程序应用程序 hwnd 始终获得正确的 z 顺序(因此它不会像许多其他引导程序那样最终在任务栏中闪烁)。最重要的是,Window 安装程序允许外部 UI 处理程序(如 Burn)提供窗口句柄,以确保任何呈现的 MSI UI 最终位于该窗口的顶部。不幸的是,::CreateProcess()没有提供这样的机制所以看当前的行为。

您可以尝试编写自定义 BA 代码与 Windows 进行战斗以查找然后将新启动的可执行文件的窗口置于最前沿(我认为这是可能的,因为您的 BA 将拥有最高的 z-order 并且可以放弃它) .

就个人而言,我可能会尝试将配置包含在 BA 中并静默运行其他 pacakges。

于 2013-03-26T16:54:10.050 回答