About Windows Installer, the .NET Framework, and Visual Studio.
When I announced that Visual Studio 2008 SP1 RTM will install over SP1 beta, we were on track to make that reality. However, when SP1 beta shipped we found that adding new components into existing features was causing a prompt for source for non-default installations of Visual Studio 2008. To fix this, we would have to remove those components and put them into a new feature. This, in turn, causes the installation to not actually update most files if the beta was installed because it advertises the features.
After a lot of discussion, we decided that because a prompt for source is a blocking issue for more customers that installed the beta we would block SP1 RTM from upgrading SP1 beta. To make this easier, we have provided a tool that uninstalls only certain beta patches. Not all patches need to be removed so this exercise is made simple and relatively faster than uninstalling all of the beta.
Note: you do not have to uninstall Visual Studio 2008 Express Editions with SP1 Beta prior to installing Express SP1 RTM. The tool described below for VS box SKUs does not apply to Express SKUs.
If you installed VS2008 SP1 Beta, you will see a dialog similar to the following.
The dialog above lists all the pre-release updates that must first be removed, depending on which you have installed. It reads,
You must first use Microsoft Visual Studio Patch removal tool before installing Visual Studio 2008 SP1. The tool will verify Visual Studio integrity and remove previous Visual Studio 2008 updates or pre-release software Microsoft Visual Studio 2008 - KB945140 (Beta) Microsoft Visual Studio 2008 - KB944899 Microsoft Silverlight Tools Beta 1 Microsoft Visual Studio 2008 - KB949325
You must first use Microsoft Visual Studio Patch removal tool before installing Visual Studio 2008 SP1. The tool will verify Visual Studio integrity and remove previous Visual Studio 2008 updates or pre-release software
The tool is straight forward to use and should allow you to install VS 2008 SP1 - assuming you are running as an administrator and have applicable products installed.
When VS 2008 SP1 Beta is installed it adds new components to existing features. This causes Windows Installer to install that feature, its parent features, and all those features' child features which follow their parent install state. If one of those features was not already installed, the files authored into that feature likely do not already exist on your machine. Windows Installer then prompts for source to find and install those files.
To fix this, we have to move those new components to new top-level features which always get installed.
Because a patch alters the view of the product - the installer package (.msi file) and all patch packages (.msp files) combined - those new components are now part of the product. When SP1 Beta is already installed and SP1 RTM is being installed, those new components in Beta get removed from their parent features and put into new features. Because a there is no "move" operation, it's actually a "delete" and an "add". Deleting a component, however, advertises the parent feature. The result is that any files within affected features are not updated because they are not registered as being installed locally. In fact, none of those files will ever be upgraded again until the product is reinstalled with a specially crafted command line specific to your machine, or uninstalled and then re-installed. That means no updates and no new features for a lot of the product.
Based on the estimated number of people that installed the beta and the number of people that customized their installations of Visual Studio 2008, we felt it was better to block installation of VS2008 SP1 RTM if VS2008 SP1 Beta was installed. We also block if features installed with applicable products are also already advertised since this could happen in a couple of other scenarios - like if KB944899 was installed and you then installed SP1 Beta.
The tool we have provided performs these same checks on product that SP1 updates and attempts to fix them. When uninstalling patches, however, you might be prompted for source to restore files in shared components. This happens when share components in another product were already updated. When any other products' shared components are then updated, those products' baseline caches are not updated with a backup copy of those shared files already updated. To streamline the operation, for one product where this happened 100% of the time we shipped the source but it was small - only a few megabytes. But for Visual Studio and other products which are much larger overall, note the title of the source prompt dialog, insert your installation media (network installs likely won't cause prompts), and browse to the path of that product. Typically this will be vs_setup.msi in the root directory for the drive containing the installation media.
Updated: added that users do not have to remove Express SP1 Beta prior to installing Express SP1 RTM.
My copy of Visual Studio 2008 on my Windows XP 64 bit computer is located on my D: drive. The OS is located on my C: drive.
At first SP1 refused to install because it claimed that I needed about 4.x GB of free space on my C partition which was not then available.
With very few exceptions, I do not want my applications on my C partition but I managed to free up enough space so that the installation would proceed. Then without giving me any option as to where the components would be installed, SP1 put about 1.95 GB in a folder entitled Microsoft Help under Application Data in Documents and Settings.
It would appear to me that the installer for SP1 has two problems: (1) flawed logic in determining how much drive space is needed on which partition and (2) flawed logic on where it placed the updated components -- if you don't give the user a choice, these locations should match, not override, his earlier choice.
I did not have the Beta 1 of SP1 installed on this computer.
Cal, space is required on your system drive (C:) because Windows Installer - the installation engine that installs our packages - requires it for both temporary and cached files. You can view specifics at http://blogs.msdn.com/heaths/archive/2008/07/24/why-windows-installer-may-require-so-much-disk-space.aspx. It mentions a couple of ways you can reduce the amount of space required when installing the packages, but you'll still need to free up space.
The logic is not flawed, per se (it's not 100% accurate for various reasons related to machine state, but not far off). That much space is really required on your system drive - at least temporarily. This does account for the files to be updated and does indeed know where they are. The bootstrapper does require different size on your system and product drives (which are often the same for most customers, but does understand they can be separate).
Try running the Disk Clean utility or compress some folders.
Hi, I've got completely stuck now. I have Vista x64 and had VS2008 Pro + SP1 Beta installed. I've completely stripped everything VS related and even back down to .net 3.0 but now after a fresh VS2008 install the SP1 install complains about KB944899. The patch removal tool works without error but makes no difference. I've even installed KB944899 again and then uninstalled manually. I've searched the registry for it, checked the WMI QFE list and I can't find any trace of it. Is there a difference in the way the patch removal tool and SP1 installer check for its presence? Any ideas what to try next appreciated!
Hi, I'm in exactly the same situation as Dave above. I need to install SP1, but can't because the install complains about KB944899. I ran the removal tool, searched the registry, re-installed VS2008, etc etc.
Following Heath's suggestion, I ran the "collect" utility and posted the vslogs.cab file at skydrive.live.com (public folder at bernardo-castilho at hotmail dot com).
This is killing me. Please help. I need to install SP1 so I can install Silverlight RC0 so I can work...
Bernardo, we found a discrepancy with how the removal tool detects on which products KB944899 is installed and how SP1 detects it. But removing it manually only removes it from the product on which you see it. It doesn't remove it from every products. In these cases, it actually applies to multiple products.
Unfortunately there's no mapping that I can find using your email address to access your SkyDrive. Please log into your SkyDrive and copy and paste the URL as a comment here or email it to me using the contact form at the top of this page.
Why can't we direct more of vs2008 and/or
sp1 to another drive besides C?
You keep telling people over and over
to do these extremely unappealing things:
why can't the program stop dumping stuff
on C? I guess you don't know that many
people have laptops or machines that
had been partitioned with a small C
partition. So they go buy a usb drive and
have tons of space. And that would work
great except that vs2008 refuses to put
much of anything on a drive besides C.
What are you thinking? Please stop doing
this and listen to the customers.
We don't want to get rid of caching etc.
we want it to go somewhere besides C!
The Tool prompts me to enter the path to 'VistaClientSDKTools-x86.msi'
I'm on WinXP I did not install any VistaClientSDK tools I dont' have this msi
I have had VS2008 sp1 beta installed. When i was running the patch removal tool, it wouldn't recognize the media for vs2008. So I removed vs2008, then reinstalled vs2008 only. When i try to install vs2008 sp1 it says that i must run the patch removal tool. when it run the patch removal tool, it fails with error code 0x8007066F. What do i do now? It's probably an inconsistent registry key setting.
Michael, the VistaClientSDKTools-x86.msi is installed as part of VS (VS is actually a collection of a number of packages). It's the client tools for the Windows SDK for Vista, which covers Vista on down. You can find it compressed into wcu\WinSDK\WinSDK_Tools.exe. To extract it and all the contents (you'll need all of it), run 'WinSDK_Tools.exe /extract:"%TEMP%\WinSDK_Tools"' (without outer single quotes) and when asked for VistaClientSDK_Tools-x86.msi find it in %TEMP%\WinSDK_Tools.
I'm stuck. I had VS2008 SP1 beta installed, but ran into a problem with your install package. So, I deinstalled VS2008 and reinstalled it. Now when I run the patch removal tool, it completes successfull. When I run the VS2008 SP1 installer, it tells me that I need to run the patch removal tool to remove KB945140. How do I proceed?
Ignore my previous post since I got past that point.
Jim, the patch packages in SP1 actually apply to a lot of products, just not the main Visual Studio product. SP1 Beta was left installed to some product that needs to be updated. When removing Visual Studio all of it needs to be uninstalled. Obviously we don't want you to have to remove VS and due to isses discovered during the beta the removal tool was developed for customers who used the beta. Because of a couple of different issues in how they operate differently, the patch removal tool may not work for orphaned patches. Orphaned patches are typically a result of running msizap on products.
Search your registry for 'E4F34490B4BE97847AB7446D8AB3D908' (without quotes) but do not delete anything you find. Instead, please export the parent key and send them to me. You can use the Contact link above to send me a URL where I can grab the file(s) and tell you how to clean it up.