9

Wix 3.6 を使用しています。アンインストール中にウィンドウが開いていてタスク バーに表示されている場合 (このウィンドウはアンインストールしようとしている msi の一部です)、ユーザーにアプリケーションを閉じるように求めるダイアログ ボックスが表示されます (「インストールを続行する前に、次のアプリケーションを閉じる必要があります」)。

次のことを試しましたが、うまくいきませんでした。

<InstallExecuteSequence>
       <Custom Action="WixCloseApplications"
                Before="InstallInitialize">Installed</Custom>
       <Custom Action="StartMonitor"
                After="StartServices">NOT Installed</Custom>
    </InstallExecuteSequence>

   <util:CloseApplication Id="CloseMonitor" Target="Monitor.exe"
                           CloseMessage="yes" RebootPrompt="no">
        Installed
    </util:CloseApplication>

アンインストール プロセスの一環として、wix でアプリケーションを検出して閉じるようにしたいと考えています。ダイアログボックスのプロンプトを表示する必要はありません。誰でもそれを実装するのを手伝ってくれませんか。

/qn スイッチを使用してコマンド プロンプトからインストールすると正常に動作しますが、/qn スイッチを使用しないと、ダイアログが表示されます (「インストールを続行する前に、次のアプリケーションを閉じる必要があります」)。誰かがこれを修正する方法を教えてください。

4

1 に答える 1

1

カスタム イベントを追加C#し、make it first イベントを追加してInstallUISequence、次のコードを使用してプロセスを強制終了します。

try
{
      Process proc = Process.GetProcessesByName("MyApplication");
      proc.Kill();
}
catch (Exception ex)
{
      MessageBox.Show(ex.Message.ToString()); 
}

アプリケーションが複数のインスタンスをサポートしている場合は、いいえを数えます。最初のインスタンス:

 int count = 0;
 Process[] process = Process.GetProcessesByName("MyApplication");
 foreach (Process pr in process)
 {
   if (pr.MainModule.FileName.Equals(Assembly.GetExecutingAssembly().Location,                StringComparison.OrdinalIgnoreCase))
     {
       count++;

     }
 }

まったく使用していない場合は、このリンクDllEntryに従ってください

于 2012-09-21T09:51:58.517 に答える