0

背景: Visual Studio セットアップ プロジェクトを使用して、C# アプリケーションの 1 つをクライアント Windows サーバーにデプロイしました。アプリケーションのインストール中に、サーバーでスケジュールされたタスクもセットアップする必要があります。このために、セットアップ プロジェクトでカスタム アクション機能を使用しました。私がしたことは、入力フィールドと「OK」ボタンを備えたWindowsフォームを作成し、ユーザーが値を入力して「OK」ボタンをクリックすると、タスクが作成されます。このカスタム タスクを に追加しInstallCommitステップ インしCustom Actionます。

問題showDialog: すべて正常に動作しますが 、フォームを表示する方法を 使用しても、作成されたウィンドウが表示されると、フォーカスが失われます。そのため、常にメイン セットアップ ウィンドウがアクティブになり、ユーザーにはバックグラウンドでポップアップ フォームが表示されません (添付の画像を参照)。ただし、ポップアップ ウィンドウをクリックしてアクティブにすることはできます。SetActiveWindowメソッドも試しましたが、これまでのところ良い結果は得られていません。

私が必要としているのは、ユーザーアクション(デフォルトのshowDialog動作)までポップアップウィンドウをアクティブにすることです。だからここで私は助けを探しています。 ここに画像の説明を入力

4

1 に答える 1

1

MSI の展開中にカスタム UI を使用してユーザー入力を取得する場合の最善の方法は、.wid拡張ファイルを作成することです。これは、MSI インストール中に表示される UI ファイルのタイプです (インストール パスなどを選択する場所)。Visual Studio にはこれらの UI ファイルを作成する機能がありませんが、これらのファイルを作成するために使用できる Microsoft ツールがあります。最適なツールの 1 つは ですOrac

UI ファイルを作成したら、ファイルを下に配置する必要がありますC:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\Deployment\VsdDialogs\1033( MSI がデフォルトの UI ファイルを選択する場所です) 。

その後、カスタム UI を選択して、インストール サイクルの任意のフェーズ (インストール前、インストール、インストール後など) に挿入できるようになります。次に、ユーザーがテキスト フィールドに入力した値をインストーラー クラスの引数として渡すことができます。次に、コンテキスト パラメーターを使用して、インストーラー クラス内の値を読み取ることができます。

string value = Context.Parameters["ParameterName"];
于 2013-09-30T07:56:26.427 に答える