Creating an installable layout for the .NET Framework 3.5 that includes language packs

A little while ago, I posted this item on my blog that describes a potential issue when installing the .NET Framework 3.5 on a non-English operating system.  Over this past weekend, I noticed a related item on Aaron Ruckman's blog that I wanted to link to here.  In his post, Aaron describes some .NET Framework installation scenarios related to language packs.

To summarize his post, there are a few key things to keep in mind when installing the .NET Framework 3.5 along with .NET Framework 3.5 language packs:

1. Using the /lang switch with .NET Framework 3.5 setup

By default, the .NET Framework 3.5 setup will detect the language of the OS that setup is running on and attempt to install a .NET Framework 3.5 language pack to match the OS language if one is available.  The .NET Framework 3.5 setup contains a command line switched named /lang.  This switch allows you to override the default behavior and force .NET Framework 3.5 setup to install a specific language pack (or no language packs at all) instead of installing a language pack that matches the OS language.

For example, this command line will cause the .NET Framework 3.5 to not install any language packs:

dotnetfx35setup.exe /lang:ENU

This command line will cause the .NET Framework 3.5 to install the French language pack:

dotnetfx35setup.exe /lang:FRA

Note that the /lang switch only works during initial installation of the .NET Framework 3.5.  If you run .NET Framework 3.5 setup in repair mode and attempt to pass in the /lang switch, the value you provide with /lang will be ignored.

2. Creating an installable .NET Framework 3.5 layout that includes language packs

I previously posted some information about creating an installable layout for the .NET Framework 3.5 in this blog post.  If you want to create an installable layout for the .NET Framework 3.5 that includes one or more .NET Framework 3.5 language packs, you can first follow the instructions in that previous blog post to create an installable layout for the .NET Framework 3.5 core package.  Then you can download and copy the setup packages for the .NET Framework 3.5 language packs into the .NET Framework 3.5 layout you previously created.  There are separate language packs for each processor architecture, and they must be copied to the appropriate sub-folders of the .NET Framework 3.5 layout as follows:

  • For x86, you will copy the .NET Framework 3.5 language pack setup packages to the subfolder named \wcu\dotnetframework\dotnetfx35\x86
  • For x64, you will copy the .NET Framework 3.5 language pack setup packages to the subfolder named \wcu\dotnetframework\dotnetfx35\x64
  • For ia64, you will copy the .NET Framework 3.5 language pack setup packages to the subfolder named \wcu\dotnetframework\dotnetfx35\ia64

3. Deploying the .NET Framework 3.5 with multiple language packs

The most reliable way to deploy the .NET Framework 3.5 along with one or more .NET Framework 3.5 language packs is to first deploy the .NET Framework 3.5 core package and then individually deploy each of the desired language packs.  This method will prevent the .NET Framework 3.5 from installing potentially undesired language packs depending on the language of the user's OS.  The steps to do this look like the following:

  • Create an installable .NET Framework 3.5 layout using the method described in item 2 above
  • Install the .NET Framework 3.5 core package by running dotnetfx35setup.exe /lang:ENU /q /norestart
  • Install each language pack by running the individual language pack setup EXE.  For example, to install the x86 French language pack, you would run \wcu\dotnetframework\dotnetfx35\x86\dotnetfx35langpack_x86fr.exe /q /norestart