2012-07-11 3 views
15

Sto sviluppando un programma di installazione usando Wix e ho bisogno di uccidere un processo (non un'applicazione) in modo silenzioso durante l'installazione in modo che l'utente non abbia un pop up che chiede di terminare il processo o attendere e riavviare. Ho visto soluzioni per uccidere un'applicazione ma non un processo.Come uccidere un processo da WiX

risposta

29

Dopo un po 'di scavo intorno ho trovato questa soluzione, che utilizza il WixUtilExtension Tranquillo Esecuzione azione personalizzata 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

grazie funziona perfettamente – zulucoda

+0

OMG Non posso ringraziarvi abbastanza !!! –

+0

Esiste la possibilità di farlo funzionare per i proesec che sono in esecuzione con diritti di amministratore? Attualmente questo non funzionerà se un processo in esecuzione su un account admin fa sì che qtexec non abbia abbastanza diritti per uccidere il processo. – RandomDude

2

ho usato l'elemento CloseApplication per fare questo, se ho ben capito le vostre esigenze. I processi che ho ucciso non vengono visualizzati come applicazioni in Task Manager. Dipende da che classe di processo stai parlando, però.