wix - 卸载时关闭应用程序-WIX

标签 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>

我希望wix检测到应用程序并在卸载过程中将其关闭。无需显示对话框提示。谁能帮我实现它。

它可以通过带有/qn开关的命令提示符进行安装,但是没有/qn开关,则可以正常工作,我会看到对话框(“在继续安装之前,应关闭以下应用程序”)。
有人可以帮我解决此问题。

最佳答案

添加一个C#自定义事件,并在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,请遵循此link

关于wix - 卸载时关闭应用程序-WIX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527915/

相关文章:

wix - 配置 WiX 以自动设置产品版本属性?

android - 是否可以以编程方式关闭在 android 后台运行的应用程序?

codenameone - 当我最小化应用程序并以代号一横向滑动该应用程序时,如何知道应用程序是否已关闭?

android - 在 onBackPressed() 的 MainActivity 中关闭应用

wix - 仅在满足某些条件时设置Wix属性

xslt - WiX 3.5 从 Heat 安装服务,需要自定义操作?

wix - 如何在 WiX 中执行仅在安装或卸载时执行的自定义操作?

wix - 如何使 ExePackage 的 Wix DetectCondition 始终为 True?

windows-phone-8 - 当应用程序关闭时,WP8 在后台任务中使用 http 请求保存文件