Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS
with no warranties, and confer no rights. Additionally, views expressed
herein are my own and not those of my employer, Microsoft.
The redistributable package for installing Windows Installer 3.1 is available for download again on the Microsoft Download Center. It was available briefly a few weeks ago and was included on Windows Update but then was removed, and finally got re-posted at the end of last week. You can find documentation about Windows Installer 3.1 in this KB article.
Windows Installer 3.1 was removed from the Download Center and Windows Update in order to fix the issue described in this KB article. When trying to install a product that tries to update files that are protected by Windows File Protection, Windows Installer will display an error dialog with error code 1931 and a message stating that Windows Installer cannot update the file because it is protected by Windows. This dialog has an OK button and a Cancel button with Cancel being the default. Pressing Cancel will roll back the installation and pressing OK will cause the installation to skip the file in question and continue without updating it. In previous versions of Windows Installer, running setup in silent mode would cause the OK action to be taken on behalf of the user. However, in the original Windows Installer 3.1 release, this behavior was changed to cause the Cancel action to be taken on behalf of the user, which caused products that used to install correctly to cancel and roll back instead. The re-posted Windows Installer 3.1 reverted this behavior back to what was seen in previous versions so that silent installs will default to the OK action if 1931 errors are encountered.
In most cases, it should be possible to author an MSI to avoid 1931 errors from ever appearing when trying to install a product. Components that contain files that are under Windows File Protection on certain operating systems can be authored with a condition that will prevent Windows Installer from trying to install them on those OS's. This is described in the workarounds in the KB article describing the bug that caused Windows Installer 3.1 to be unposted. Unfortunately, that workaround only works for a setup author who fully knows all of the supported OS's for their products - even into the future. I have seen cases where products ship with no known issues with installing files under Windows File Protection but then a later version of Windows starts protecting new files and introduces 1931 errors for applications that shipped in the past.