2013-01-18 165 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元素以創建刪除以前的版本。