.NET Framework 3.5 Deployment Guide for Application Developers

The Microsoft .NET Framework version 3.5 provides a redistributable installer that also contains service packs and cumulative updates for the .NET Framework 2.0 and 3.0.

This topic provides explains how to redistribute the .NET Framework with your applications. It contains the following sections:

  • Available Formats

  • Where to Obtain the .NET Framework 3.5 Redistributable Package

  • Installation Requirements

  • Installing the .NET Framework Manually

  • Chaining the Redistributable Package in Application Setup

  • Installing the .NET Framework 3.5 for Web Applications

  • Detecting the .NET Framework 3.5

  • Command-Line Options

  • Error Codes

  • Appendix: .NET Framework 3.5 Components

  • Appendix: Setup Examples

Available Formats

The .NET Framework 3.5 redistributable package is available in two formats:

  • dotnetfx35.exe  This is a stand-alone executable file that contains all the components that are required to deploy to 32-bit and 64-bit platforms on all supporting operating systems. This executable does not contain language packs; by default, it downloads and installs the language pack that matches the language of the user's operating system. The .NET Framework version 3.5 language packs are available as separate per-language stand-alone executable files from the Microsoft Download Center.

  • dotnetfx35setup.exe  This is a lightweight bootstrapper that downloads required components from the Web during setup. This executable does not contain any .NET Framework version 3.5 components; it detects, downloads, and installs only required components from the Web. The bootstrapper also downloads and installs the language pack that matches the language of the user’s operating system. Stand-alone language packs can be used to install additional language support.

You can use either package on both 32-bit and 64-bit platforms on all supporting operating systems.

You can manually launch and install the redistributable on a computer, or launch and install it as part of the setup program for a .NET Framework 3.5 application.

Note

You do not have to deploy the .NET Framework 3.5 on Windows 8; it will be automatically deployed either when your application setup calls the .NET Framework 3.5 setup, or when your application runs for the first time. For more information, see Installing the .NET Framework 3.5 on Windows 8. Note that automatic deployment requires an Internet connection. If an Internet connection might not be available, you should deploy the full package.

Note

Administrator privileges are required to install the .NET Framework 3.5.

Where to Obtain the .NET Framework 3.5 Redistributable Package

You can download the Microsoft .NET Framework 3.5 redistributable package from the Microsoft Download Center. The Download button at the top of the page installs the bootstrapper (dotNetFx35setup.exe). To download the full installation package, scroll down to the Full Package link at the bottom of the page.

Installation Requirements

This section summarizes the software and hardware requirements for installing the .NET Framework 3.5. If the minimum requirements are not met, the .NET Framework setup process stops the installation.

For a detailed list of hardware and software requirements, see System Requirements for Version 3.5.

Software Requirements

The .NET Framework 3.5 requires one of the following operating systems on the target computer:

  • Windows XP Home or Windows XP Professional, both with Service Pack 2 or later.

  • Windows Server 2003 family with Service Pack 1 or later.

  • Windows Vista.

  • Windows Server 2008.

    Note

    The .NET Framework 3.5 supports IA64 only on Microsoft Windows Server 2008.

  • Windows 7 family

  • Windows 8

Hardware Requirements

The following table lists the CPU and RAM requirements for running the .NET Framework 3.5.

 

CPU required

RAM required

Minimum

Pentium 400 MHz

96 MB

Recommended

Pentium 1 GHz or higher

256 MB or more

Installing the .NET Framework Manually

In some situations, it might be impractical for you to automatically install the .NET Framework 3.5 with your application. In that case, you can have users install the .NET Framework themselves from the Microsoft Download Center. In your setup process, provide instructions for how users can locate and install the .NET Framework.

Note

Do not post the redistributable package on your own network. Instead, direct users to the Microsoft Download Center.

Chaining the Redistributable Package in Application Setup

The .NET Framework 3.5 provides three ways to include ("chain") the .NET Framework setup process into your application's setup process:

  • Option 1. Let the .NET Framework setup process decide which components are required and download and install only the required components from the Web.

    To let the .NET Framework setup process detect, download, and install only the required components, use the dotnetfx35setup.exe package. To chain the .NET Framework setup process, add the following command to your application's setup process:

    dotnetfx35setup.exe /q /norestart

  • Option 2. Include the complete set of .NET Framework files with your redistribution media so that users do not have to download any additional files from the Web during setup.

    If you want to include all the components in the .NET Framework setup process, use the full stand-alone executable (dotnetfx35.exe). This package includes components that are required to install the .NET Framework 3.5 on x86, x64, and IA64 computers on any supported operating systems. Use this package if space and download time is not an issue for your application deployment. To chain the .NET Framework setup process, use the following command:

    dotnetfx35.exe /q /norestart

  • Option 3. Include the most commonly required components for your users, and let the .NET Framework setup process detect any missing components and download them from the Web. This scenario is best if you have a specific platform, operating system, or user system configuration that you are deploying your application to.

    To perform this installation, you must first obtain the full stand-alone executable and extract the files by using the following command:

    dotnetfx35.exe /x extract-location

    After you extract the files, you will see a file and folder structure with the list of files for each component in the .NET Framework 3.5, as shown in the Appendix of this document.

    To deploy the .NET Framework 3.5, include the appropriate components in the folder structure that is created by the extraction process, and chain them in the .NET Framework bootstrapper setup by using the following command:

    dotnetfx35setup.exe /q /norestart

    You can see two examples of what to include in your layout in the Appendix of this document.

