About Windows Installer, the .NET Framework, and Visual Studio.
Some customers are reporting that Microsoft Visual Studio 2008 SP1 is failing to install with the following error in the HTML log you can view from the error dialog.
Patch (C:\Users\heaths\AppData\Local\TEMP\WebDesignerCore_KB950278.msp) install failed on product (Microsoft Office Enterprise 2007). Msi Log: Microsoft Visual Studio 2008 SP1_20080816_141317516-Microsoft Office Enterprise 2007-MSP0.txt Final Result: Installation failed with error code: (0x80070663), This update package could not be opened. Verify that the update package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer update package.
Most often this happens because a patch package is missing from the Windows Installer cache and is required to install a new patch. In this case, the Windows Installer cache must be rebuilt.
While the method to determine which packages have to be restored is fairly generic, these following instructions are specific to Office to serve as an example and because this seems to be the most common case given the likely cause described in the next section, Prevention, and the size of Office 2007 SP1 patch packages.
Couldn't find local patch 'C:\WINDOWS\Installer\3bb98.msp'. Looking for it at its source.
Note: 1: 2203 2: C:\Temp\OWP15A.tmp\MAINWWsp1.msp 3: -2147287037
cd %TEMP%
office2007sp1-kb936982-fullfile-en-us.exe /extract:"%TEMP%\office_2007_sp1"
copy "%TEMP%\office_2007_sp1\MAINWWsp1.msp C:\WINDOWS\Installer\3bb98.msp
Now try installing VS2008 SP1 again.
While there are potentially other reasons packages might be missing from the Windows Installer cache in %WINDIR%\Installer, the most common cause is when those files are deleted to free up disk space. Those files directly under %WINDIR%\Installer are required for Windows Installer to function properly for all maintenance installations, which is everything after initial install including patch install, patch uninstall, repairs, changes to feature selection, and even product uninstalls. These files must not be removed.
If you need to free disk space, be sure to run the Disk Cleanup utility in your your Accessories / System Tools programs folder first. You can also uninstall old and unneeded applications.
Because Windows Installer may require a lot of space on your system drive, be sure to partition your hard disk with plenty of space not just for Windows or Windows Installer, but also because a lot of applications may install to Program Files or Common Files which are, by default, on your system drive.
Windows Installer will always open every patch registered to a product whether or not it has already been obsolesced or superseded when opening a product or package handle (as long as machine state is not ignored). When performing a maintenance installation, a product is opened and all patches registered to that product are opened. If one or more of those patch packages is missing from the Windows Installer cache, Windows Installer attempts to resolve the location as you can see from the log below.
MSI (s) (D4:98) [14:17:19:688]: Opening existing patch 'C:\WINDOWS\Installer\3bb98.msp'.MSI (s) (D4:98) [14:17:19:688]: Note: 1: 2203 2: C:\WINDOWS\Installer\3bb98.msp 3: -2147287038 MSI (s) (D4:98) [14:17:19:688]: Couldn't find local patch 'C:\WINDOWS\Installer\3bb98.msp'. Looking for it at its source.MSI (s) (D4:98) [14:17:19:688]: Resolving Patch source.MSI (s) (D4:98) [14:17:19:688]: User policy value 'SearchOrder' is 'nmu'MSI (s) (D4:98) [14:17:19:688]: User policy value 'DisableMedia' is 0MSI (s) (D4:98) [14:17:19:688]: Machine policy value 'AllowLockdownMedia' is 0MSI (s) (D4:98) [14:17:19:688]: SOURCEMGMT: Media enabled only if package is safe.MSI (s) (D4:98) [14:17:19:688]: SOURCEMGMT: Looking for sourcelist for product {BEE75E01-DD3F-4D5F-B96C-609E6538D419}MSI (s) (D4:98) [14:17:19:688]: SOURCEMGMT: Adding {BEE75E01-DD3F-4D5F-B96C-609E6538D419}; to potential sourcelist list (pcode;disk;relpath).MSI (s) (D4:98) [14:17:19:688]: SOURCEMGMT: Now checking product {BEE75E01-DD3F-4D5F-B96C-609E6538D419}MSI (s) (D4:98) [14:17:19:704]: SOURCEMGMT: Media is enabled for product.MSI (s) (D4:98) [14:17:19:720]: SOURCEMGMT: Attempting to use LastUsedSource from source list.MSI (s) (D4:98) [14:17:19:720]: SOURCEMGMT: Trying source C:\Temp\OWP15A.tmp\.MSI (s) (D4:98) [14:17:19:720]: Note: 1: 2203 2: C:\Temp\OWP15A.tmp\MAINWWsp1.msp 3: -2147287037 MSI (s) (D4:98) [14:17:19:720]: SOURCEMGMT: Source is invalid due to missing/inaccessible package.MSI (s) (D4:98) [14:17:19:720]: Note: 1: 1706 2: -2147483647 3: MAINWWsp1.msp MSI (s) (D4:98) [14:17:19:720]: SOURCEMGMT: Processing net source list.MSI (s) (D4:98) [14:17:19:720]: Note: 1: 1706 2: -2147483647 3: MAINWWsp1.msp MSI (s) (D4:98) [14:17:19:720]: SOURCEMGMT: Processing media source list.MSI (s) (D4:98) [14:17:25:470]: SOURCEMGMT: Resolved source to: 'MAINWWsp1.msp'MSI (s) (D4:98) [14:18:57:126]: Note: 1: 1314 2: MAINWWsp1.msp MSI (s) (D4:98) [14:18:57:126]: Unable to create a temp copy of patch 'MAINWWsp1.msp'.MSI (s) (D4:98) [14:18:57:141]: Note: 1: 1708 MSI (s) (D4:98) [14:18:57:141]: Note: 1: 2729
Failing to resolve the source location for the patch, Windows Installer returns error code 1635 (ERROR_PATCH_PACKAGE_OPEN_FAILED).
Often the simple solution is to find and restore the package to where Windows Installer expected to find it in the first place: back in the Windows Installer cache under %WINDIR%\Installer. You could also put it in the other locations where you see "SOURCEMGMT: Trying source".
All files directly under %WINDIR%\Installer are required. To free up additional space as mentioned in why Windows Installer may require so much space, you can delete subdirectories under or even all of %WINDIR%\Installer\$PatchCache$, or even disable it for future patch installations but at the cost of prompts for original source in many scenarios. The baseline cache files are intended to provide a backup of baseline (ex: RTM) files so that when they are needed they are available. They are needed when applying patches containing binary delta patches to individual files (as opposed to whole-file updates, which are more common) or when uninstalling patches.
You can also try finding and uninstalling superseded patches. Superseded patches are not actually uninstalled when superseded - they just become inactive. This way when all superseding patches are removed with respect to these superseded patches, those superseded patches become active again. You can even install patches in an initially superseded state for this very purpose. I do have an example of detecting superseded patches using PowerShell with the Windows Installer PowerShell Extensions installed but there are other ways by calling the MsiEnumPatchesEx() function or the PatchesEx method for script automation in your own applications or scripts.
I am having the problem mentioned here but the path to the patch that it is looking for is just ''. From looking up the GUID, it appears the patch it is looking for is the Outlook 2007 Junk Mail Filter (KB924884). I will try to find this an uninstall the patch, but would welcome any other suggestions. I tried uninstalling VS 2008, but that had no effect. Here are the lines from the log:
MSI (s) (60:C0) [08:30:57:097]: Machine policy value 'DisableUserInstalls' is 0
MSI (s) (60:C0) [08:30:57:191]: SRSetRestorePoint skipped for this transaction.
MSI (s) (60:C0) [08:30:57:199]: End dialog not enabled
MSI (s) (60:C0) [08:30:57:200]: Original package ==> C:\Windows\Installer\79ed39.msi
MSI (s) (60:C0) [08:30:57:200]: Package we're running from ==> C:\Windows\Installer\79ed39.msi
MSI (s) (60:C0) [08:30:57:254]: APPCOMPAT: looking for appcompat database entry with ProductCode '{91120000-0014-0000-0000-0000000FF1CE}'.
MSI (s) (60:C0) [08:30:57:254]: APPCOMPAT: no matching ProductCode found in database.
MSI (s) (60:C0) [08:30:57:259]: MSCOREE not loaded loading copy from system32
MSI (s) (60:C0) [08:30:57:442]: Couldn't find local patch ''. Looking for it at its source.
MSI (s) (60:C0) [08:30:57:442]: Resolving Patch source.
MSI (s) (60:C0) [08:30:57:481]: User policy value 'SearchOrder' is 'nmu'
MSI (s) (60:C0) [08:30:57:481]: User policy value 'DisableMedia' is 0
MSI (s) (60:C0) [08:30:57:481]: Machine policy value 'AllowLockdownMedia' is 1
MSI (s) (60:C0) [08:30:57:481]: SOURCEMGMT: Looking for sourcelist for product {F2A79AEA-5B0E-4AB9-A082-5680A86D1E00}
MSI (s) (60:C0) [08:30:57:481]: Note: 1: 1706 2: {F2A79AEA-5B0E-4AB9-A082-5680A86D1E00} 3:
MSI (s) (60:C0) [08:30:57:481]: SOURCEMGMT: Failed to resolve source
MSI (s) (60:C0) [08:30:57:481]: Searching provided command line patches for patch code {F2A79AEA-5B0E-4AB9-A082-5680A86D1E00}
MSI (s) (60:C0) [08:30:57:482]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 3: 2
MSI (s) (60:C0) [08:30:57:484]: File will have security applied from OpCode.
MSI (s) (60:C0) [08:30:57:786]: Original patch ==> C:\Users\Jeff\AppData\Local\Temp\Microsoft Visual Studio 2008 SP1\WebDesignerCore_KB950278.msp
MSI (s) (60:C0) [08:30:57:786]: Patch we're running from ==> C:\Windows\Installer\3c18ff9.msp
MSI (s) (60:C0) [08:30:57:788]: Note: 1: 1708
MSI (s) (60:C0) [08:30:57:788]: Product: Microsoft Office Professional 2007 -- Installation failed.
Thanks,
Jeff Rhodes
jrhodes@plattecanyon.com
Jeff, that is the other symptom for which I could explain the fix here for various reasons. However, I wrote a tool we posted to the Download Center here: http://www.microsoft.com/downloads/details.aspx?FamilyId=0BA6038C-061E-4B4A-9BE9-96A323701260.
The tool and this issue is also discussed a bit more here: http://blogs.msdn.com/heaths/archive/2008/04/18/microsoft-net-framework-2-0-service-pack-1-fails-to-install.aspx.
Thank you Heath for this information. I managed to install a Office 2007 SP2 on my computer which had a currupted install cache. What you say is that you have to rename the original named msp to the mps mentioned in the error log. Now I now what to do if it happens again.