The famous “Windows Installer reconfigured the product” error

The other day I encountered the famous “Windows Installer reconfigured the product X” error. I will name it an error even if the event log entry is categorized as informational.

Windows Installer reconfigured the product. Product Name: [PRODUCT NAME]. Product Version: [VERSION]. Product Language: [LOCALE ID]. Manufacturer: [MANUFACTURER]. Reconfiguration success or error status: 0.

In preparation for an Exchange Server 2013 setup, I wondered if Event Id 1035 was logged every 4 hours. The Systems Account triggered the MsiInstaller itself, which is pretty standard. By using Windows Performance Recorder (WPR) and Windows Performance Analyzer (WPA), I could identify that the MsiInstaller was triggered when a PowerShell script got executed.

Screenshot Windows Performance Recorder (WPR) and Windows Performance Analyzer (WPA)

Note: WPR and WPA are part of the Windowas ADK (see Links section)

It turned out that the PowerShell script itself was part of a Nagios-style monitoring solution and was executed as part of a plug-in. The system monitoring was part of the base template of the virtual machine.

But why would a PowerShell script trigger MsiInstaller?

The script used a Get-WmiObject query to fetch an inventory of installed software on the server.

To quote Ed Wilson (The Scripting Guy):

“This would not a terrible thing to do in your dev or test environment. However, I would not recommend querying Win32_Product in your production environment unless you are in a maintenance window.”

Think of running such a query on an Exchange Server 2013 in a production environment (which I did just for the sake of it) triggers the “reconfiguration” of all installed software on the server. The number of generated event log entries will drive you (as an Administrator) crazy.

If you need to get an inventory of the installed software on the server, do not use the Win32_Product class.

Instead, follow the advice given by Ed Wilson to query the Windows Registry and fetch the data provided under

HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 

PowerShell Query:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize 

Enjoy.

Links

Note: This post was published oroginally on 2015-02-25 on my retired blog SF-Tools.
%d Bloggern gefällt das: