Improving Setup in Visual Studio 2013 Update 2
A few weeks ago at the Build conference, we released a release candidate of the second update to Visual Studio 2013. This update of Visual Studio contained significant new functionality including being able to create Universal Apps for both Windows and Windows Phone. To be able to target Windows Phone, developers need to use emulators which run the Windows Phone operating system within the developer’s Windows installation. These emulators are full virtual machines and are therefore quite large (hundreds of megabytes). While they are a necessary component for Windows Phone development, they are not necessary for all developers that want to take advantage of the other features in Visual Studio. Rather than make you wait for the setup to finish before you can start coding, VS 2013 spring update installs these emulators asynchronously. With this asynchronous installation feature, VS can complete the basics of setup, then continue downloading and installing other components in the background. We’re starting with the emulators, but we will be on the lookout for other capabilities that might lend themselves to this behavior. Here’s a quick look at how it works.
Before VS can asynchronously install a feature, we have to pick the features that are good candidates for being installed after the rest of VS is actually up and running. We do that by looking at aspects of the components such as download and on-disk size, the speed with which a component installs (for example, components that write to the registry a lot may install more slowly than components that don’t), and use patterns. Windows Phone 8.1 emulators are a good fit as they are large in size, install quickly (for their size), and are used after coding starts.
Once we’ve picked a candidate for asynchronous installation, we author setup and tell the setup engine to download and install the component separately from the rest of Visual Studio. Practically speaking, the asynchronous download UI appears as a minimized progress dialog after traditional setup completes. Asynchronous download uses a background network priority to minimize the effect on your other network activity. This download is robust to both launching Visual Studio and to restarting Windows.
Figure 1: Asynchronous download is seen as the second progress bar after traditional setup completes.
Once you use a part of Visual Studio that we partitioned for asynchronous setup, VS will invoke setup for that component and actually install it. For Windows Phone 8.1 emulators, one trigger will happen when you select F5 in a Windows Phone 8.1 project: When you select F5, you need to choose either a physical Windows Phone 8.1 or the Windows Phone 8.1 emulator. If you choose the 8.1 emulator, then you start to install the emulator. Because the emulator is already downloaded, it will take a few minutes to complete setup and continue. For Windows Phone 8.1 emulator we’ve found that most customers will experience a setup time reduction around 20 minutes (at average North American broadband speeds) by fetching the emulator in the background.
As always, we are reading your comments on this post, watching for issues in the Forums, listening to your suggestions on User Voice, tracking smile and frown Feedback, and reviewing any bugs you log on Connect