如何从 WiX 终止进程

问题描述 投票:0回答:3

我正在使用 Wix 开发一个安装程序,需要在安装过程中静默终止进程(而不是应用程序),这样用户就不会弹出窗口要求终止进程或等待并重新启动。 我见过杀死应用程序但没有杀死进程的解决方案。

process wix kill
3个回答
36
投票

经过一番挖掘后,我发现这个解决方案使用 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"/>
    ...

5
投票

如果我了解您的需求,我已经使用

CloseApplication
元素来执行此操作。我杀死的进程不会在任务管理器中显示为应用程序。不过,取决于您正在谈论的流程类别。


0
投票

在 Wix V5 中

    <!--Terminate App if it's open-->
<SetProperty Id="WixQuietExecCmdLine" Value="&quot;[System64Folder]\taskkill.exe&quot; /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" />
© www.soinside.com 2019 - 2024. All rights reserved.