Aaron Stebner's WebLog

Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio

How to get around the MSI 3.0 block in .NET Framework 2.0 Beta 2 setup

How to get around the MSI 3.0 block in .NET Framework 2.0 Beta 2 setup

  • Comments 9

<updated on June 6, 2005 - reworded one of the caveats and moved it to be caveat #1 based on the comment from HeathS about the requirement that Windows Installer 3.x be present in order to install .NET Framework 2.0 hotfixes or service packs>

Some of you may have noticed that .NET Framework 2.0 beta 2 requires a minimum version of Windows Installer 3.0 and if it is not installed on the computer, you will have to download it and install it as a separate step.  This is a change from .NET Framework 2.0 beta 1, which required a minimum version of Windows Installer 2.0 and carried the installation packages for Windows Installer 2.0 as part of the dotnetfx.exe package.

The increased minimum requirement from Windows Installer 2.0 to Windows Installer 3.0 (and possibly to 3.1 by the time .NET Framework 2.0 ships) is due to a lot of servicing/patching fixes available in Windows Installer 3.x.  Since there aren't any strict setup-time requirements for Windows Installer 3.0 in the .NET Framework setup, you can use some unsupported reverse engineering tricks to make .NET Framework 2.0 beta 2 setup work if you only have Windows Installer 2.0 installed.

Before I list the steps I want to list a couple of important caveats:

  1. You will not be able to install any hotfixes or service packs for .NET Framework 2.0 if you use this method and install with only Windows Installer 2.0 present on your machine.  Therefor, this should only be used for testing purposes in case you have some dire need to unblock a single machine from getting the .NET Framework 2.0 installed that you plan to reimage after you are done testing.  In production scenarios, you really should install Windows Installer 3.1 because of the greatly improved product patching that it supports (described as part of this article).
  2. The .NET Framework 2.0 setup does have a technical requirement that the computer have at least Windows Installer 2.0, so please don't try to use this technique to unblock installation on a machine with Windows Installer 1.x installed

With that out of the way, here are the steps you can use to get .NET Framework 2.0 beta 2 to install on a machine with only Windows Installer 2.0 present:

  1. Download the .NET Framework 2.0 beta 2 setup and save the file dotnetfx.exe to your local hard drive
  2. Open a cmd prompt and run the following command to extract the contents of dotnetfx.exe: dotnetfx.exe /t:"c:\temp" /c (or you can substitute any folder name for "c:\temp" in this command line)
  3. Go to the folder c:\temp and open the file install.ini in a text editor such as notepad.exe
  4. Find the [DetectDarwin] section in install.ini.  This section controls which version of Windows Installer setup will look for.  You can modify the value from the default 3.0 to 2.0 for each of the processor types (x86, i64 and a64)
  5. Save and close install.ini
  6. Run install.exe from the folder c:\temp to start .NET Framework setup

Note that if you want to use these steps for one of the 64-bit versions of .NET Framework 2.0, you should substitute "netfx64.exe" for every instance of "dotnetfx.exe" above.

 

  • Servicing will require Windows Installer 3.0 or even 3.1 for reasons included in - but not limited to - http://blogs.msdn.com/heaths/archive/2005/04/12/407665.aspx. If users follow your advice they will not be able to patch their products because we will block on Windows Installer 2.0 on Windows NT-based platforms for very specific reasons.
  • Thanks Heath. I thought that was going to be the case for .NET Framework 2.0 patches but wasn't positive. I will update the main text of this article to specifically point this out.
  • Nice article !!!

    I want some extra information ..may be this is not relevant to above thread:
    While creating Patch through MsiMsp.exe and Patchwiz.dll I got following error:
    "Since MSI 3.0 will block installation of major upgrade patches with sequencing information, creation of such patches is blocked."

    Can you please fix it ? Reason behind the same ?
  • dotnetparam, the Windows Installer team recommends that you do not ship major upgrade patches. This information should be in MSDN as well. The documentation does state, however, that major upgrades will *ignore* the MsiPatchSequnce table in the MSP. I will pass this problem on.
  • thanks !!!
    I got the resolution !!
  • Please share the resolution. I too am getting this when creating a patch between two VS.NET 2003 setup projects with minor updates between them.

    For example,
    1. I set the installer project version from 1.1.2055 to 1.1.2056. VS.NET automatically updates the product code GUID.
    2. I rebuild the installer msi.
    3. msiexec /a /qb+ the original installer as the base image and the new installer as the patched image to different folders.
    4. orca to set up the patch pcp file.
    5. Then msimsp.

    I get the following log error:
    "ERROR: Since MSI 3.0 will block installation of major upgrade patches with sequencing information, creation of such patches is blocked."

    And the msimsp.exe command reports:
    "Failed to create patch. Error code: 0xC00E5182".

    The tmp dir it creates seems to have an msp file and several other files, but it doesn't package the files into the final msp.
  • Hi mjmeans - Heath just posted a good explanation about major upgrades in Windows Installer, including some changes that are new in Windows Installer 3.0 and higher. You can find the article at http://blogs.msdn.com/heaths/archive/2005/08/22/454552.aspx.

  • getting a missing dll file error when i try this
  • Hi Tash - What DLL is reported as missing when you try this?
Page 1 of 1 (9 items)
Leave a Comment
  • Please add 8 and 2 and type the answer here:
  • Post