运行 MSI 静默卸载时,如何知道卸载何时完成?

运行 MSI 静默卸载时,如何知道卸载何时完成?

如果您有一个要从命令行卸载的 msi,则执行MsiExec.exe /qn /X{26A24AE4-039D-4CA4-87B4-2F83217045F0} /norestart 例如,立即返回。但 msiexec.exe 会运行一段时间,可能要几分钟。因此,如果我围绕此编写脚本以进行安装 - 我如何知道它是否已完成?我不能只观察 msiexc.exe,因为它也是一个服务进程,所以永远不会消失……

答案1

使用带有 /wait 的“start”命令等待,直到进程退出。

start "" /wait msiexec /x ...

如果任何以下属性包含引号,“”是一种解决方法。http://ss64.com/nt/start.html

答案2

msiexec 错误代码已记录这里。当您收到错误代码时,例如零表示成功,msiexec 会认为自己已完成。

为了捕获错误代码,可以将执行包装在 powershell 中,例如 done这里(无耻的代码复制/粘贴):

(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode

进行修改以满足您的需要。

相关内容