我正在使用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/