Unable to launch Visual Studio 2015 IDE after removing Update3

Visual Studio 2015 IDE can't be launched after removing Visual Studio U3. In the task manager it shows devenv.exe but there is no UI availavle on the screen. If I launch VS IDE again, the behavior remains same and the task manager shows two instances of devenv.exe. Even if I repair VS 2015, it doesn’t make any difference.

Post investigation, it is found that the issue occurs due to mismatched binaries.

       Microsoft.VisualStudio.Imaging.dll C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.Imaging\v4.0_14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Imaging.dll Yes N/A Loading disabled by Include/Exclude setting. 30 14.00.25125.3 6A7A0000-6A83C000 [0xF70] devenv.exe [1] DefaultDomain          

Microsoft.VisualStudio.Utilities.dll C:\windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.Utilities\v4.0_14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Utilities.dll Yes N/A Loading disabled by Include/Exclude setting. 19 14.00.23107.0 6B310000-6B3FE000 [0xF70] devenv.exe [1] DefaultDomain          

Here the component Microsoft.VisualStudio.Imaging.dll didn’t get reverted back to RTW. As per the VS logs (using VS collect tool):

• Both VSUpdate and MicroUpdate patches are now absent in the “view installed updates” section of ARP
• But, I still see those two patches applied to a small number of MSIs (full list of MSIs they’re applied to is below)

As per the MSIINV output,

{030A6785-C3A9-37DA-8530-444C320629FA} Microsoft Visual Studio 2015 Shell (Minimum)

   Package code: {19E2D78C-2716-44EF-B992-E383D631C8F3}

   Install date: 2016.09.02

        Version: 14.0.23107

      Publisher: Microsoft Corporation

     Assignment: Per-Machine

       Language: 1033

        Package: vs_minshellcore.msi

  Local package: C:\Windows\Installer\87217e.msi

Installed from: C:\ProgramData\Package Cache\{030A6785-C3A9-37DA-8530-444C320629FA}v14.0.23107\packages\vs_minshellcore\

    Last source: n;1;C:\ProgramData\Package Cache\{030A6785-C3A9-37DA-8530-444C320629FA}v14.0.23107\packages\vs_minshellcore\

       Features: Provider, vs_minshellcore, PID_Validation, PIDGenX_DLL, System.Threading.Tasks.Dataflowx86enu, Servicing_Key

Total features: 6

              6: Local

          Patch: {D174F2C0-A894-495F-B276-C28B52D4DBB4} KB3151378 (Applied)

          Patch: {B9041113-67E7-46A3-BC24-A977D1FD13A1} KB3165756 (Applied)

  Total patches: 2

 

 

{14D1CABE-2B5A-3AED-B3A7-42315D062965} Microsoft Visual Studio Enterprise 2015

   Package code: {FE7684DC-63FA-401C-A1BA-A879B3C57FAE}

   Install date: 2016.09.02

        Version: 14.0.23107

      Publisher: Microsoft Corporation

     Assignment: Per-Machine

       Language: 1033

        Package: vs_enterprisecore.msi

  Local package: C:\Windows\Installer\872219.msi

Installed from: C:\ProgramData\Package Cache\{14D1CABE-2B5A-3AED-B3A7-42315D062965}v14.0.23107\packages\enterprisecore\

    Last source: n;1;C:\ProgramData\Package Cache\{14D1CABE-2B5A-3AED-B3A7-42315D062965}v14.0.23107\packages\enterprisecore\

      Help link: https://go.microsoft.com/fwlink/?LinkId=133405

       Features: Provider, Visual_Studio_Ultimate_x86_enu, Team_Developer_and_Test_tools_x86_enu, Testing_Tools_12153_x86_enu, VsttliteSpecific_Feature, VsttLite_Update1_Feature, VSU_TestTools_Update1_Feature, VSU_TestTools_Update2_Feature, AgileTestWindow_net, ProductRegKeyVSTS_12211_x86_enu, PID_Validation, PIDGenX_DLL, Servicing_Key, Detection_Keys

Total features: 14

             14: Local

          Patch: {B9041113-67E7-46A3-BC24-A977D1FD13A1} KB3165756 (Applied)

  Total patches: 1

 

{DE064F60-6522-3310-9665-B5E3E78B3638} Microsoft Visual Studio Community 2015

   Package code: {4CCB2524-FCB2-461B-9530-CF2737B95732}

   Install date: 2016.09.02

        Version: 14.0.23107

      Publisher: Microsoft Corporation

     Assignment: Per-Machine

       Language: 1033

        Package: vs_communitycore.msi

  Local package: C:\Windows\Installer\8721d1.msi

Installed from: C:\ProgramData\Package Cache\{DE064F60-6522-3310-9665-B5E3E78B3638}v14.0.23107\packages\communitycore\Setup\

    Last source: n;1;C:\ProgramData\Package Cache\{DE064F60-6522-3310-9665-B5E3E78B3638}v14.0.23107\packages\communitycore\Setup\

       Features: Visual_Studio_Community_x86_enu, VB_for_VS_7_Pro_11320_x86_enu, Provider, VCsh_for_VS_7_Pro_810_x86_enu, VWD_for_VS_Pro_11324_x86_enu, Testing_Tools_for_Pro_x86_enu, Code_Analysis_Tools_11987_x86_enu, Performance_Tools_11988_x86_enu, TSDevPkg_12650_x86_enu, WinSDK_EULA, VS_Remote_Debugging_x86_enu, PID_Validation, PIDGenX_DLL, SilverlightSL4_Reg, Servicing_Key, Detection_Keys, UnitTest_Agent_12142

Total features: 17

             17: Local

          Patch: {B9041113-67E7-46A3-BC24-A977D1FD13A1} KB3165756 (Applied)

  Total patches: 1

 

{DF32E41C-24AD-4A87-B43A-B38553B1806E} Visual Studio 2015 Prerequisites

   Package code: {470C3138-DE41-4A82-AF51-621DA2F70582}

   Install date: 2016.09.02

        Version: 14.0.23107

      Publisher: Microsoft Corporation

     Assignment: Per-Machine

       Language: 1033

        Package: VS_Prerequisites_x64_neutral.msi

  Local package: C:\Windows\Installer\872106.msi

Installed from: C:\ProgramData\Package Cache\{DF32E41C-24AD-4A87-B43A-B38553B1806E}v14.0.23107\packages\64bitPrereq\x64\

    Last source: n;1;C:\ProgramData\Package Cache\{DF32E41C-24AD-4A87-B43A-B38553B1806E}v14.0.23107\packages\64bitPrereq\x64\

      Help link: https://go.microsoft.com/fwlink/?LinkId=133405

       Features: VS_BSLN_enu_amd64_sfx_SETUP, Provider, Visual_Studio_A64_Prereqs_amd64_enu, WinSDK_Registry_x64, Servicing_Key, Detection_Keys

Total features: 6

              6: Local

          Patch: {B9041113-67E7-46A3-BC24-A977D1FD13A1} KB3165756 (Applied)

  Total patches: 1

 

{66D86CBC-EFCD-3502-A249-F91F775427F8} Microsoft Visual Studio Premium 2015

   Package code: {B5F4BF5C-5086-4A0C-BF4E-C821E0401A7B}

   Install date: 2016.09.02

        Version: 14.0.23107

      Publisher: Microsoft Corporation

     Assignment: Per-Machine

       Language: 1033

        Package: vs_premiumcore.msi

  Local package: C:\Windows\Installer\8721fa.msi

Installed from: C:\ProgramData\Package Cache\{66D86CBC-EFCD-3502-A249-F91F775427F8}v14.0.23107\packages\premiumcore\

    Last source: n;1;C:\ProgramData\Package Cache\{66D86CBC-EFCD-3502-A249-F91F775427F8}v14.0.23107\packages\premiumcore\

      Help link: https://go.microsoft.com/fwlink/?LinkId=133405

       Features: Provider, Visual_Studio_Premium_x86_enu, VB_for_VS_7_Ent_28_x86_enu, VCsh_for_VS_7_Ent_670_x86_enu, Team_Developer_Tools_11986_x86_enu, Testing_Tools_for_Dev_11989_x86_enu, VSU_UITest_Components_Update1_Feature, TSDevPkg_12650_x86_enu, VsttliteSpecific_Feature, VsttLite_Update1_Feature, SilverlightSL4_Reg, Servicing_Key, Detection_Keys

Total features: 13

             13: Local

          Patch: {B9041113-67E7-46A3-BC24-A977D1FD13A1} KB3165756 (Applied)

  Total patches: 1

 

What happened:

When VSU3 is uninstalled, it also uninstalls MU3.x (MicroUpdate 3). That is okay. However, the MU3.x uninstall didn’t remove the MU MSP (patch) that targets many VS MSIs. 

From dd_patch_KB3165756_2060902195618.log:

 

[1914:1DB8][2016-09-02T19:56:20]i201: Planned package: kb3165756_enu, state: Present, default requested: None, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: Unregister

[1914:1DB8][2016-09-02T19:56:20]i201: Planned package: kb3165756, state: Present, default requested: None, ba requested: None, execute: None, rollback: None, cache: No, uncache: No, dependency: Unregister

 

Why did it happen:

Unfortunately, this is how bundles are designed to work for performance reasons. It is assumed that if a patch bundle (like VS Update) is being removed because it is a related bundle and the related parent bundle is also being removed, then the parent bundle will be uninstalling the product (MSI) so the patch bundle doesn’t need to remove the patch (MSP). If it didn’t do this, it would take twice as long to uninstall VS when VS Update is also present. So this performance design works great for the VS & VS Update scenario.

 

However, this design does not work with Micro Updates which are a patch to a patch. Since it is assumed that if a patch bundle (like MU3.x) is being removed because it is a related bundle and the related parent bundle (VSUpdate) is also being removed, then the parent bundle will remove the product. But, VS Update isn’t a product, it is a patch. So what happens here is that the VS U3 patch gets removed but the MU3.x patch does not get removed since the product (VS RTM) is still present.

 

Workaround:

Find all the Micro Updates on your machine. Even though the Micro Updates are already uninstalled when VS Update is uninstalled, there is still a copy of the MU setup exes in the SecondaryInstaller cache. Note: The paths will vary depending on the versions of MUs you previously had installed. You can find them by running this command:   dir "\ProgramData\VS14-KB*.exe" /s

 

Next, run all of these exes with “/uninstall” to force it to uninstall the MUs again using the below commands. This time, they will not run in “related bundle” mode so they will actually remove the patch (MSP) and VS files that are patched will go back to their RTM version.

 

C:\ProgramData\Microsoft\VisualStudioSecondaryInstaller\14.0\installers\MicroUpdate2.1\en\0\vs14-kb3151378.exe /uninstall

 

C:\ProgramData\Microsoft\VisualStudioSecondaryInstaller\14.0\installers\MicroUpdate3.4\en\0\vs14-kb3165756.exe /uninstall

 

If you find more than one MU, uninstall all of them just to be sure they are all removed. On my machine, I previously had MU2.1 and MU3.4. That is why even after uninstalling VS U3 some MSIs still had 2 patches applied. Now the VSU3 and MU3.4 and MU2.1 patches are all removed and Visual Studio IDE can be launched successfully.