The ISV Guide for Redistributing the .NET Framework and Other Runtime Components

 

Barak Cohen
Microsoft Corporation

October 2005

Summary: Managed applications and controls written with Visual Studio require the .NET Framework (and sometimes other runtime components) to be installed on the computer where the application or control runs. This article describes how ISVs can deploy the necessary runtime components with their applications. (11 printed pages)

Contents

Introduction
Runtime Components
Distribution Principals
Distribution Mechanisms
Delivery Channels
Web Distribution
Optical Media Distribution
Flash Media Distribution
Microsoft and Third-Party Solutions for Creating Installation Packages that Handle Distribution of Runtime Components

Introduction

The Microsoft .NET Framework, along with other runtime components (like the Visual J# runtime or the Microsoft .NET Framework language packs), are available for download from the Microsoft Download Center. The runtime components are listed on the .NET Framework SDKs, Redistributables & Service Packs downloads page. Any licensed Windows user that has a compatible Windows operating system can download any of the runtime components from the Web, accept the respective EULA terms, and install them on their computer. Windows runtime components are also available from the Windows Update Web site. In that case, users that agree to the Windows Update licensing terms get those updates as part of the Windows Update service (either as optional components or as critical updates). There are different ways for independent software vendors (ISVs) to make sure the correct runtime components are in place for their applications to run properly. This article will review the different options for ISV to facilitate distribution of the runtime components for each delivery mechanism.

Runtime Components

Runtime components can be classified into two types: Windows runtime components that are considered to be part of Windows (provided under a supplemental Windows license) and Microsoft runtime components that have their own license.

Each generation of Visual Studio, the Microsoft .NET Framework SDKs (and other Microsoft SDKs) has its associated runtime components. The SDK license typically contains legal guidelines on redistribution of such components.

Distribution Principles

If you are only referring your customers to get the runtime components from Microsoft, and provided that you do not modify the runtime packages and their installation experience (for instance, you can not use silent install), you do not need any specific redistribution license. Your customers will run the component installer and will accept the respective EULA terms before the components are installed.

If, however, you want to either host the components on your site or deliver them on magnetic or optical media (for customers who cannot get them otherwise), you will have to obtain a redistribution license as specified in tables 1, 2, and 3 below. In most cases, this license is part of the development tool license (either Visual Studio or the .NET Framework SDK). The redistribution license does not grant the distributor the right to modify the installation process and suppress the EULA (enable silent install).

After Windows runtime components are installed on a customer's computer, Microsoft services these components as part of Windows (in rare cases where a customer cannot be serviced by Microsoft, Microsoft can provide a license for redistributing servicing components through Microsoft Product Support Services.

The following tables provide a partial list of redistributable components and the license that governs their redistribution.

Table 1. Redistributable Components (Visual Studio 2003 wave)partial list

Redistributable Component License that ISV is required to accept in order to redistribute
.NET Framework 1.1 .NET Framework 1.1 SDK EULA or Visual Studio .NET 2003 EULA
.NET Framework 1.1 Language Packs .NET Framework 1.1 SDK EULA
Microsoft Visual J# 1.1 .NET Framework 1.1 SDK EULA or Visual Studio .NET 2003 EULA
Microsoft Visual J# .NET 1.1 Language Pack .NET Framework 1.1 SDK EULA
MDAC 2.8 Visual Studio .NET 2003 EULA

Table 2. Redistributable Components (Visual Studio 2005 wave)partial list

Redistributable Component License that ISV is required to accept in order to redistribute
.NET Framework 2.0

.NET Framework 2.0 for x64

.NET Framework 2.0 for IA64

.NET Framework 2.0 SDK EULA or Visual Studio 2005 EULA
.NET Framework 2.0 Language Packs .NET Framework 2.0 SDK EULA or Visual Studio 2005 EULA
Microsoft Visual J# 2.0 .NET Framework 2.0 SDK EULA or Visual Studio 2005 EULA
Microsoft J# 2.0 Language Packs .NET Framework 2.0 SDK EULA or Visual Studio 2005 EULA

Table 3. Redistributable Components (Windows)partial list

Redistributable Component License that ISV is required to accept in order to redistribute
DirectX 9.0c DirectX 9 SDK EULA
DirectX 9.0c for Software Developers - Multilingual DirectX 9 SDK EULA
MSI 3.1 and MSI 2.0 .NET Framework 2.0 SDK EULA or Visual Studio 2005 EULA

To find EULA text for the product you are interested in, look at the product packaging or use the Find Retail Software License Terms page on the microsoft.com site.

Distribution Mechanisms

There are two distinct distribution mechanisms one can implement: "Integrated " delivery, where a single installation experience installs the needed runtime components along with the application; and "Staged" delivery, where the setup process has two stages—installing the needed runtime components and then installing the application. The following table compares the two approaches.

Table 4. Distribution mechanisms comparison

Type of installation Integrated Staged
Category    
Number of clicks to install At least one At least two
Brand separation Microsoft runtime components are installed through an ISV-branded experience Microsoft runtime components are installed inside a Microsoft experience that is separate from the product-specific installer.
Complexity Complicated Simple; can use precompiled setup components
Sensing installation status from a Web page Need custom solution For certain runtime components like the .NET Framework, one can use standard mechanisms.

Delivery Channels

Traditional delivery channels include Web distribution and distribution on media. The following table compares the channels and their properties:

Table 5. Delivery channels comparison

Channel Web distribution Peer-to-Peer Web – Customer gets the application Optical Media Flash Media
Properties        
Mechanism The customer gets the application over the Web from the ISV. The runtime bits can be provided by the ISV or from Microsoft. The customer gets the application over the Web from another peer. The runtime bits should be obtained from Microsoft. The customer gets the application on a CD/DVD. The runtime bits can be provided on it. The customer gets the application on a Flash Drive. The runtime bits can be provided on it (requires the Flash Drive manufacturer to accept the redistribution license).
Size Web distribution is good for small and medium packages and is best for broadband users.

Dial-up (and 2.5G mobile) users, can only download small packages (up to 5MB).

Peer-to-peer Web distribution is good for small and medium packages and is best for broadband users.

Dial-up (and 2.5G mobile) users, can only download small packages (up to 5MB).

Due to licensing issues, the Microsoft runtime components should always be provided from Microsoft or from a third party that has license to redistribute (since peers are not redistribution licensees).

Need to accommodate 700MB for CD and 4.7GB for DVD Need to accommodate Flash drive size (that doubles every year). In 2005, the average drive was 256MB. In 2006, it will be 512MB.
Cost to distributor Bandwidth Basic bandwidth (for initiating the distribution and for hosting runtime components if needed) Optical media has a low nominal cost. ISV will need to address manufacturing and shipping. Flash drives have a substantial cost. ISV will need to address manufacturing and shipping (most ISVs consider partnering with Flash drives manufacturers).
Cost to customer Connection cost Connection cost Package cost Package cost
Updatability Easy Problematic if there are old copies in client premises Problematic due to inventory issues Problematic due to inventory issues
Media functionality after install Not applicable Not applicable Only as backup for reinstallation As a storage device and as backup

The following subsections describe the distribution mechanisms ISVs can use in various channels.

Web Distribution

Distribution on the Web is the most cost-effective way of distributing software. With different levels of effort, one can create a plausible installation experience for customers.

Staged Web Deployment

The simplest staged Web deployment scenario involves putting the links to the proper runtime components along with the application on the same page, as follows:

Figure 1. The simple installation page

Download Foo

The Foo application needs the following runtime components to be installed on your computer.

Install the following components from Microsoft before you install Foo (you will need to be an administrator on your computer in order to install the components):

Microsoft Data Access Components version 2.8 (you need to be run in administrator account if you install this on Windows 2000, this component is not needed with Windows XP)

The Microsoft .NET Framework 1.1 (you need to be run in administrator account if you install this on Windows 2000 or Windows XP)

After you installed the components you can install Foo (being an administrator on your computer is optional for installing):

Click here to install Foo.

In order to improve the experience, one can incorporate capability of the Web server or a script on the page to parse the customer browser header information (user agent data) and extract data about the operating system, locale (browser language), browser version, and the .NET Framework version that is installed). By using this technology, the page can be rendered differently on computers that already have the needed components. Also, since many new computers already have most of the components installed, the ISV is able not to confuse the customers by redundant text on the download page. The resulting page will look different on computers that already have the components installed. See my article, Creating an Installation Page That Automatically Detects the .NET Framework Version, for an example of how to compose pages that auto-detect runtime components.