Regardless of which mode you choose, to chain the .NET Framework 3.5 installation process, run the redistributable from the command line and use the /q and /norestart command-line options.

Note

To avoid the automatic download and installation of the language packs, use the command-line option /lang:enu.

Installing the .NET Framework 3.5 for Web Applications

Web-based applications that rely on .NET Framework 3.5 features might require the .NET Framework to be downloaded and installed on the user's computer. You can determine whether the .NET Framework 3.5 is installed on the user's computer by following the instructions in the next section. If the correct version of the .NET Framework is not installed, you can direct users to the Microsoft Download Center to obtain the .NET Framework 3.5 package.

Detecting the .NET Framework 3.5

You can detect whether the .NET Framework 3.5 is already installed by reading a registry key or by querying the user-agent string in Internet Explorer.

Reading Registry Keys

The .NET Framework 3.5 installer writes registry keys when installation has finished successfully. You can test whether.NET Framework 3.5 is installed by checking the registry keys listed in the following table.

Registry key name

Value

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

Name: Install

Type: REG_DWORD

Data: 1

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform

Name: .NET CLR 3.5.build-number

Type: REG_SZ

Reading the User-Agent String in a Browser

When the .NET Framework 3.5 is installed on a computer, the .NET Framework 3.5 version number appears as part of the user-agent string that is reported in browser headers. The following example shows a sample page that uses JavaScript to detect and report whether the .NET Framework 3.5 is installed.

<html>
  <head>
    <title>Test for .NET Framework 3.5</title>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
    <script type="text/JavaScript">
    <!--
    var NETFX3RuntimeVersion = "3.5.21022";
    
    function body_onload()
    {
      var result = document.getElementById("result");
      if (HasRuntimeVersion(NETFX3RuntimeVersion))
      {
          result.innerHTML = "This machine has the correct version of the .NET Framework 3.5 runtime: " 
          + NETFX3RuntimeVersion + "." 
          + "\n\nThis machine's userAgent string is: " 
          + navigator.userAgent + ".";
      } 
      else
      {
        result.innerHTML = "The .NET Framework version 3.5 is not installed on this computer.<br/>"
            + "Click <a href='https://go.microsoft.com/fwlink/?LinkId=96339'"
            + " here</a> to get the .NET Framework 3.5 now.";}
    }
    
    //
    // Retrieve the version from the user agent string and compare with specified version.
    //
    function HasRuntimeVersion(versionToCheck)
    {
      var userAgentString = 
           navigator.userAgent.match(/.NET CLR 3.5.[0-9]+/g);
      if (userAgentString != null)
      {
        var i;
        for (i = 0; i < userAgentString.length; ++i)
        {
          if (CompareVersions(GetVersion(versionToCheck), 
                GetVersion(userAgentString[i])) <= 0)
            return true;
        }
      }
      return false;
    }

    //
    // Extract the numeric part of the version string.
    //
    function GetVersion(versionString)
    {
      var numericString = versionString.match(/([0-9])\.([0-9])\.([0-9])/i);
      return numericString.slice(1);
    }

    //
    // Compare the version strings by converting them to numeric format.
    //
    function CompareVersions(version1, version2)
    {
      for (i = 0; i < version1.length; ++i)
      {
        var number1 = new Number(version1[i]);
        var number2 = new Number(version2[i]);

        if (number1 < number2)
          return -1;
        if (number1 > number2)
          return 1;
      }
      return 0;
    }
    
    -->
    </script>
  </head>
  
  <body onload="body_onload();">
    <div id="result" ></div>
  </body>
</html>

If the search for the string ".NET Framework 3.5" version is successful, the following message is displayed:

This machine has the correct version of the .NET Framework 3.5 runtime: 3.5.28015.00.
This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.5.28015.00).

(The details of the user agent string vary slightly according to the browser and browser version that is being used to test for the .NET Framework.)

If the .NET Framework 3.5 is not installed, the following message is displayed:

The .NET Framework version 3.5 is not installed on this computer.
Click here to get the .NET Framework 3.5 now.

Command-Line Options

The following table lists options that you can specify when you run the .NET Framework 3.5 redistributable installer from the command line.

