如何防止MSI错误:正在安装另一个程序?

时间:2015-08-17 11:26:38

标签: powershell windows-installer

我写了一个小的PowerShell脚本,调用不同的MSI文件来安装软件。有时我从Windows Installer收到以下错误:

  

正在安装另一个程序。请等待安装完成,然后再次尝试安装此软件。

在调用MSI文件之前,如何防止此错误?我试图将它与进程TrustedInstaller相关联。我认为当PC安装阻止我安装的东西时,会出现这个过程。但不幸的是,有时我的安装工作正常,尽管过程正在运行。是否有可以通过PS捕获的明确指示?

1 个答案:

答案 0 :(得分:4)

您想查看_MSIExecute Mutex是否已设置。

只是检查正在运行的msiexec.exe不会告诉你,因为a)msiexec可能正在处理一个不会阻止你的UI序列或b)msiexec可能已经完成安装并等待10分钟降速这是服务。

try
{
    $Mutex = [System.Threading.Mutex]::OpenExisting("Global\_MSIExecute");
    $Mutex.Dispose();
    Write-Host "An installer is currently running."
}
catch
{
    Write-Host "An installer is not currently runnning."
}