2012-07-11 37 views
15

Tôi đang phát triển trình cài đặt bằng Wix và cần phải xóa một quá trình (không phải ứng dụng) một cách im lặng trong khi cài đặt để người dùng không nhận được cửa sổ bật lên yêu cầu xóa quá trình hoặc chờ và khởi động lại. Tôi đã thấy các giải pháp để giết một ứng dụng nhưng không phải là một quá trình.Làm thế nào để giết một quá trình từ WiX

Trả lời

29

Sau khi một số đào bới xung quanh tôi thấy giải pháp này trong đó sử dụng các WixUtilExtension Thực hiện Quiet Tuỳ chỉnh hành động 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

cảm ơn công trình này hoàn hảo – zulucoda

+0

OMG Tôi không thể cảm ơn đủ! –

+0

Có khả năng để làm việc này cho những người khởi nghiệp đang chạy với quyền quản trị không? Hiện tại điều này sẽ không hoạt động nếu một tiến trình tôi đang chạy tại một tài khoản quản trị gây ra qtexec không có đủ quyền để hủy bỏ tiến trình. – RandomDude

2

Tôi đã sử dụng các yếu tố CloseApplication để làm điều này, nếu tôi hiểu rõ nhu cầu của bạn. Các quy trình tôi đã giết không hiển thị dưới dạng các ứng dụng trong Trình quản lý tác vụ. Tuy nhiên, tùy thuộc vào loại quy trình mà bạn đang nói đến.