我写了一个小的PowerShell脚本,调用不同的MSI文件来安装软件。有时我从Windows Installer收到以下错误:
正在安装另一个程序。请等待安装完成,然后再次尝试安装此软件。
在调用MSI文件之前,如何防止此错误?我试图将它与进程TrustedInstaller相关联。我认为当PC安装阻止我安装的东西时,会出现这个过程。但不幸的是,有时我的安装工作正常,尽管过程正在运行。是否有可以通过PS捕获的明确指示?
答案 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."
}