2

クライアントコンピューターでいくつかの必要な前提条件をブートストラップするために作成しているWiXバンドルがあります。これらの前提条件プログラムは、exeインストーラーを介して展開します。exeインストーラUIがバンドルUIの背後で実行されることを除いて、すべてが正常に機能しているようです。これらのインストーラーの一部では、対話を必要としないため、これは問題ありませんが、いくつかのインストーラーでは、ユーザーがその製品のインストーラーと対話したり、オプションを設定したりする必要があります。ユーザーは、バックグラウンドでインストーラーUIをクリックできます。それを前に進めるために、しかしそれは前にそれをしたことがない誰かにとって少し混乱します。

私はWiX3.7を使用していますが、問題のブートストラップされたexeインストーラーはPostgreSQLとPostGIS用です。

だから私の質問は、exeパッケージのターゲットをフォアグラウンドで実行する方法です...または逆に、ExePackageの実行中にWiXバンドルUIをバックグラウンドに移動するか非表示にする方法はありますか?

4

1 に答える 1

2

課題は、Windowsがzオーダーを引き継ぐ実行可能ファイルと戦うために多くの作業を行うことです。これは、あなたの顔に何かを起動しようとする迷惑なアプリを防ぐためです。

Burnは、Bootstrapperアプリケーションhwndが常に正しいzオーダーを取得することを保証します(したがって、他の多くのブートストラッパーのようにタスクバーで点滅することはありません)。さらに、Windowインストーラーを使用すると、外部UIハンドラー(Burnなど)がウィンドウハンドルを提供して、表示されたMSIUIがそのウィンドウの上に表示されるようにすることができます。残念ながら、::CreateProcess()そのようなメカニズムは提供されていないため、現在の動作を確認してください。

カスタムBAコードを記述して、Windowsと戦い、新しく起動された実行可能ファイルのウィンドウを見つけて最前線に持ってくることができます(BAが最上位のZオーダーを持ち、それを提供できるため、可能になると思います) 。

個人的には、代わりにBAの構成を包含し、他のパッケージをサイレントに実行しようとする場合があります。

于 2013-03-26T16:54:10.050 に答える