Figure 2. The page on Windows XP computer that has the .NET Framework installed

Download Foo on Windows XP

You already have the .NET Framework installed.

Click here to install Foo.

Figure 3. The page on Windows 2000 computer that does not have the components installed

Download Foo on Windows 2000

The Foo application needs the following runtime components to be installed on your computer.

Install the following components from Microsoft before you install Foo (you will need to be an administrator on your computer in order to install the components):

Microsoft Data Access Components version 2.8 (you need to be running in administrator account)

The Microsoft .NET Framework 1.1 (you need to be running in administrator account)

After you installed the components you can install Foo (being an administrator on your computer is optional for installing):

Click here to install Foo.

To optimize the experience even more, one can use a packaged installer (such as Microsoft Component Installer SDK) that has a capability of downloading and installing the components while providing a compelling user interface (instead of the plain download dialog):

Figure 4. Calling Microsoft Component Installer for Windows

Download Foo on Windows 2000

The Foo application needs the Microsoft runtime components to be installed on your computer. Click on the Microsoft Component Installer for Windows link to download and install the needed components.

Install the components now.

After you installed the components you can install Foo (being an administrator on your computer is optional for installing):

Click here to install Foo.

Integrated Web Deployment

In order to create an integrated Web deployment scenario, one has to incorporate the logic of identifying, downloading, and installing the components inside an application installer. Using the browser user agent data as mentioned above is limited, thus the ISV need to incorporate code that checks for runtime component existence from the installation experience.

