Why you should always register your MSI with Windows Installer
In this article, we will explore what happens during a Windows Installer registration and what are the repercussions that appear if you don't register your MSI during installation.
Also, we will see how to disable Windows Installer registration altogether (which is not a recommended practice) - and the difference between hiding your MSI from the Add/Remove Programs and not registering it with Windows Installer.
Let's start by going through what happens when you register your MSI.
What happens when you register your MSI with Windows Installer and how to find it?
When an MSI is installed on a machine, it is automatically registered with Windows Installer -- and you can find it in the Add/Remove Programs. It includes all the options that you configured for it (e.g. uninstall, repair, upgrade, etc.), and it can be easily identified by the OS, allowing for quicker access.
Although the access to the MSI through the Add/Remove Programs is helpful for users, it does not always reflect how many products are installed within the MSI on the machine.
For developers or IT Pros, it's best to access the MSI with a PowerShell command instead of going through the Add/Remove Programs to run specific scripts or make more advanced modifications to it.
One way to quickly find your registered MSI is by using the Win32_Product WMI class.
Enter a PowerShell command line to retrieve all the MSI products that are installed (and registered) on your machine:
get-wmiobject Win32_Product | Sort-Object -Property Name |Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize
The Differences Between Hiding Your MSI and Windows Installer Registration
If you don't want users to tamper with an MSI, you can hide it from the Add/Remove Programs.
Do not mistake hiding the MSI from Add/Remove Programs with the non-registration of the product. The product is still registered on the machine; it just doesn't appear in the Add/Remove Programs.
You can hide your MSI entry in the Add/Remove Programs using Advanced Installer.
You can try Advanced Installer for free through the 30-day, Full-Featured Trial.
Go to the Product Details Page and check the “Do not show in list” option.
Even if you hide your MSI from the Add/Remove Programs, it is still registered.
The RegisterProduct action stores the Windows Installer database package on the local computer (but not completely).
When you register an MSI, a small cached version of it is stored in the C:\Windows\Installer folder. This cached MSI contains important information for the repair and uninstall actions.
For example, a cached MSI can contain the binaries of the custom actions used for uninstalling the product, the registry, the INI files stored in the INIFile Table, etc.
However, it will not contain the actual files that are placed during the installation. So, if you have a 700MB MSI, the cached version will have only 1 or 2 MB of data.
As a last point, during the registration of an MSI, a specific ProductID is placed in the following registry location:
In that registry location is where information such as the source list (where the MSI was installed from), transforms, language, etc. is stored. This is useful in some instances, such as recaching an MST.
If you want to find out how that ProductID is created, check out this article: How does the MSI Registration ProductID look like and where to find it?
How to Disable Windows Installer Registration?
Now that we know what it means to register your MSI with Windows Installer, and how to hide it from the Add/Remove Programs -- let’s see how to disable that action.
Remember: We don't really recommend disabling Windows Installer registration for your MSI, but here's how you can do it if you absolutely need to.
In Advanced Installer, this can be easily done by navigating to the Product Details Page and unchecking the “Register product with Windows Installer” option.
This action deletes the RegisterProduct Action from the InstallExecuteSequence table. It registers the product information with the installer and with the Add/Remove Programs while storing the Windows Installer database package on the local computer.
What are the repercussions of disabling MSI registration?
The repercussions are quite big, if you leave this option unchecked (therefore not registering your MSI), you will not be able to remove, repair or reinstall the application by using the Control Panel, the Windows Installer command-line options or the Windows Installer application programming interface (API).
This means that once you install your MSI package, you will never be able to remove it from the system in any way(not even programmatically).
Also, since the OS will not recognize that the MSI is present on the machine, no patches for the MSI can be installed.
The WMI class that we talked about earlier will not see the MSI, and the ProductID created in the registry will be gone.
In short, the system will never know that an MSI was installed on it.
To wrap this up, we recommend to always register your MSI with Windows Installer. The whole point of an MSI is to easily keep track of the installed applications so that you can manipulate them when needed.
And, if you don't want it to show in the Add/Remove Programs, you can just hide it.
Not registering your MSI only works for very specific situations and should only be done by experienced developers. It could be useful in some scenarios, for example, when you want to make certain OS changes that you never want to be reverted by the users in any way, or when you want to create a suite installation.
Let us know if you found this information useful.