How to create an installable layout for the .NET Framework 3.0 SP1

A couple of weeks ago, I posted some notes about creating an installable layout for the .NET Framework 3.5 that can be used for network deployment or redistributable setup packages.  Since then, I've gotten a couple of questions about creating an installable layout for the .NET Framework 3.0 SP1.  Customers asking me about this have noted that there are full downloads available for the .NET Framework 2.0 SP1 and 3.5, but only a web downloader is available for 3.0 SP1 (all of these links are listed in this blog post).

To create an installable layout for the .NET Framework 3.0 SP1, you will have to manually download the set of packages that setup would ordinarily download on your behalf in the web download bootstrapper.  This set of packages can be determined by reverse engineering some of the 3.0 SP1 setup data files located in the .NET Framework 3.0 SP1 web download bootstrapper package.  The behind the scenes steps needed to interpret the setup data files are similar to previous posts I've written regarding assembling installable layouts (such as this one for the VS 2005 Express Editions).

Fortunately, Aaron Ruckman has created a table listing the exact packages and folder structure they need to be copied to in order to create an installable layout for the .NET Framework 3.0 SP1.  You can find this information in the blog post at https://blogs.msdn.com/aaronru/archive/2007/12/13/creating-net-framework-3-0-sp1-redist.aspx.

Just like with the .NET Framework 3.5, there are optimizations you can make to your installable layout depending on what scenarios you plan to support.  For example, you could choose to do any of the following:

  • Leave out x64 packages if you will only be supporting x86 systems and vice versa
  • Leave out .NET Framework 2.0 packages if you know that you will be running .NET Framework 3.0 SP1 setup on systems that already have the .NET Framework 2.0 SP1
  • Leave out other prerequisites such as MSXML 6.0 if you know that the version being installed by .NET Framework 3.0 SP1 setup will already be present on the systems you support installing on

One important note that I've mentioned in the past, but that bears repeating here - if you decide to optimize your installer payload using any of the suggestions above, and it turns out that you over-optimized and setup really does need one of the packages that you deleted from the extracted folder, then .NET Framework 3.0 SP1 setup will attempt to automatically download the package for you if you have a live Internet connection during setup.  If it needs to download a package and the system does not have a live Internet connection, then .NET Framework 3.0 SP1 setup will fail to install.

If you are interested, there is also a more detailed description in this blog post about what the .NET Framework 2.0 SP1, 3.0 SP1 and 3.5 setup bootstrapper does behind the scenes and when it might trigger an attempt to download packages from Microsoft.