To do that there are several technologies that can be incorporated, from applying Win32 code into the installer, to using the bootstrapper or third-party tools.

Figure 5. Offering an integrated Web installation experience

Download Foo on Windows XP

The Foo application needs the Microsoft runtime components to be installed on your computer. The Foo installation file has a technology that will sense your operating system capabilities and will install the needed components. Remember to accept the license terms for each component.

Click here to install Foo.

The .NET Framework 2.0 includes also a technology called ClickOnce that enable applications to be executed and updated automatically from a URL combining the easy maintenance of Web application and the richness of smart client applications.

In order to use the bootstrapper, one has to have runtime package definitions that will help the tool to identify (if it needs to install) the relevant runtime components, and furthermore, where to look for the components and how to install it. For more information, see the MSDN Magazine article, Bootstrapper: Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation.

In addition, one should check if the user that installs the software has administrator rights. The Knowledge Base article, How To Determine Whether a Thread Is Running in User Context of Local Administrator Account has sample C code that does this.

Special Web Distribution (Peer to Peer)

In a peer-to-peer scenario, one user is initiating the distribution of the application to another user, often just redirecting the new user to the Web site that offers the application, but occasionally also offering the installation bits directly (or through a peer-to-peer network).

The current license model of Microsoft components does not grant end user redistribution rights. Therefore, even in cases of peer-to-peer distribution, the runtimes should always come from someone who has a license to redistribute them (and ideally directly from Microsoft).

Optical Media Distribution

Web distribution has limitations. The main limitation is that customers need to have enough bandwidth to get the application over the wire (and enough patience in case of a big payload). In 2004, there was still a large portion of Internet subscribers that used slow dial-up connections (the landscape is changing fast, though). Furthermore, there is a market segment that does not have an available external Internet connection. To address this market segment, ISVs are offering the optical media for obtaining the application. For physical media, the necessary runtime components need to be available on the optical media. To do that, the ISV needs to obtain and accept a redistribution license as explained above.

From an implementation perspective, both staged and integrated deployment scenarios can work well on physical media. In both, the setup experience will link to the runtime components that are laid on the Optical media, and for which the ISV has redistribution rights. Note that the redistribution license does not allow the ISV to alter the installation experience of the runtime components (for instance, it does not allow calling the runtime setup applications with the silent option turned on).

Flash Media Distribution

Distribution on Flash media is technically similar to distribution on optical media. The caveat might be the size of media that is available for the installation experience. In many cases, since many target computers already have the runtime components, and since these components may not fit the capacity of the storage device, the setup process from Flash media will refer the end user to microsoft.com to get the needed components, as in the Web deployment scenario.

Microsoft and Third-Party Solutions for Creating Installation Packages That Handle Distribution of Runtime Components

This section provides a short overview of solutions from Microsoft and third parties for creating installation packages that also handle distribution of runtime components that applications may need.

Microsoft Solutions

  • Visual Studio Setup project and the Bootstrapper—The Visual Studio setup project (VSI) is what many developers are using to create installation packages. The setup project is easy to use and it creates MSI packages that can be used for Web and CD distribution. However, further customization of the resulting MSI package is limited and in many cases developers need to use third-party tools to get the flexibility they need. (Microsoft provides a tool called ORCA to manipulate MSI packages). The VSI project can encapsulate runtime components that are defined as bootstrapper packages. Visual Studio comes with bootstrapper manifest for the .NET Framework. If you plan on using other runtime components, you will need to write your own manifest. For more information, see Bootstrapper: Use the Visual Studio 2005 Bootstrapper to Kick-Start Your Installation.
  • ClickOnceClickOnce is a special deployment technology that enables activation of a smart-client application from a URL (from a user's perspective, access to the application is similar to accessing a Web page; the experience, however, is a smart client one). ClickOnce also supports the creation of Start menu icons and Add/Remove software for the applications it deploys. ClickOnce is best for applications that have zero impact on the computer they run on (they do not register components; they do not alter the state of the computer). ClickOnce requires the .NET Framework to reside on the client computer and uses the same bootstrapper infrastructure.
  • Microsoft Component Installer SDK—This SDK is a quick and easy way to bootstrap an application that relies on runtime components. It automatically adjusts itself to Web or physical media deployment and is automatically localized to fit the underlying Microsoft Component Installer SDK operating system. However, the SDK is not extensible in terms of runtime components it supports and developers need to select from a predetermined list (they can not extend the list). This SDK does not address the application installation itself that needs to be provided as an installation file that is chained after the runtime components are installed (VSI can be used to create that).
  • WIX—There is also a community project that is sponsored by Microsoft for creating installation experiences called Windows Installer XML. WIX is a tool that uses XML manifest to create an MSI installation. One can use WIX to create flexible installation experiences that involve installation of runtime components.

Third-Party Solutions

The Visual Studio Industry Partner program has many partners that offer solutions for application deployment (that includes runtime deployment):