November 5th, 2008

Visual Studio 2008 SP1 may complain that another patch is installed even after removing it

Heath Stewart
Principal Software Engineer

If Visual Studio 2008 SP1 prompts you to run the Microsoft Visual Studio Patch removal tool, it means that a patch or product is installed that would cause issues when installing VS2008 SP1. The dialog is shown below.

Microsoft Visual Studio Patch removal tool

If you run the the patch removal tool and are still seeing this dialog, please follow the workaround below.

Workaround

You will need to search and possible modify your machine’s registry.

Warning If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

You need to search for “E4F34490B4BE97847AB7446D8AB3D908” which is a representation of the patch code for SP1 Beta – ENU. Only if it is found under key locations described below can you remove it.

  1. Click Start and then click Run.
  2. In the Open box, type regedit.exe and click OK. If you are prompted with a User Account Control (UAC) dialog, please authenticate as an administrator or click Continue.
  3. In the Registry Editor, click on the very top node on the left.
  4. Click on the Edit menu and then Find.
  5. Paste “E4F34490B4BE97847AB7446D8AB3D908” (without quotes) into the Find dialog, and click Find Next.
  6. For each key location it’s found, take note of the path shown in the status bar at the bottom of the Registry Editor window. You may also click on the Favorites menu and click Add to Favorites, then record the full key location.

If you find this key under “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products” then the patch is still installed for a product. Try running the patch removal tool again and make sure it completes successfully. If you’re prompted for source, please provide that source to continue.

If you do not find this key under “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products” then you may delete the other keys where this was found. This may include one or both of the following locations.

  • HKEY_LOCAL_MACHINESOFTWAREClassesInstallerPatchesE4F34490B4BE97847AB7446D8AB3D908
  • HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18PatchesE4F34490B4BE97847AB7446D8AB3D908

If you do find it under “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18PatchesE4F34490B4BE97847AB7446D8AB3D908”, before deleting that key look at the LocalPackage value in that key. If that file exists you may delete it but only if “E4F34490B4BE97847AB7446D8AB3D908” was not found under “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products” anywhere.

Other patch code representations that the removal tool searches for are listed below. If you continue to have problems after following the steps above, please follow the directions replacing “E4F34490B4BE97847AB7446D8AB3D908” with each of the codes below.

Search String Description
94E9A4505F113244FB4A3C28380E768A VS 2008 SP1 Beta – JPN
9C468D694DD2B6B43A37E83C10FB9BDC VS 2008 SP1 Beta – ENU
E0C2BE1E3AD62954F9889DB3B7EB8DE9 VS 2008 SP1 Beta – JPN
785EB8DAEAC5A0C43986F470702962A2 VS 2008 SP1 Beta – ENU
879E3F5E6076B744EBA74D306B78A666 VS 2008 SP1 Beta – JPN
39B697780D497C0AFE4CFF43246662CB WinSDK for VS 2008 SP1 Beta
B6CB70ACD357B9847BB73583153965BE WinSDK for VS 2008 SP1 Beta – ENU
87AA009B3D988074B9983389699E0D47 WinSDK for VS 2008 SP1 Beta – JPN
A09F7473B850ED84B84A805EE9C85218 Remote Debugger (Kb944899) (v1)
2C3B4567357090C4CBD2FA9F6A3E92EF Silverlight Tools 2 Beta 1
970C23E898B72094ABE1D569D8A2D119 VS Shell SP1 Beta – ENU
E4E045C3623C16E43A1C2F6693C19081 VS Shell SP1 Beta – JPN

Details

VS2008 SP1 calls MsiGetPatchInfo() to determine if the patch is already installed before it attempts to download it if needed. This API does not require a ProductCode and checks the bulleted locations above for product-independent information which is only the LocalPackage. The source list for the patch is also stored independently of the product but is not relevant.

Since the patch removal tool does not need to carry payload, a list of target ProductCodes is authored into the package and the tool calls MsiGetPatchInfoEx() which does require a ProductCode. This queries the product-specific key under “HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataS-1-5-18Products” for product-specific patch information.

Windows Installer should remove the patch when the last product to which the patch is applied is removed or has the patch uninstalled from it. That is, when the patch is no longer applied to any products on the machine the patch information should be removed completely and the cached patch package itself removed from the %WINDIR%Installer directory. If you run msizap.exe on products to which the patch was applied it can cause this problem since msizap is not uninstall. Some other applications also wrap msizap and can cause the same issue.

Author

Heath Stewart
Principal Software Engineer

Heath is an application architect and developer, looking to help educate others to learn professional development. Besides designing and developing applications he enjoys writing about intermediate and advanced topics. Heath also consults for deployment packages and scenarios within Microsoft and for external customers.

0 comments

Discussion are closed.