We're building Automation deployment through Ansible that have several .msi to install. And we encountered, rather randomly the following error message during deployment :
Another program is being installed. Please wait until that installation is complete, and then try installing this software again.
Our goal is to trigger a retry time out whenever this occur and provide a logging message that will describe what is most likely provoking this error.
We don't want to reboot the server or force-kill any in-progress installation.
I found some leads to explore to identify which process is causing this
TLDR; I'm looking for a consistent reproductible way of checking what is actually throwing this error
1) The msiexec.exe process
The common answer to this question on Google is to check the Task manager for a msiexec.exe process and kill it before restarting the install. This is not an alternative for this case.
2) There seems to be a Registry key that says whether or not there is an installation in progress
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\InProgress
But I couldn't find any trace of this key in the registry of several windows machine (we tried refreshing it while installing and uninstalling .msi)
3) In the services.msc GUI there is a WindowsInstaller Service that has no state at rest :
This service got into the Running
state when we triggered an MSI installation, but it then never went out of this state even several minutes after the msi was finished.
4) On going Windows Updates
Another common lead found out there is that on going Windows Update are preventing any other .msi to be installed
Is there a consistent way to automate the checking of this ?