Available installation modes for the .NET Framework 2.0

I have gotten several questions in the past from customers who need to install the .NET Framework 2.0 as part of their setup package or deploy it to systems in a network.  There are multiple options avaiable in this scenario, and each has their own strengths and weaknesses.  This post describes the major installation modes that are available for the .NET Framework 2.0 and some important things to consider when deciding which mode is best for your installation or deployment scenario.

Silent mode

Installing the .NET Framework 2.0 in silent mode suppresses all UI screens during installation.  You can run setup in silent mode with one of the following command line switches:

dotnetfx.exe /q:a /c:”install.exe /q”


msiexec.exe /i netfx.msi /qn /l*v netfx20install.log ADDEPLOY=1

Silent mode is useful when installing the .NET Framework as part of another setup package and you want to control the UI experience from the other setup package.

When installing in silent mode, you need to handle any scenarios where .NET Framework 2.0 setup would ordinarily display error dialogs or reboot prompts.  The following blog posts provide more information about various scenarios that you will need to handle in your setup package when installing the .NET Framework 2.0 in silent mode:

Unattended mode

Installing the .NET Framework 2.0 in unattended mode suppresses all UI screens except for a small progress dialog during installation.

You can run setup in unattended mode with one of the following command line switches:

dotnetfx.exe /q:a /c:”install.exe /qb”


msiexec.exe /i netfx.msi /qb /l*v netfx20install.log ADDEPLOY=1

Adding an exclamation point to make the command line switch /qb to make it /qb! in the examples above will hide the cancel button on the progress dialog.

Unattended mode is useful if you want to install or deploy the .NET Framework and provide feedback to the user during installation, but do not want the user to have to click through any other UI screens.  Hiding the cancel button can be useful if you do not want the user to be able to cancel the installation.

If you run .NET Framework 2.0 setup in unattended mode using the above command line switches, you will notice that the progress dialog does not contain any explanatory text during installation.  Instead, it looks like the following:

.NET Framework 2.0 unattended installation progress dialog

Because we designed the .NET Framework 2.0 to be a multi-lingual installation package, the ProductLanguage property is set to 0 in the Property table of netfx.msi.  Unfortunately, there is a bug in Windows Installer 3.1 and earlier that causes incorrect string resources to be loaded when ProductLanguage = 0 like this.  In order to workaround this bug, we decided to ship the .NET Framework 2.0 so that it displays no text in this progress dialog instead of hard-coding English strings in this dialog.

Heath Stewart explained this scenario in more detail in this blog post.  In addition, he provided a set of transforms that you can download and apply to display explanatory text in the language of your choice when installing the .NET Framework 2.0 in unattended mode.  If you want to use one of these transforms, you will need to choose a single language that you want the UI to be displayed in, and then you can use one of the following command lines:

dotnetfx.exe /q:a /c:”install.exe /qb /msipassthru MSI_PROP_BEGIN””TRANSFORMS=<path>\strings.enu.mst””MSI_PROP_END”


msiexec.exe /i netfx.msi /qb /l*v netfx20install.log ADDEPLOY=1 TRANSFORMS=<path>\strings.enu.mst

Standard mode

Installing the .NET Framework 2.0 in standard mode displays all setup UI screens during installation.  When installing in standard mode, .NET Framework 2.0 setup will display any necessary dialogs regarding missing prerequisites, beta versions that need to be uninstalled, errors during installation or reboots after installation.

The .NET Framework 2.0 setup package contains multi-lingual setup UI.  When running .NET Framework 2.0 setup in standard mode, the setup executable checks the user’s operating system UI language settings and displays setup UI in the same language as the operating system.


Comments (11)

  1. MatX says:

    Great article

  2. enthu38 says:

    I am not able to update my .NET 1.1 to .NET 2.0  despite trying some possibilities like

    I have uninstalled .NET 1.1 and tried installing 2.0 but still it doesnt workout

  3. astebner says:

    Hi Enthu38 – The .NET Framework is designed to be side-by-side, so you don’t need to uninstall .NET 1.1 in order to install 2.0.

    If 2.0 setup is failing, there is a verbose log file produced that should help narrow down the cause.  It is named %temp%dd_netfx*msi*.txt and if you can zip and send that to me, I’ll try to take a look and see if I can figure anything out.  You can send it to Aaron.Stebner (at) microsoft (dot) com.

  4. This guide is intended to serve as a collection of links to articles, tools, tips and tricks that explain

  5. computerfood2003 says:

    I created an installation point for Framework 2.0 and patched it with the three msp’s to date and use this to install:

    msiexec.exe /i netfx.msi /qn /l*v netfx20install.log ADDEPLOY=1

    Works Great!

    But if I go to Add remove programs to remove, it fails "Another version of the product is already installed.  Installation of this product cannot continue. To configure the existing version of this product, Use Add remove products in the control panel"

    It can be removed following the manual instructions at http://support.microsoft.com/kb/908077

    But that dont sit well with me.  

  6. astebner says:

    Hi Computerfood2003 – What is the exact location that the Add/Remove Programs entry is pointing to that gets launched when you click on it from there after installation?  Also, do you happen to have a verbose MSI log file from when you attempt to remove it from Add/Remove Programs that I could look at?  You can send the log to Aaron.Stebner (at) microsoft (dot) com.