2012-07-11 14 views
15

Zajmuję się tworzeniem instalatora za pomocą Wix i trzeba zabić procesu (nie aplikacji) w trybie cichym podczas instalacji, więc użytkownik nie dostaje pop-up z prośbą o zabicie procesu lub czekać i ponownie uruchomić. Widziałem rozwiązania do zabijania aplikacji, ale nie proces.Jak zabić proces z WiX

Odpowiedz

29

Po niektóre kopania wokół znalazłem to rozwiązanie, które wykorzystuje WixUtilExtension Quiet Execution niestandardową akcję 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

dzięki temu działa idealnie – zulucoda

+0

OMG Nie mogę ci wystarczająco podziękować !!! –

+0

Czy istnieje możliwość, aby to działało w przypadku projektów, które działają z prawami administratora? Obecnie to nie zadziała, jeśli proces uruchomiony na koncie administratora spowoduje, że qtexec nie ma wystarczających uprawnień do zabicia procesu. – RandomDude

2

Użyłem elementu CloseApplication to zrobić, jeśli rozumiem potrzeb. Zabite przeze mnie procesy nie są wyświetlane jako aplikacje w Menedżerze zadań. Zależy jednak od tego, o jakiej klasie procesów mówisz.