The official source of product insight from the Visual Studio Engineering Team
Setup is the first experience most of us have of Visual Studio, and in the Visual Studio 2012 we’ve made significant investments in improving your experience. Many of you have already told us you like our new setup user interface (thank you!). We have also been investing in ratcheting up the speed at which we lay bits down, improving the experience for non-English installations, and honing the experience you use to select which components to install.
Let’s start by looking at the last of these first. As many of you noted, the Visual Studio 2012 (11) beta didn’t have the capability to customize installation. Although most users select the default (which is to install the full product), a significant number of you customize the installation. During beta, we hid the customization option to help us gather more data on full installation performance and reliability. We’re happy to say that we brought back customization in Visual Studio 2012 RC. Based on the choices you make, the customization allows you to reduce your install size by about 2.5GB and about 25% of the install time.
During the beta timeframe we ran a survey of several hundred beta users and asked they would like from setup customization. The overwhelming answer was to improve VS performance by not having it load features that aren’t used, followed by reducing the complexity of the product and reducing on-disk size. We think we’ve gone a good way toward addressing these desires, but we know we can do more. We are very interested in how you’d like to see this look in future releases, what level of granularity you’d like, and what kinds of things you want to customize about your Visual Studio install. So please give us feedback on setup customization, either in the comments to this blog post, in the Forums, as suggestions on User Voice, or as bugs you log on Connect.
Customization isn’t the only investment: one of the most significant areas we’ve invested in is the speed at which setup lays bits down. Whether you’re installing Visual Studio Express products or a full installation of Visual Studio Ultimate, we wanted to shorten the amount of time it takes to get you coding. From setup perspective, we look at a couple of measures of performance. The first is how long it actually takes to complete a full installation of the product –about 35 minutes on average for a full installation of VS Ultimate from local media on test hardware representative of the average VS customer. We also look at the throughput we are able to achieve during installation – how long each VS package takes to install relative to its size. As an example, some packages that compress really well but are otherwise very simple like MFC maintain a throughput of up to 7MB/Sec; other packages that are small but need to place files in the global assembly cache or write a lot of registry keys may achieve throughput below 1MB/Sec. From beta to RTM our goal was to improve both of these measures: the amount of time it takes to install VS in absolute terms and overall the throughput.
To do this, we undertook several efforts. To start, at the beginning of the Visual Studio 2012 cycle we transitioned off of our old install engine onto a new engine that by itself is capable of maintaining faster throughput on simple packages than the setup engine we used in VS 2010. We also made a change early on to parallelize the download of the packages we’re installing as the installer is running so that much of the download time happens in the background while installing.
But that wasn’t enough. So we asked ourselves a pretty audacious question: between beta and RC could we cut 10 minutes (about 30%) from the installation?
For the last three months, that’s what we’ve been trying to accomplish. We found places in setup where we were calling the same function repeatedly where we didn’t need to. We unpacked the templates from VSIX packages and put them into MSIs to eliminate the double-decompression. We found several duplicate packages and, although the installation process wouldn’t install them, we removed them to save the seconds it would take to check to see if they were already present. And of course we reduced the number of custom actions.
So did we make our 10 minute goal? Almost: we eliminated a little over 8 minutes off of the installations in our performance lab before we had to begin locking the release down. For the rest of the release we’re going to focus on maintaining those improvements and setting ourselves up for a great RTM.
One more thing for users who install VS in a language other than English: Visual Studio 2012 supports language packs. Language packs make it much faster and easier to add an additional language to Visual Studio because you don’t need to download and install a full version to add a new language: you just add the pack for the language you want.
Please let us know how we are doing and how you’d like to see setup change in the future. We have a lot of good ideas already, and are always open to new ideas or to confirmation that we are prioritizing ideas correctly. As always, we are reading your comments on this post, watching for issues in the Forums, listening to your suggestions on User Voice, and reviewing any bugs you log on Connect.
David Guyer – Senior Lead Program Manager, Visual Studio Setup Team
Short Bio: David Guyer is currently the Lead Program Manager for Visual Studio Setup and has been working on deployment technologies in Visual Studio since Visual Studio 2002.
2.5 GB reduction in size? A 1 TB disk can be had for $100 or less, you should not be wasting time on such small things - the most important part for you should be having happy users who will not reach out for Uninstall option. Or even get it installed in the first place.
P.S. I've used VS since VS 6.0 and Visual C++ 1.5 (moved to C++Builder later which was much more Visual but you've changed it and now you are going in reverse).
My C partition only had 5gb free but the installer
a) Didn't take the fact i was upgrading into account.
b) Didn't let me say i didn't want C++ so i had to free the space before i could deselect it.
1. Thanks for your reply. You are hard-working. But you did not answer the first suggestion.
At first I suggest to list C++, C#, VB, F#, but you give option of "Microsoft Foundation Classes for VC++" which is part of C++. It is a wrong way to reduce installation size. Because:
- MFC should not be on the same hierarchy level with Office Development, Web Development...etc. Ugly option, if we cannot list language, do not display MFC here.
- As C++ programmer, I am sure we are willing to install MFC, although some project does not use MFC. In fact, did you see developer installs VC, but does not install MFC?
- List it will confuse customer. If programmer want to use MFC to do Office Development. Select "Office Development is enough" or we must also select MFC? This option break your principle base on platform.
So although it can reduce size, but we do not suggest to do so. To give user brief and clear installation UI is more important than save spaces. I just want to development Web related application, so just select "Web Application", this is good design. Do not let user to consider if I should select something else or not. MFC, if I do not select it, that will affect Web Development?
Hard disk is cheaper and cheaper, user will forget disk space. But if you left it there, in the past, nowadays and in future, user may think it is a bad and ugly design.
2. I am glad that you are considering how to give SQL related components a seperate install option. I think the worst condition is just give option for SQL Server 2012, and install other SQL related service, tools, CLR types...etc by default. The worst condition is acceptable, but not perfect.
The SQL installation is the focus point that many users asked you to improve it.
I think the main reasons are:
- SQL Server related services slow down our PC, even we do not need them at all.
- SQL Server related content is big, occupy disks. Also waste time during installation.
- SQL Server related components list is so long. To uninstall them all is a boring process.
Do you think so? I hope you will consider them before RTM release.
I was impressed with the setup experience of the net Visual studio, but that went south very fast when I noticed none of my projects in VS2010 were building anymore.
The setup broke EF in all versions of VS.
So I would like to see a bit more tweaking on that point.
Dont get me wrong, I like the new improvements, so if you can fix this issue, it would be as near to perfect as I would want it to be.
I've read all of David Guyer's responses, but I didn't see a simple one sentence explanation for why the language options were removed, when they've been there since the beginning. Maybe I'm missing something, but I don't see how 2012 is so different from 2010 that providing the same language options is a problem.
Anybody see what I'm missing?
One more question: again it might be just me, but this post is called "setup improvements", but I'm not seeing the improvements over 2010. Seems like a regression backwards, or is it just me?? Or maybe since Beta had no options, that this is now an "improvement" over having no options???
I appreciate your work and love the RC, but without the ability to exclude entire languages the setup customizations is unsatisfactory.
David, did you see my analysis on the UserVoice issue? visualstudio.uservoice.com/.../2639283
I just ran SpaceMonger and looked at the VS folder. It's pretty easy to see where components that are obviously optional are using up huge amounts of space. I can't really believe you couldn't put in an option to remove the VC++ libs at least, for non-C++ programmers. How can VS itself have any dependencies on those?
I'm not sure how much benefit there is in making the other languages selectable - they don't seem to occupy anywhere near the disk space of C++. However, removing all the .NET stuff as one lump would be beneficial - look at all those "assembly" folders.
The SQL situation really could use a fix. Firstly, you mention dependencies, but I got rid of all of it and haven't found anything I need to do in VS that doesn't work. I left SQL Server Compact 4, because I thought that was needed for Intellisense. But I think that's separate from SQL Server proper, and the rest of it didn't seem to do anything for me. And, if I actually was a SQL user, I'd go nuts looking at that massive list of components. Why can't SQL Server have a single entry with all the components as tickboxes within it?
Yanghua, I'm an example of a C++ programmer who would remove MFC on its own. Those libraries are pretty big and I don't use them. I'd like the ability to do the same with the x64 and ARM libs (and why not even the x86 libs, if you didn't need those.)
Thank you for reporting those issues.
We have already fixed the second issue by not blocking until you get to the Customization page. That way, you can reduce your install footprint and have that taken into account before we block the install due to insufficient space. Otherwise, that would be a real problem!
You have found a real problem in that the disk space requirements don't take upgrades into account. We haven't integrated upgrade knowledge into the size calculation engine, and adding that is non-trivial. I've logged a bug to see if and when we can fix this. The workaround if you are blocked is to uninstall the existing version, then install the new version.
I was able to talk to the team that owns the EF pieces, and we are looking into how to solve this problem for RTM.
Why VS 2010 custom installation let user to select language?
Why VS 2012 forbid user to do so?
Installation options base on platform means nothing. In fact almost all will be installation no matter how and what you select and disselect. Only SQL Server option is useful, other options, for example "Office Development", "Web Development", there is no difference when you select or disselect them.
In fact, in VS2003, 2005, 2008 and 2010, user is allowed to select language. That is a flexible and efficient way. Why it is cancelled in VS2012?
- Microsoft Visual Studio 2012
- Visual Basic
- Visual C++
- Microsoft Foundation Class
- ARM Compilers and Tools
- X64 Compilers and Tools
- Visual C#
- Visual F#
- Microsoft .NET Development
- Microsoft .NET Framework 3.x
- Microsoft .NET Framework 4.x
- Microsoft Office Development
- Microsoft SharePoint Development
- Microsoft Silverlight Development
- Microsoft Silverlight 4 SDK
- Microsoft Silverlight 5 SDK
- Microsoft Web Development
- Microsoft ASP.NET Development
- Microsoft Information Service 7.5 Express
- Microsoft Mobile Development
- Microsoft Windows Phone 7.x
- Microsoft Windows Phone 8.x
- Microsoft SQL Server Development
- Microsoft SQL Server 2012 Express
- Microsoft Blend for Visual Studio
- Visual Studio LightSwitch
- Dotfuscator and Analytics
for Visual C++, add "CLR support"
- Visual C++
- Microsoft Foundation Class
- ARM Compilers and Tools
- X64 Compilers and Tools
- CLR support
The new VS icon is so ugly. Can we change icon back to VS 2010?
Thanks for being responsive to this post. Can you please address the Elephant in the room: Why is there no option to only install specific language environments/libraries?