【发布时间】:2014-04-03 23:21:54
【问题描述】:
我有一个 WIX 安装程序。
当我在运行旧版本软件的机器上测试我的安装程序时,我收到以下提示。
问题是安装程序无法关闭应用程序。当新程序运行时,它会抱怨旧程序正在运行。
有没有办法强行杀死应用程序? 如果没有,WIX 中是否有一些条目需要用户关闭应用程序才能继续安装?
【问题讨论】:
标签: wix windows-installer
我有一个 WIX 安装程序。
当我在运行旧版本软件的机器上测试我的安装程序时,我收到以下提示。
问题是安装程序无法关闭应用程序。当新程序运行时,它会抱怨旧程序正在运行。
有没有办法强行杀死应用程序? 如果没有,WIX 中是否有一些条目需要用户关闭应用程序才能继续安装?
【问题讨论】:
标签: wix windows-installer
我在这里找到了答案:
WiX <util:CloseApplication> element not working
我对上面帖子中的解决方案进行了调整。我在安装序列的早期终止了应用程序,因此上面的窗口不会出现。
<!-- Code to force termination of running program...MSIExec couldn't do it -->
<Property Id="QtExecCmdLine" Value='"[WindowsFolder]\System32\taskkill.exe" /F /IM "$(var.ProductName).exe"'/>
<CustomAction Id="APP.TaskClose" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore"/>
<InstallExecuteSequence>
<Custom Action="APP.TaskClose" After="LaunchConditions"/>
</InstallExecuteSequence>
如果您想知道“$(var.ProductName).exe”是什么,我将在命令行中传递 exe 名称,因为我正在创建同一程序的多个品牌版本。只需替换您的 exe 名称即可。
是的,在这种特殊情况下这样做是安全的。内存中没有可能丢失的数据。
【讨论】:
您应该使用 WiX util 扩展 CloseApplication:
http://wixtoolset.org/documentation/manual/v3/xsd/util/closeapplication.html
应该可以。
从长远来看,您应该将应用程序与重新启动管理器集成,这样它就会自动关闭。
【讨论】: