我正在使用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开关我得到对话框(“应继续安装前应关闭以下应用程序”)。 有人可以帮我解决这个问题。
答案 0 :(得分:1)
添加C#
自定义事件,并在InstallUISequence
上添加make it first事件,并使用以下代码终止该过程:
try
{
Process proc = Process.GetProcessesByName("MyApplication");
proc.Kill();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
如果你的应用程序支持多个实例,那么计算no。首先是实例:
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