我正在使用 Wix 开发一个安装程序,需要在安装过程中静默终止进程(而不是应用程序),这样用户就不会弹出窗口要求终止进程或等待并重新启动。 我见过杀死应用程序但没有杀死进程的解决方案。
经过一番挖掘后,我发现这个解决方案使用 WixUtilExtension Quiet Execution Custom Action 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"/>
...
CloseApplication
元素来执行此操作。我杀死的进程不会在任务管理器中显示为应用程序。不过,取决于您正在谈论的流程类别。
在 Wix V5 中
<!--Terminate App if it's open-->
<SetProperty Id="WixQuietExecCmdLine" Value=""[System64Folder]\taskkill.exe" /F /IM $(var.AppExecName).exe" Before="TaskKill" Sequence="execute" />
<CustomAction Id="TaskKill" BinaryRef="Wix4UtilCA_$(sys.BUILDARCHSHORT)" DllEntry="WixQuietExec" Execute="immediate" Return="ignore" />
<InstallExecuteSequence>
<Custom Action="TaskKill" Before="InstallValidate" />