卸载时关闭应用程序 - wix

san*_*_bl 8 wix close-application

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

我希望wix检测应用程序并在卸载过程中关闭它们.无需显示对话框提示.任何人都可以帮我实现它.

它工作正常,它是从命令提示符安装/ qn开关但没有/ qn开关我得到对话框("应继续安装前应关闭以下应用程序").有人可以帮我解决这个问题.

USE*_*AME 1

添加C#自定义事件并添加使其成为第一个事件InstallUISequence,并使用以下代码来终止进程:

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

如果您的应用程序支持多个实例,则计算数量。首先是实例:

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

     }
 }
Run Code Online (Sandbox Code Playgroud)

如果您根本不使用,DllEntry请点击此链接