Option

Description

/q

-or-

/quiet

Sets quiet mode (suppresses all UI). An .ini file cannot be specified with this option.

/qb

-or-

/passive

Displays a minimal user interface; displays the progress bar, but does not display any prompts or error messages to the user.

/uninstall

-or-

/remove

Uninstalls the product.

/f

Repairs all .NET Framework components that are installed.

/nopatch

Specifies that patches are not applied and bypasses patch checking.

/norollback

Specifies that setup is not rolled back if a setup component fails.

/norestart

Specifies that the installer should not restart the computer after installation completes. The redistributable installer returns ERROR_SUCCESS_REBOOT_REQUIRED (3010) if a reboot is required.

/lang:TLA

Installs the language pack specified by the three-letter acronym (TLA); for example, /lang:DEU for the German language pack or /lang:JPN for the Japanese language pack. You can specify only one language. Specifying /lang:ENU skips a language pack installation, because ENU is the TLA for English.

/?

Displays this list of options.

Error Codes

The following table lists error codes that can be returned by the .NET Framework 3.5 redistributable installation program. The error codes are the same for all versions of the installer.

Error code

Value

Description

ERROR_SUCCESS

0

The action completed successfully.

ERROR_INSTALL_USEREXIT

1602

The user canceled installation.

ERROR_INSTALL_FAILURE

1603

A fatal error occurred during installation.

ERROR_UNKNOWN_PRODUCT

1605

This action is valid only for products that are currently installed.

ERROR_PATCH_PACKAGE_INVALID

1636

The patch package could not be opened, or the patch was not applicable to the .NET Framework.

ERROR_INVALID_COMMAND_LINE

1639

Invalid command-line argument.

ERROR_SUCCESS_REBOOT_INITIATED

1641

The installer has initiated a restart. This message indicates success, and setup will continue after restart. (The reboot is not performed if the /norestart option was specified.)

ERROR_PATCH_PACKAGE_REJECTED

1643

The patch package is not permitted by system policy.

ERROR_SUCCESS_REBOOT_REQUIRED

3010

A restart is required to complete the installation. This message indicates success.

Appendix

In the tables provided in this appendix, the operating systems have been abbreviated as follows:

  • XP = Windows XP

  • Vista = Windows Vista

  • W2K3 = Windows Server 2003

  • W2K8 = Windows Server 2008

.NET Framework 3.5 Components

The following table lists the components for the .NET Framework version 3.5.

Path

File name

Platform

Operating system

Description

wcu\dotNetFramework

dotNetFx35setup.exe

All

All

.NET Framework 3.5 setup bootstrapper

wcu\dotNetFramework\dotNetFX20

ASPNET.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

ASPNET_64.msp

x64

XP, W2K3

2.0 SP1 components

 

clr.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

clr_64.msp

x64

XP, W2K3

2.0 SP1 components

 

crt.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

crt_64.msp

x64

XP, W2K3

2.0 SP1 components

 

dw.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

dw_64.msp

x64

XP, W2K3

2.0 SP1 components

 

Netfx20a_x64.msi

x64

XP, W2K3

2.0 SP1 components

 

Netfx20a_x86.msi

x86

XP, W2K3

2.0 SP1 components

 

NetFX_CA.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

NetFX_Core.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

NetFX_Core_64.msp

x64

XP, W2K3

2.0 SP1 components

 

NetFX_Other.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

NetFX_Other_64.msp

x64

XP, W2K3

2.0 SP1 components

 

prexp.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

winforms.msp

x86, x64

XP, W2K3

2.0 SP1 components

 

winforms_64.msp

x64

XP, W2K3

2.0 SP1 components

wcu\dotNetFramework\dotNetFX30

Netfx30a_x64.msi

x64

XP, W2K3

3.0 SP1 components

 

Netfx30a_x86.msi

x86

XP, W2K3

3.0 SP1 components

 

RGB9RAST_x64.msi

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

RGB9RAST_x86.msi

x86

XP, W2K3

3.0 SP1 system pre-requisite

 

WCF.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WCF_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WCS.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WCS_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WF.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WF_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WF_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WIC_x64_enu.exe

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

WIC_x86_enu.exe

x86

XP, W2K3

3.0 SP1 system pre-requisite

 

WPF1.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF1_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WPF2.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF2_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WPF2_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WPF_Other.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF_Other_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WPF_Other_64.msp

x64

XP, W2K3

3.0 SP1 components

 

XPS.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

XPSEPSC-amd64-en-US.exe

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

XPSEPSC-x86-en-US.exe

x86

XP, W2K3

3.0 SP1 system pre-requisite

wcu\dotNetFramework\dotNetFX30\x64

msxml6.msi

x64

XP, W2K3

3.0 SP1 system pre-requisite

wcu\dotNetFramework\dotNetFX30\x86

