Updated: December 2010
Administrators can deploy the .NET Framework version 3.5 to field clients in two ways:
Administrator mode setup. This option enables IT administrators to deploy the .NET Framework through Microsoft Systems Management Server (SMS) or other software distribution tools. The IT administrator runs the .NET Framework setup in silent mode. If errors occur, setup quits silently and logs an error code.
Active Directory deployment. In this option, the administrator adds individual .msi files from the .NET Framework 3.5 installation package to Group Policy in the order in which the .msi files should be deployed. After Group Policy is enabled, clients that are part of Group Policy automatically install the components when they boot and reconnect to the network. If errors occur, setup quits silently and logs an error code.
Note: |
|---|
For Windows XP, Windows 2000, and Windows Server 2003, you must install Windows Installer 3.1 on the computer before you deploy the .NET Framework. You can download Windows Installer 3.1 from the Windows Installer 3.1 Redistributable page in the Microsoft Download Center. Other prerequisites also apply; see the instructions in the following sections for a full list. |
The following sections discuss these two setup options and provide toubleshooting information:
Deploying the .NET Framework 3.5 with Administrator Mode Setup
Appendix: Script for Creating Installation Points for All Components
Note: |
|---|
The software referenced in this document, including without limitation, the .NET Framework 3.5 and Active Directory, are each subject to license terms and conditions. These instructions assume that such license terms and conditions have been reviewed and accepted by the appropriate licensees of the software. These instructions do not waive any of the terms and conditions of such license agreements. For information about support for the .NET Framework, see Microsoft .NET Framework Support Lifecycle Policy on the Microsoft Support Web site. |
The following deployment steps apply to Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.
Prerequisites
Before you run administrator mode setup, make sure that the target computer meets the software requirements listed in this section. Unattended setup will fail if these prerequisites are not met.
The following are required on all operating systems:
-
Windows Installer 3.1.
-
Internet Explorer 6.0 Service Pack 1 (SP1).
In addition:
-
On Windows Server 2003, Service Pack 1 (SP1) is required.
-
On Windows XP Home Edition and Windows XP Professional, Service Pack 2 (SP2) is required.
Running Administrator Mode Setup
Creating a Network Image
-
Create a shared folder on the server; for example, NetFX35.
-
Download the .NET Framework 3.5 stand-alone redistributable package from the Microsoft Download Center. Do not use the Download button. Instead, follow these steps:
-
In the On This Page section, click Instructions.
-
In the Instructions section, click the link for downloading the full redistributable package.
-
Save the full redistributable (dotnet35.exe) into the folder you created in step 1.
This stand-alone redistributable package contains all the components that are required to deploy the .NET Framework 3.5 on x86, x64, and IA-64 platforms on all supporting operating systems. Language packs are not included in this package.
-
Running Setup
-
Verify that the .NET Framework 3.5 redistributable package is available on the network server.
-
Click Start, and then click Run.
-
Type the following command:
\\server\share \dotnetfx35.exe /q /norestart
For example:
\\server1\NetFX35\dotnetfx35.exe /q /norestart
Installation Maintenance
You can run setup again on a computer that already has an existing installation to access setup maintenance features. Both users and administrators should run setup from Add or Remove Programs in the Control Panel. To run setup in maintenance mode, users must have administrative permissions on the target computer.
The following deployment steps apply to Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008.
Prerequisites
Network administrators must verify that all client computers have the system components required for installing the .NET Framework 3.5. Installation will fail if the prerequisites are not met.
Important Note:
|
|---|
|
You must deploy the required components in the order in which they are listed. Otherwise, component installation setup will fail. For example, the .NET Framework 2.0 Service Pack 1 requires that you install Windows Installer 3.1 first; therefore, Windows Installer is listed before the .NET Framework 2.0 Service Pack 1. The components that are followed by an asterisk (*) in the following lists are available from the Microsoft Download Center. Components that are not followed by an asterisk are included in the NET Framework 3.5 setup package. To install these, follow the instructions in the Creating the Administrator Installation Points section. |
The following are the prerequisites for deploying the .NET Framework 3.5 on Windows XP:
-
Windows XP Service Pack 2 (SP2)*.
-
Internet Explorer 6.0 Service Pack 1 (SP1)*.
-
Windows Installer 3.1*.
-
.NET Framework 2.0 Service Pack 1 (SP1).
-
.NET Framework 3.0 Service Pack 1 (SP1).
-
Windows Imaging Component*.
-
XML Paper Specification (XPS) Shared Components Pack 1.0*.
-
Software Rasterizer for the Microsoft DirectX 9.0 Software Development Kit (SDK).
The following are the prerequisites for deploying the .NET Framework 3.5 on Windows Server 2003:
-
Windows Server 2003 Service Pack 1 (SP1)*.
-
.NET Framework 2.0 Service Pack 1 (SP1).
-
.NET Framework 3.0 Service Pack 1 (SP1).
-
Microsoft Core XML Services (MSXML) 6.0.
-
Windows Imaging Component*.
-
XML Paper Specification (XPS) Shared Components Pack 1.0*.
-
Software Rasterizer for the Microsoft DirectX 9.0 SDK.
The following are the prerequisites for deploying the .NET Framework 3.5 on Windows Vista. Obtain these updates through Windows Update before you deploy the .NET Framework 3.5.
-
Microsoft .NET Framework 2.0 Cumulative Update 1.
-
Microsoft .NET Framework 3.0 Cumulative Update 1.
There are no prerequisites for Windows Server 2008 or Windows Vista SP1; they both include the .NET Framework 2.0 Cumulative Update 1 and the .NET Framework 3.0 Cumulative Update 1.
The components listed in this section are subject to their own license agreements.
Deploying Components Using Active Directory
This section describes how to use Active Directory to deploy the Windows Installer setup package for a specific component across a network. To deploy components that require file extraction, you must have administrator privileges on the target computers.
Before you deploy the .NET Framework, make sure that target computers meet the minimum configuration requirements. For details, see the System Requirements section of the .NET Framework 3.5 download page.
Creating the Administrator Installation Points
Note:
|
|---|
|
For a script that creates installation points for all components, see the Appendix. |
-
Create a folder to hold the redistributable package; for example, C:\deploy.
-
Download the .NET Framework 3.5 stand-alone redistributable package from the Microsoft Download Center. Do not use the Download button. Instead, follow these steps:
-
In the On This Page section, click Instructions.
-
In the Instructions section, click the link for downloading the full redistributable package.
-
Save the full redistributable (dotnet35.exe) into the folder you created in step 1.
This stand-alone redistributable package contains all the components that are required to deploy the .NET Framework 3.5 on x86, x64, and IA-64 platforms, on all supporting operating systems. Language packs are not included in this package.
-
-
Create the installation points for all the components of the .NET Framework.
-
Create a .bat file that contains the script provided in the Appendix, and place the .bat file in the deployment folder you used in step 2(c); for example, C:\deploy. (If you used a different folder, change the first line of the script accordingly.)
-
Open the Command Prompt window.
-
In the Command Prompt window, execute the .bat file to create the installation points.
The script creates the installation points for all the components in the AIP subfolder, and places each installation point in its own subfolder.
-
Close the Command Prompt window.
-
-
In Windows Explorer, navigate to the extraction destination folder (AIP) to verify that the files were extracted.
-
Move the folder and all its contents to the network share that you intend to use for deployment.
Deploying the Components
You can selectively install the components in the .NET Framework installation package from the installation points created in the previous section. For example, if the computers in the domain are up-to-date with the latest version of the .NET Framework, you need only install the .NET Framework version 3.5 component. See Knowledge Base article 816102: How to use Group Policy to remotely install software in Windows Server 2003 for the rest of the steps for deploying the .NET Framework to client computers. The deployment steps may vary for other versions of Windows Server.
For information about known installation issues, see the Microsoft .NET Framework 3.5 Readme file.
Log File Locations
The following log files are generated during the .NET Framework 3.5 setup process:
-
dd_dotnetfx35error.txt
-
dd_dotnetfx35install.txt
For non-English installations, the following log files are also generated:
-
dd_dotnetfx35error_lp.txt
-
dd_dotnetfx35install_lp.txt
Each component in the .NET Framework also creates its own log, including the following:
-
Software Rasterizer for the Microsoft DirectX 9.0 SDK: dd_RGB9Rast_*.txt
-
Microsoft Core XML Services (MSXML) 6.0: dd_msxml6_*.txt
-
Windows Imaging Component:: dd_wic*.txt
-
.NET Framework 2.0 SP1: dd_net_framework20*.txt
-
.NET Framework 3.0 SP1: dd_net_framework30*.txt
-
.NET Framework 3.5 MSI: dd_net_framework35*.txt
During the .NET Framework 3.5 setup process, the log files are located in the %temp% directory.
Windows Installer Error Codes
For a list of error codes, see Windows Installer Error Codes in the MSDN Library.
Appendix: Script for Creating Installation Points for All Components
You can use the following script to create the administrator installation points for all components. Save the script as a .bat file in the work folder directory. Open a Command Prompt window and execute the .bat file to create the installation points.
Note:
|
|---|
|
This script creates installation points for all the components in the .NET Framework installation package. You may decide to install all or selected components. |
set WORKFOLDER=C:\deploy set dotNetFX35build=%WORKFOLDER%\dotnetfx35.exe echo Creating installation points for NETFX3 %PROCESSOR_ARCHITECTURE% REM Create folders where work will be done. md %WORKFOLDER%\ext md %WORKFOLDER%\AIP md %WORKFOLDER%\logs pushd %WORKFOLDER% REM Extract the files from the .NET Framework 3.5 redistributable. call dotnetfx35.exe /q /x:%WORKFOLDER%\ext REM ------------------------------------------------------------ REM Create the MSXML6 x86 installation point. md %WORKFOLDER%\AIP\MSXML6_x86 call msiexec /a %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX30\x86\msxml6.msi /qb /l*v %WORKFOLDER%\logs\MSXML6_x86.log Targetdir=%WORKFOLDER%\AIP\MSXML6_x86 REM Create the MSXML6 x64 installation point. md %WORKFOLDER%\AIP\MSXML6_x64 call msiexec /a %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX30\x64\msxml6.msi /qb /l*v %WORKFOLDER%\logs\MSXML6_x64.log Targetdir=%WORKFOLDER%\AIP\MSXML6_x64 REM ------------------------------------------------------------ REM Create the RGBRAST x86 installation point. md %WORKFOLDER%\AIP\RGBRAST_x86 call msiexec /a %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX30\RGB9RAST_x86.msi /qb /l*v %WORKFOLDER%\logs\RGBRAST_x86.log REBOOT=ReallySuppress Targetdir=%WORKFOLDER%\AIP\RGBRAST_x86 REM Create the RGBRAST x64 installation point. md %WORKFOLDER%\AIP\RGBRAST_x64 call msiexec /a %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX30\RGB9RAST_x64.msi /qb /l*v %WORKFOLDER%\logs\RGBRAST_x64.log REBOOT=ReallySuppress Targetdir=%WORKFOLDER%\AIP\RGBRAST_x64 REM ------------------------------------------------------------ REM Extract the .NET Framework 3.5 x86 components. md %WORKFOLDER%\ext\netfx35_x86 call %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX35\x86\netfx35_x86.exe /q /x: %WORKFOLDER%\ext\netfx35_x86 REM Extract the .NET Framework 3.5 x64 components. md %WORKFOLDER%\ext\netfx35_x64 call %WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX35\x64\netfx35_x64.exe /q /x: %WORKFOLDER%\ext\netfx35_x64 REM ------------------------------------------------------------ REM Create the .NET Framework 3.5 x86 installation point. md %WORKFOLDER%\AIP\netfx35_x86 call msiexec /qb /a %WORKFOLDER%\ext\netfx35_x86\vs_setup.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx35_x86.log TARGETDIR=%WORKFOLDER%\AIP\netfx35_x86 REM Create the .NET Framework 3.5 x64 installation point. md %WORKFOLDER%\AIP\netfx35_x64 call msiexec /qb /a %WORKFOLDER%\ext\netfx35_x64\vs_setup.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx35_x64.log TARGETDIR=%WORKFOLDER%\AIP\netfx35_x64 REM ------------------------------------------------------------ REM Create the .NET Framework 2.0 SP1 installation point for x86. REM Set location of files. Set fx20=%WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX20\ md %WORKFOLDER%\AIP\NETFX20_x86 call msiexec /a %fx20%netfx20a_x86.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx20_x86.log TARGETDIR=%WORKFOLDER%\AIP\NETFX20_x86 call msiexec /p %fx20%ASPNET.msp;%fx20%CLR.msp;%fx20%CRT.msp;%fx20%NetFX_CA.msp;%fx20%NetFX_Core.msp;%fx20%NetFX_Other.msp;%fx20%PreXP.msp;%fx20%WinForms.msp;%fx20%DW.msp /a %WORKFOLDER%\AIP\NETFX20_x86\netfx20a_X86.msi /qb /l*v %WORKFOLDER%\logs\netfx20_x86_patch.log REM Create the .NET Framework 2.0 SP1 installation point for x64. md %WORKFOLDER%\AIP\NETFX20_x64 call msiexec /a %fx20%Netfx20a_x64.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx20_x64.log TARGETDIR=%WORKFOLDER%\AIP\NETFX20_x64 call msiexec /p %fx20%ASPNET_64.msp;%fx20%CLR_64.msp;%fx20%CRT_64.msp;%fx20%DW_64.msp;%fx20%NetFX_Core_64.msp;%fx20%NetFX_Other_64.msp;%fx20%WinForms_64.msp;%fx20%ASPNET.msp;%fx20%CLR.msp;%fx20%CRT.msp;%fx20%NetFX_CA.msp;%fx20%NetFX_Core.msp;%fx20%NetFX_Other.msp;%fx20%PreXP.msp;%fx20%WinForms.msp;%fx20%DW.msp /a %WORKFOLDER%\AIP\NETFX20_x64\Netfx20a_X64.msi /qb /l*v %WORKFOLDER%\logs\netfx20_x64_patch.log REM ------------------------------------------------------------ REM Create the .NET Framework 3.0 SP1 installation point for x86. REM Set location of files. Set fx30=%WORKFOLDER%\ext\wcu\dotNetFramework\dotNetFX30\ md %WORKFOLDER%\AIP\NETFX30_x86 call msiexec /a %fx30%netfx30a_x86.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx30_x86.log TARGETDIR=%WORKFOLDER%\AIP\NETFX30_x86 call msiexec /p %fx30%WCF.msp;%fx30%WCS.msp;%fx30%WF.msp;%fx30%WPF1.msp;%fx30%WPF2.msp;%fx30%WPF_Other.msp;%fx30%XPS.msp;%fx30%WF_32.msp;%fx30%WPF2_32.msp;%fx30%WPF_Other_32.msp /a %WORKFOLDER%\AIP\NETFX30_x86\netfx30a_X86.msi /qb /l*v %WORKFOLDER%\logs\netfx30_x86_patch.log REM Create the .NET Framework 3.0 SP1 installation point for x64. md %WORKFOLDER%\AIP\NETFX30_x64 call msiexec /a %fx30%netfx30a_x64.msi VSEXTUI=1 REBOOT=ReallySuppress /l*v %WORKFOLDER%\logs\netfx30_x64.log TARGETDIR=%WORKFOLDER%\AIP\NETFX30_x64 call msiexec /p %fx30%WCF.msp;%fx30%WCS.msp;%fx30%WF.msp;%fx30%WPF1.msp;%fx30%WPF2.msp;%fx30%WPF_Other.msp;%fx30%XPS.msp;%fx30%WCF_64.msp;%fx30%WCS_64.msp;%fx30%WF_64.msp;%fx30%WPF1_64.msp;%fx30%WPF2_64.msp;%fx30%WPF_Other_64.msp /a %WORKFOLDER%\AIP\NETFX30_x64\netfx30a_X64.msi /qb /l*v %WORKFOLDER%\logs\netfx30_x64_patch.log
Concepts
|
Date |
History |
Reason |
|---|---|---|
|
December 2010 |
In the Appendix, corrected the property to bypass blocker. |
|
|
August 2010 |
Added information about the support lifecycle policy for the .NET Framework. |
Information enhancement. |
|
December 2008 |
Restructured and simplified topic; corrected errors in the script. |
Customer feedback. |
- MSXML6_x(86-64)
- NETFX20_x(86-64)
- NETFX30_x(86-64)
- netfx35_x(86-64)
and i can tell u that u don't have to install windows installer 3.1 before deploying NET Framework 3.5 SP1 with this script , i try this by myself yesterday i know it is unbelievable but u can try and c what will happen ;-)
and thanks do the script coder who made this marvelous script , coz this helped me a lot
I was able to use this to deploy dotNet 3.5 SP1 via Active Directory. While this may seem complicated, here are some of the key parts that might help clear things up for you.
1) The dotNet installer is not just the Framework, it includes it's prerequisites bundled inside (thus 200+MB).
2) The prerequisites and the framework installers must be converted to MSI's to deploy it via Group Policy.
3) The batch script in the Appendix extracts the bundled installers and converts them to MSI's for you.
4) You must create one GPO for each installer to install prerequisites first and then the framework.
So here's what I did.
- Download the Full Package of the .NET Framework 3.5SP1 to c:\deploy
http://www.microsoft.com/downloads/details.aspx?FamilyID=AB99342F-5D1A-413D-8319-81DA479AB0D7
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
- Copy the script from the Appendix to notepad and save it to "c:\deploy\MakeDeployable.cmd"
- Go to My Computer, c:\deploy and double click "MakeDeployable.cmd"
- Copy the contents of c:\deploy\AIP to a network share. Make sure this share is readable from "Authenticated Users"
- Create four new GPO's with the Computer Configuration -> Software Settings -> Software Installation to assign one of the following MSI's
(Note: this example assumes you are only deploying to 32-bit machines however the batch script does create MSI's for 64-bit if you need them)
"Deploy .NET 3.5SP1 (1x4) XML XPS Package" \\server\share\dotNet35sp1\MSXML6_x86\msxml6.msi
"Deploy .NET 3.5SP1 (2x4) dotNet 2.0 SP2" \\server\share\dotNet35sp1\NETFX20_x86\netfx20a_x86.msi
"Deploy .NET 3.5SP1 (3x4) dotNet 3.0 SP2" \\server\share\dotNet35sp1\NETFX30_x86\netfx30a_x86.msi
"Deploy .NET 3.5SP1 (4x4) dotNet 3.5 SP1" \\server\share\dotNet35sp1\netfx35_x86\vs_setup.msi
- Link all four of these GPO's to the OU that you want to deploy to (Tip: it's a good idea to create a Test OU first). Remember that the GPO's are processed in reverse order that they are linked. This makes GPO's in link position 1 get processed last so that they can override any settings from a "lower" linked GPO. So in this example, use this link order...
Link 1: "Deploy .NET 3.5SP1 (4x4) dotNet 3.5 SP1"
Link 2: "Deploy .NET 3.5SP1 (3x4) dotNet 3.0 SP2"
Link 3: "Deploy .NET 3.5SP1 (2x4) dotNet 2.0 SP2"
Link 4: "Deploy .NET 3.5SP1 (1x4) XML XPS Package"
Now drop a computer in that OU and test it out by running "gpupdate /force" on that computer. It should tell you it requires a reboot to process the policies and before you log, that computer should be installing the software.
Hopefully that helps.
Why did you complicate this? Seriously, distributing microsoft products used to be trivial. Now you need a slide rule!
From the extracted dotnetfx35.exe file structure - add each msi ( create new package) , TO THE SAME GPO e.g.
E:\AD Software Deployment Share\NetFramework\AIP\MSXML6_x86
E:\AD Software Deployment Share\NetFramework\AIP\NETFX20_x86
E:\AD Software Deployment Share\NetFramework\AIP\NETFX30_x86
E:\AD Software Deployment Share\NetFramework\AIP\netfx35_x86
Use only ONE GPO and add the above, to the GPO in the same order as above. They will be applied in the order that they were added to the GPO (BUT in the GPO editor the order is mixed up, so ignore it).
I had issues with the 'E:\AD Software Deployment Share\NetFramework\AIP\RGBRAST_x86', which was applied last so I had to do it manually using a script. Many people have had issues with it!
I have updated and corrected the "CODE" as it was not working due to several defects.
I've tried this, plus a whole bunch of other scripts recommended by other people who have had problems with Microsoft's instructions, in an attempt deploy .NET 3.5 plus all the prerequisites (.NET 2.0, 3.0, rgbrast, etc) to my network via group policy. They all appear to install fine, no errors in the Event Log, they all show up in 'Add or Remove Programs'.
However, if I try to run applications that require .NET 3.5, they crash and only re-installing .NET 3.5 manually fixes the problem.
What I have found is that there appear to be two ways around this:
1. If you use WSUS, deploy .NET 2.0 and 3.0 through that. You can then deploy *only* the .NET 3.5 files extracted via the code on this page. That works absolutely fine.
2. If you don't use WSUS it looks like you can deploy .NET 3.5 via windows update. You'll have better luck using that or manually installing it than trying to work through the instructions on this page.
For crying out loud Microsoft, get your deployment tools sorted out! You tell everybody how great Group Policy, MSI files and WSUS are, and then release .NET 3.5 and DirectX 10, neither of which can be easily deployed across corporate networks.
- I absolutely agree with Noelle: this guide doesn't explain how to avoid the installer to download anything from the internet.
- Even the complete package tries to connect to the internet to check if there's a new version of the bootstraper so, unless we are isolated from the internet, there's no way to be sure that the Framework 3.5 will be installed as expected.
- We certainly need a way to ensure that a given procedure to install the Framework will allways work in the same way. There are many scenarios where this kind of validation is a must!
To address some of the questions not covered in this deployment guide, I've posted an item on my blog at http://blogs.msdn.com/astebner/archive/2008/07/17/8745415.aspx that attempts to explain more about what can happen behind the scenes to cause .NET Framework 3.5 setup to attempt to connect to the Internet and download things during installation. I also explained how to work around these issues. Hopefully this helps.
Thanks!
Aaron Stebner
Microsoft Corporation
http://blogs.msdn.com/astebner/
http://blogs.msdn.com/astebner/archive/2008/01/21/7191582.aspx
Following the hints in this blog worked for me. I was able to build an installation package with language packs which does not need an internet connection at runtime.
Note:
Important Note: