我正在创建一个WiX Bundle,用于在客户端计算机上引导一些必需的先决条件。我通过他们的exe安装程序部署这些必备程序。除了在Bundle UI后面运行的exe安装程序UI之外,一切似乎都能正常工作。对于其中一些安装程序,这没有问题,因为它们不需要交互,但对于其中几个我希望用户与该产品的安装程序进行交互,在其中设置选项等。用户可以在后台单击安装程序UI把它推进,但对于之前没有这样做的人来说有点混乱。
我正在使用WiX 3.7,并且有问题的引导exe安装程序适用于PostgreSQL和PostGIS。
所以我的问题是如何让exe包的目标在前台运行...或者相反如何让我在运行ExePackage时让WiX Bundle UI进入后台或隐藏? / p>
答案 0 :(得分:2)
挑战在于Windows做了很多工作来对抗接管z-order的可执行文件。这是为了防止那些试图在你脸上发布东西的烦人的应用程序。
Burn确保Bootstrapper Application hwnd始终获得正确的z顺序(因此它不会像许多其他bootstrappers一样在任务栏中闪烁)。最重要的是,Window安装程序允许外部UI处理程序(如Burn)提供窗口句柄,以确保任何呈现的MSI UI最终位于该窗口之上。不幸的是,::CreateProcess()
没有提供这样的机制,所以请看当前的行为。
您可以尝试编写自定义BA代码与Windows进行战斗,然后将新推出的可执行文件的窗口置于最前端(我认为这是可能的,因为您的BA将拥有最高的z顺序并且可以给出它离开了。
就个人而言,我可能会尝试将BA中的配置包含在内,并使其他的pacakges保持沉默。