msxml6.msi

x86

XP, W2K3

3.0 SP1 system pre-requisite

wcu\dotNetFramework\dotNetFX35\ia64

netfx35_ia64.exe

ia64

W2K8

3.5 components

wcu\dotNetFramework\dotNetFX35\x64

netfx35_x64.exe

x64

XP, W2K3, Vista, W2K8

3.5 components

wcu\dotNetFramework\dotNetFX35\x86

netfx35_x86.exe

x86

XP, W2K3, Vista, W2K8

3.5 components

wcu\dotNetFramework\dotNetMSP

NetFx_20_SP1_ENU_License.rtf

-

Vista

2.0 cumulative updates license

 

NetFx_30_SP1_ENU_License.rtf

-

Vista

3.0 cumulative updates license

 

NetFX2.0-KB110806-v6000-x64.msu

x64

Vista

2.0 cumulative updates

 

NetFX2.0-KB936704-v6000-x64_RTM_en.msu

x64

Vista, W2K8

2.0 English language packs

 

NetFX3.0-KB929300-v6000-x64.msu

x64

Vista

3.0 cumulative updates

 

NetFX3.0-KB936705-v6000-x64_RTM_en.msu

x64

Vista, W2K8

2.0 English language packs

 

NetFX2.0-KB110806-v6000-x86.msu

x86

Vista

2.0 cumulative updates

 

NetFX2.0-KB936704-v6000-x86_RTM_en.msu

x86

Vista, W2K8

3.0 English language packs

 

NetFX3.0-KB929300-v6000-x86.msu

x86

Vista

3.0 cumulative updates

 

NetFX3.0-KB936705-v6000-x86_RTM_en.msu

x86

Vista, W2K8

3.0 English language packs

Setup Examples

The following examples list the files that you have to include in your setup media for two different installation scenarios.

Note

When you include individual components, you must include them in the same relative path as the .NET Framework 3.5 setup bootstrapper (dotNetFx35setup.exe).

Example 1

The following table lists the files that you must include in your setup media layout if you are deploying to Windows XP or Windows Vista. The file list assumes that users are installing only the x86 version, and that they have already installed the .NET Framework 2.0 SP1 and 3.0 SP1 (on Windows XP and Windows Server 2003) or the cumulative update (on Windows Vista).

Path

File name

Platform

Operating system

Description

 

dotNetFx35setup.exe

All

All

.NET Framework 3.5 setup bootstrapper

dotNetFX35\x86

netfx35_x86.exe

x86

XP, W2K3, Vista, W2K8

3.5 components

Example 2

The following table lists the files that you must include in your media layout if you are deploying to Windows XP SP2 or Windows Server 2003 SP1 on x86 and x64 computers. The file list assumes that users already have the .NET Framework version 2.0 SP1 installed.

Note

In this example, if the user does not have the .NET Framework 2.0 SP1, setup will download it automatically if the user is connected to the Internet.

Path

File name

Platform

Operating systems

Description

(root)

dotNetFx35setup.exe

All

All

.NET Framework 3.5 setup bootstrapper

dotNetFX30

Netfx30a_x64.msi

x64

XP, W2K3

3.0 SP1 components

 

Netfx30a_x86.msi

x86

XP, W2K3

3.0 SP1 components

 

RGB9RAST_x64.msi

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

RGB9RAST_x86.msi

x86

XP, W2K3

3.0 SP1 system pre-requisite

 

WCF.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WCF_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WCS.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WCS_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WF.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WF_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WF_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WIC_x64_enu.exe

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

WIC_x86_enu.exe

x86

XP, W2K3

3.0 SP1 system pre-requisite

 

WPF1.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF1_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WPF2.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF2_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WPF2_64.msp

x64

XP, W2K3

3.0 SP1 components

 

WPF_Other.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

WPF_Other_32.msp

x86

XP, W2K3

3.0 SP1 components

 

WPF_Other_64.msp

x64

XP, W2K3

3.0 SP1 components

 

XPS.msp

x86, x64

XP, W2K3

3.0 SP1 components

 

XPSEPSC-amd64-en-US.exe

x64

XP, W2K3

3.0 SP1 system pre-requisite

 

XPSEPSC-x86-en-US.exe

x86

XP, W2K3

3.0 SP1 system pre-requisite

dotNetFX30\x64

msxml6.msi

x64

XP, W2K3

3.0 SP1 system pre-requisite

dotNetFX30\x86

msxml6.msi

x86

XP, W2K3

3.0 SP1 system pre-requisite

dotNetFX35\x64

netfx35_x64.exe

x64

XP, W2K3, Vista, W2K8

3.5 components

dotNetFX35\x86

netfx35_x86.exe

x86

XP, W2K3, Vista, W2K8

3.5 components

See Also

Concepts

.NET Framework 3.5 Deployment Guide for Administrators