2012-07-11 23 views
15

Estoy desarrollando un instalador usando Wix y necesito matar un proceso (no una aplicación) silenciosamente durante la instalación para que el usuario no reciba una ventana emergente pidiendo matar el proceso o esperar y reiniciar. He visto soluciones para matar una aplicación, pero no un proceso.Cómo matar un proceso de WiX

Respuesta

29

Después de algo de investigación en torno He encontrado esta solución que utiliza el WixUtilExtension tranquila Ejecución acción personalizada 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

gracias esto funciona perfectamente – zulucoda

+0

OMG ¡No puedo agradecerle lo suficiente! –

+0

¿Hay alguna posibilidad de que esto funcione para los procesos que se ejecutan con derechos de administrador? Actualmente esto no funcionará si un proceso que estoy ejecutando en una cuenta de administrador hace que el qtexec no tenga suficientes derechos para matar el proceso. – RandomDude

2

He utilizado el elemento CloseApplication hacer esto, si entiendo sus necesidades. Los procesos que maté no se muestran como aplicaciones en el Administrador de tareas. Depende de la clase de proceso de la que estés hablando, sin embargo.

Cuestiones relacionadas