2012-07-11 12 views
15

Ich entwickle ein Installationsprogramm mit Wix und muss einen Prozess (nicht die Anwendung) stillschweigend während der Installation beenden, so dass der Benutzer nicht erscheint, um den Prozess zu beenden oder zu warten und neu zu starten. Ich habe Lösungen zum Töten einer Anwendung gesehen, aber keinen Prozess.Wie man einen Prozess von WiX killt

Antwort

29

Nach einigem Graben um Ich fand diese Lösung, die die WixUtilExtension Quiet Execution Custom Action verwendet 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

danke das funktioniert perfekt – zulucoda

+0

OMG ich kann dir nicht genug danken !!! –

+0

Gibt es eine Möglichkeit, das funktioniert für Prozesse, die mit Admin-Rechten laufen? Momentan funktioniert das nicht, wenn ein Prozess, der in einem Admin-Account ausgeführt wird, dazu führt, dass der qtexec nicht genügend Rechte hat, um den Prozess zu beenden. – RandomDude

2

ich verwendet habe, das CloseApplication Element, dies zu tun, wenn ich Ihre Bedürfnisse zu verstehen. Die Prozesse, die ich getötet habe, werden im Task-Manager nicht als Anwendungen angezeigt. Hängt davon ab, von welcher Prozessklasse Sie sprechen.

Verwandte Themen