Use o comando "start" com / wait para esperar até que o processo seja encerrado.
start "" /wait msiexec /x ...
"" é uma solução alternativa, caso os atributos a seguir contenham citações. link
Se você tiver um msi que deseja desinstalar da linha de comando, faça MsiExec.exe /qn /X{26A24AE4-039D-4CA4-87B4-2F83217045F0} /norestart
por exemplo, retorna imediatamente. Mas msiexec.exe está sendo executado por algum tempo, talvez por alguns minutos. Então, se eu estou escrevendo sobre isso para querer fazer uma instalação - como eu sei se é feito? Eu não posso apenas assistir msiexc.exe porque também é um processo de serviço, então nunca vai embora ...
Use o comando "start" com / wait para esperar até que o processo seja encerrado.
start "" /wait msiexec /x ...
"" é uma solução alternativa, caso os atributos a seguir contenham citações. link
Os códigos de erro msiexec estão documentados aqui . Quando você obtém um código de erro, como zero, significa sucesso, msiexec considera-se feito.
Para capturar os códigos de erro, pode-se envolver a execução no PowerShell, por exemplo, aqui (copiar / colar código sem vergonha):
(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode
Modifique para atender às suas necessidades.