6

Wix を使用してアンインストールする前にプロセスを閉じようとしています。ウィンドウが表示されている限り動作することを確認しましたが、ウィンドウが表示されていない場合 (このアプリはシステム トレイ アプリであるため、ほとんどの場合そうです)、アンインストーラーがハングアップし、最終的にアンインストールを続行し、プロセスを実行したままにします。

このフォーラムの投稿によると、Wix は過去に最小化されたアプリを閉じるのに問題があったようですが、これは関連しているのでしょうか?

プロセスを確実にシャットダウンするために他に何ができるかについて何か提案はありますか? Win32 API を使用してアプリでメッセージをキャプチャしようとする方法はありますか?

CloseApplication 宣言は次のとおりです。

<util:CloseApplication Id="CloseApp" CloseMessage="yes" Target="App.exe" RebootPrompt="yes" />

カスタムアクションは次のとおりです。

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>
4

3 に答える 3

5

WixCloseApplicationsインストール トランザクションの前にカスタム アクションをスケジュールしているようです。カスタム アクションが機能する方法は、実際にアプリケーションを閉じる遅延アクションをスケジュールすることです。トランザクション中に発生しない限り、その作業を行うことはできません ( After="InstallInitialize")。

修正はおそらくかなり簡単です。要素を削除しCustom/@Action="WixCloseApplications"ます。

于 2011-02-14T22:51:14.043 に答える
2

最初に、 WixUtilExtension.dllアセンブリを参照することを忘れないでください。また、Wix要素にUtilExtension名前空間の定義が含まれているかどうかを確認します。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

カスタム アクションを InstallInitialize の前に実行するように変更する必要があることに気付きました。

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>

これらの変更を適用しても、CloseApplications 拡張機能が機能しない場合は、次を使用してインストール プロセスをログに記録してみてください。

msiexec /i MyApplication.msi /l*v MyLogFile.txt
于 2015-09-25T12:28:53.540 に答える