.NET Framework 3.5 Deployment Guide for Application Developers
[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
The Microsoft .NET Framework version 3.5 provides a redistributable installer that also contains Service Pack and cumulative updates for the .NET Framework version 2.0 and the NET Framework version 3.0.
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. The .NET Framework 3.5 language packs are available as separate per-language stand-alone executable files.
dotnetfx35setup.exe This is a lightweight bootstrapper that downloads required components from the Web during setup. It does not contain any .NET Framework 3.5 components in the package. It will detect, download, and install only required components. The bootstrapper will download and install 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 32-bit and 64-bit platforms on all supporting operating systems.
You can manually launch and install the redistributable on a computer, or it can be launched and installed as part of the setup program for a .NET Framework 3.5 application.
Note
Administrator privileges are required to install the .NET Framework 3.5.
Installation Requirements
This section describes 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.
Software Requirements
The .NET Framework 3.5 requires one of the following operating systems on the target computer:
Microsoft Windows XP Home or Microsoft Windows XP Professional, both with Service Pack 2 or later.
Microsoft Windows Server 2003 family with Service Pack 1 or later.
Microsoft Vista.
Microsoft Windows Server 2008.
Note
The .NET Framework 3.5 supports IA64 only on Windows Server 2008.
Hardware Requirements
The following table lists the hardware 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 |
Where to Obtain the.NET Framework 3.5 Redistributable Package
You can download the .NET Framework 3.5 redistributable package from the Microsoft Download Center.
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.
However, do not assume that users of your application know where to get the .NET Framework or how to install it. 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 the following ways for you to include (chain) the .NET Framework setup process into your application's setup process:
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 by itself. To chain the .NET Framework setup process, add the following command to your application's setup process:
dotnetfx35setup.exe /q /norestart
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 this .NET Framework setup process, use the following command:
dotnetfx35.exe /q /norestart
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, a specific operating system, or a specific 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 following installation command-line options:
/q /norestart
Redistributing the .NET Framework 3.5 for Web Applications
In Web-based applications that rely on .NET Framework 3.5 features, the .NET Framework might need to be downloaded and installed on the user's computer. You can determine whether .NET Framework 3.5 is installed on the user's computer by querying the user agent string in the browser header. 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: DWORD Data: 1 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform |
Name: Version Type: REG_SZ Data: .NET CLR 3.5.build number |
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://msdn.microsoft.com/windowsvista/default.aspx'>"
+ " 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 for the .NET Framework 3.5 Redistributable Package
The following table lists options that you can specify when you run the .NET Framework 3.5 redistributable installation program from the command line.
Option |
Description |
---|---|
/q |
Suppresses all UI. An .ini file cannot be specified with this option. |
/uninstall |
Uninstalls product. |
/remove |
Same as /uninstall. |
/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 does not restart the computer after installation completes. The redistributable installer returns ERROR_SUCCESS_REBOOT_REQUIRED (3010) if a reboot is required. |
/? |
Displays this list of options. |
Error Codes for the .NET Framework 3.5 Redistributable Package
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 |
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 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
The following table lists the components for the .NET Framework version 3.5.
Path |
File name |
Platform |
OS |
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 RTM |
2.0 cumulative updates license |
|
NetFx_30_SP1_ENU_License.rtf |
- |
Vista RTM |
3.0 cumulative updates license |
|
NetFX2.0-KB110806-v6000-x64.msu |
x64 |
Vista RTM |
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 RTM |
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 RTM |
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 RTM |
3.0 cumulative updates |
|
NetFX3.0-KB936705-v6000-x86_RTM_en.msu |
x86 |
Vista, W2K8 |
3.0 English language packs |
The following examples list the files that you need to include in your setup media.
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 in order to deploy to Windows XP and Vista. The file list assumes that users are installing only the x86 version, and that users have installed Service Pack 1 for the .NET Framework 2.0 and 3.0 (Windows XP and Windows Server 2003) or the cumulative update (Windows Vista).
Path |
File name |
Platform |
OS |
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
If you are deploying to Windows XP (SP2) or Windows Server 2003 (SP1) on x86 and x64 computers, and if users already have the .NET Framework version 2.0 SP1 installed, you must include the following files in your media layout.
Note
In this example, if the user does not have the .NET Framework version 2.0 SP1, setup will download it automatically if the user is connected to the Internet.
Path |
File name |
Platform |
OS |
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 |