Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 安装程序无法关闭正在运行的目标…解决方法?_Wix_Windows Installer - Fatal编程技术网

Wix 安装程序无法关闭正在运行的目标…解决方法?

Wix 安装程序无法关闭正在运行的目标…解决方法?,wix,windows-installer,Wix,Windows Installer,我有一个WIX安装程序 当我在运行旧版本软件的机器上测试我的安装程序时,我得到下面的提示 问题是安装程序无法关闭应用程序。当新程序运行时,它会抱怨旧程序正在运行 有没有办法强制杀掉这个应用程序? 如果没有,WIX中是否有一些条目要求用户在继续安装之前关闭应用程序 您应该使用WiX util扩展关闭应用程序: 这应该行得通 从长远来看,你应该让应用程序与重启管理器集成,这样它就会自动关闭 我在这里找到了答案: 我在上面的帖子中对解决方案做了一个调整。我在安装序列的前面杀死了应用程序,这样上面的

我有一个WIX安装程序

当我在运行旧版本软件的机器上测试我的安装程序时,我得到下面的提示

问题是安装程序无法关闭应用程序。当新程序运行时,它会抱怨旧程序正在运行

有没有办法强制杀掉这个应用程序? 如果没有,WIX中是否有一些条目要求用户在继续安装之前关闭应用程序


您应该使用WiX util扩展关闭应用程序:

这应该行得通


从长远来看,你应该让应用程序与重启管理器集成,这样它就会自动关闭

我在这里找到了答案:

我在上面的帖子中对解决方案做了一个调整。我在安装序列的前面杀死了应用程序,这样上面的窗口就不会出现

<!-- 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名称

是的,在这个特殊的时刻这样做是安全的。内存中没有可能丢失的数据