WiX扩展命令行自定义操作未执行

时间:2013-01-18 21:52:14

标签: command-line wix custom-action

我正在处理的应用程序的早期版本(及其安装程序)是由其他人编写的。我一直很难让更新功能正常工作,所以我想在安装之前卸载以前的版本,但在我确定安装将继续之后。

我显然做错了什么。我想从安装程序执行以下命令行,但是在安装开始之前。当我运行安装程序时,应用程序会安装,但我的命令行不会执行。任何帮助将不胜感激。

我想要执行的命令行是:

start /wait MsiExec.exe /quiet /x{MyGuid-0F4A-4F53-8639-0BEE6018EAD6}

我的WiX XML的相关部分:

<Property Id="QtExecCmdLine" Value="start /wait MsiExec.exe /x{MyGuid-0F4A-4F53-8639-0BEE6018EAD6}"/>
<CustomAction Id="UninstallOldVersion" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="ignore"/>
<InstallExecuteSequence>
  <Custom Action="UninstallOldVersion" Before="InstallInitialize"/>
</InstallExecuteSequence>

如果我从提示符执行它,该命令将按预期工作。此外,在编译或执行安装程序期间,我没有收到任何错误或警告。

1 个答案:

答案 0 :(得分:1)

由于内置于Windows Installer中的互斥锁在计算机上一次执行一个安装事务,因此您尝试执行的操作无法工作。

相反,您应该查看MajorUpgrade元素以创建删除先前版本。