2013-01-18 118 views
0

我正在使用的应用程序的先前版本(及其安装程序)由其他人编写。我一直在努力使更新功能正常工作,所以我想在安装之前卸载以前的版本,但在确定安装会继续进行之后。WiX扩展命令行自定义操作不执行

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

命令行我想执行的是:

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

由于内置Windows Installer的互斥锁一次在机器上执行一次安装事务,因此您尝试执行的操作没有机会工作。

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