1

WiX 3 チュートリアル: メインの WXS と WXI ファイルを理解する の記事に基づいて WiX セットアップ プロジェクトを作成しました。

しかし、私はその結果に困惑しています。状況は次のとおりです。

dll を使用する実行可能ファイルがあり、実行可能ファイルと dll をインストールするセットアップを作成します。セットアップを実行します。

ケース 1 : 次に、dll ではなく実行可能ファイルを変更し、セットアップを再度作成します。次に、インストールされたアプリケーションを起動し、dll もロードされていることを確認します。ここで 2 番目のセットアップを実行すると、予想どおり、実行可能ファイルをシャットダウンするようユーザーに求めるダイアログが表示されます。

ケース 2 : ただし、アプリケーションを変更せずに dll のみを変更し、アプリケーションが実行されていて dll がロードされている間にセットアップを実行すると、ダイアログは表示されません。セットアップの最後に、コンピューターを再起動するかどうかを尋ねるダイアログが表示されます。

これは予期された動作ですか? また、CASE 2 のように dll のみが変更された場合にも、CASE 1 のアプリケーション シャットダウン ダイアログを強制的に表示するにはどうすればよいですか? アプリケーションが再起動できないサーバー上で実行されているため、ユーザーがコンピューターを再起動する必要はありません。

4

2 に答える 2

0

これはすべて、原価計算プロセス中に Windows インストーラーによって決定されます。インストーラーは、どのファイルをインストール/更新する必要があるかを判断し、必要なディスク容量とファイル ロックがあるかどうかを計算します。ファイル ロックがある場合は、ウィンドウ ハンドルを使用してロックをプロセスに解決しようとします。これができれば、ダイアログが表示されます。それができないなら、あなたはしません。これは、再起動が必要ないという意味ではなく、再起動を回避する方法に関する有用な情報を提供できないだけです.

いくつかの追加ポイント:

EXE と DLL をバージョン管理していることを確認してください。古い DLL が 1.0.0.0 で、新しい DLL が 1.0.0.0 の場合、コストは「ここでは何もする必要はありません」と表示されます。

EXE は実行時に DLL をどのように使用しますか? プロセスの存続期間中、単にロックされていない可能性があります。

REBOOT=ReallySuppress などのプロパティを使用して MSI の再起動動作を変更できることを理解する

ここに読むべきいくつかの良い記事があります:

InstallValidate FileInUseDialog システムの再起動

于 2010-10-07T12:15:38.490 に答える
0

コードをチェックしていませんが、exeが変更されていないことがわかっているため、CloseApplicationアクションが実行されていないと思います。私の知る限り、CloseApplication で DLL をターゲットにすることはできません。ロギングを使用してインストールを実行すると、アクションがトリガーされたかどうかを確認できるはずです。インストールの後半に RemoveExistingProducts スケジュールを設定していると想定しています。InstallValidate の後に移動すると、毎回 exe が削除されるため、アクションがトリガーされます。

于 2010-10-08T16:56:58.780 に答える