1

インストールでは、すべてのブラウザー (iexplore.exe、chrome.exe、firefox.exe) を閉じる必要がありますが、ユーザーにはそうするように求められます。FileInUse ダイアログが表示されません。関連する部分は次のとおりです-何が欠けていますか? CloseMessage="yes" を指定すると、それらはすべて閉じますが、代わりに FilesInUse が表示されるようにしたいと思います。

<UI>
  <UIRef Id="WixUI_InstallDir" />
  <UIRef Id="WixUI_ErrorProgressText" />
  <DialogRef Id="FilesInUse" />
  <DialogRef Id="MsiRMFilesInUse" />
</UI>

<InstallUISequence>
  <Custom Action="WixCloseApplications" Before="AppSearch" />
</InstallUISequence>

<InstallExecuteSequence>
  <Custom Action="WixCloseApplications" Before="InstallValidate" />
</InstallExecuteSequence>

<util:CloseApplication Id="CloseIE" CloseMessage="no"
                       Description="Internet Explorer is still running."
                       ElevatedCloseMessage="no"
                       RebootPrompt="no"
                       Property="IERunning"
                       Target="iexplore.exe"/>
<util:CloseApplication Id="CloseChrome" CloseMessage="no"
                       Description="Chrome is still running."
                       ElevatedCloseMessage="no"
                       RebootPrompt="no"
                       Property="ChromeRunning"
                       Target="chrome.exe"/>
<util:CloseApplication Id="CloseFirefox" CloseMessage="no"
                       Description="Firefox is still running."
                       ElevatedCloseMessage="no"
                       RebootPrompt="no"
                       Property="FirefoxRunning"
                       Target="firefox.exe"/>

更新 ログから、何かが起こっているようですが、クローズもプロンプトもありません。以下のログは、AppSearch の前と InstallValidate の前に 2 回 (予想どおり) 発生しますが、FileInUse ダイアログが呼び出されることはありません。WixUI_InstallDir を Mondo に変更しようとしましたが、これは役に立ちませんでした。

Action 22:28:12: WixCloseApplications. 
Action start 22:28:12: WixCloseApplications.
WixCloseApplications:  Entering WixCloseApplications in C:\Users\tim\AppData\Local\Temp\MSIC78D.tmp, version 3.6.2809.0
WixCloseApplications:  Checking App: iexplore.exe 
WixCloseApplications:  App: iexplore.exe found running, 2 processes, setting 'IERunning' property.
WixCloseApplications:  Checking App: chrome.exe 
WixCloseApplications:  App: chrome.exe found running, 7 processes, setting 'ChromeRunning' property.
WixCloseApplications:  Checking App: firefox.exe 
Action ended 22:28:13: WixCloseApplications. Return value 1.
4

2 に答える 2

3

しばらく同じ問題をいじった後、私はあなたがそれを解決することはできないと言うことができると思います.

問題は、Win7 と Vista だけに、実行中のプログラムを検出できる再起動マネージャーがあり、ファイルを使用するプログラムだけがあることです。それが FilesInUse ダイアログの目的です。ファイルがインストールされていない場合、ファイルを使用できないことに気付いたのではないでしょうか。試した方法では解決できません。実際のところ、WinXP には再起動マネージャーさえありません

私が見つけた他の解決策は次のとおりです。

  • 開始した方法を続行しますが、多くのカスタム アクションを使用して独自のダイアログを作成します
  • 実行中のプロセスをチェックし、FilesInUse ダイアログを表示するように MSI に通知できるカスタム アクション DLL を C/C++ で作成します。(カスタム アクション DLL を作成する方法を見つける必要がありますが、このソリューションを使用することをお勧めします)

まだ解決していない場合は、これが役立つことを願っています。

于 2012-05-07T17:26:57.457 に答える
0

古い質問に対する新しい回答。誰かの役に立ちますように。ここに行きます:

このような状況では、ClosePromtCAが適切に機能するはずです。指定されたプロセスをユーザーに強制的に終了させるだけです。上記の場合は chrome.exe、firefox.exe です。さらに、カスタム アクションはオープンソースであるため、ニーズに合わせて簡単に調整できます。

于 2015-03-24T15:14:33.770 に答える