2012-07-11 59 views
15

我正在开发一个使用Wix的安装程序,并且需要在安装过程中静默地终止一个进程(而不是应用程序),以便用户不会弹出要求终止进程或等待并重新启动的弹出窗口。我看到了杀死应用程序的解决方案,但不是一个过程。如何从WiX中终止进程

回答

29

经过一番周围挖我发现这个解决方案,它采用了WixUtilExtension安静执行自定义操作http://wix.sourceforge.net/manual-wix3/qtexec.htm

<InstallExecuteSequence> 
    <Custom Action='MyProcess.TaskKill' Before='InstallValidate'/> 
</InstallExecuteSequence> 

<Property Id="QtExecCmdLine" 
      Value='"[WindowsFolder]\System32\taskkill.exe" /F /IM MyProcess.exe'/> 
<CustomAction Id="MyProcess.TaskKill" 
       BinaryKey="WixCA" 
       DllEntry="CAQuietExec" 
       Execute="immediate" 
       Return="ignore"/> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="WindowsFolder" Name="WINDOWS"/> 
    ... 
+0

感谢这工作完美 – zulucoda 2012-10-18 13:08:17

+0

OMG我不能感谢你足够! – 2014-02-12 06:30:42

+0

有没有可能让这个为管理权限运行的proecesses工作?目前这不会工作,如果我在管理员帐户运行的进程导致qtexec没有足够的权利来终止进程。 – RandomDude 2015-01-19 17:31:38

2

我已经使用了CloseApplication元素要做到这一点,如果我理解你的需求。我杀死的进程不会显示为任务管理器中的应用程序。尽管如此,取决于您正在讨论的流程类。