.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 |