2012-07-11 56 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元素要做到這一點,如果我理解你的需求。我殺死的進程不會顯示爲任務管理器中的應用程序。儘管如此,取決於您正在討論的流程類。