I have a case where the customer is trying to apply the latest security patch but is getting the following error: “SQL Server Setup has encountered the following error: The patch file cannot be opened. The file is: c:\WINNT\Installer\1cf506f.msp. Error code 0x84B20001.” He located kb969052 that provides a way to work around it, but wanted to know if there was another, less painful, way to fix it. When I told him there was not, he wanted to know why. This is what I learned:
- Why is there a dependency on the previous install/patch files?
Basically, we need them to perform patching, repairing or to uninstall. We can either store the install/patch files on the HDD for easy retrieval, or the original installation media is required. When these files have been removed from the installer cache, the original installation media is required, whether that be from an actual DVD or a download.
- Is there a way to suppress the registry check when applying a patch?
The registry has a mapping to the files in the installer cache so when an operation like uninstall needs to call on one of those files it looks to the registry to find it because of the cache file intentionally being ambiguous. To suppress the registry check suppresses the ability to locate these files.
- What information is the registry check doing that it needs these .MSI/.MSP files. Does it read it for version information or running the msi file?
A .msp file is just a container for transforms and files that apply to a .msi file. The .msi file must exist in order to be transformed and reinstalled. Any patches that are registered from previous installs must also exist, so when any of these files are missing it is a big problem. When a patch is applied to a product, the data in the RTM installation package plus the new data of the patch creates a view. When another patch in a separate install transaction is applied, the view is now the RTM, the first patch, and now the current patch being installed. Setup expects and needs these files to be in the Windows Installer Cache. Missing Windows Installer Cache Files Will Require a Computer Rebuild
Fortunately, SQL Support Engineers figured out a way to work around this .
Is it tedious and time consuming? Yes, but not nearly as bad as it used to be before FindSQLInstalls.vbs.
Is it better than doing a system rebuild? Only you can answer that question.
You can run FindSQLInstalls.vbs proactively to ensure you have all the necessary files in your Windows Installer Cache before your next scheduled patch install.