0

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

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

我要执行的命令行是:

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>

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

4

1 回答 1

1

由于 Windows Installer 内置的互斥锁会在计算机上一次强制执行一个安装事务,因此您尝试做的事情没有机会工作。

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

于 2013-01-18T21:56:01.663 回答