Aaron Stebner's WebLog

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

March, 2008

  • Aaron Stebner's WebLog

    Steps I use to diagnose .NET Framework 3.0 and 3.5 installation failures related to the ServiceModelReg.exe custom action

    • 16 Comments

    I often get questions from fellow employees or customers who find my blog regarding how to troubleshoot .NET Framework installation errors.  I want to outline the process that I use to narrow down one of the most common errors that I see that can cause the .NET Framework 3.0, the .NET Framework 3.0 SP1 or the .NET Framework 3.5 to fail in the hopes that it will help some folks who read this post in the future be able to narrow down and resolve this issue on their system if they encounter it.

    This particular error occurs when a custom action that runs an EXE named ServiceModelReg.exe during .NET Framework 3.0 setup fails.  This custom action is inside of the Windows Communication Foundation (WCF) MSI in the .NET Framework 3.0, and it also is run during .NET Framework 3.5 setup because the .NET Framework 3.5 requires the .NET Framework 3.0 SP1 as a prerequisite.  I use the following process to narrow down the root cause of the error and attempt to identify useful workarounds:

    Step 1 - Find the exact component that is failing

    I start the investigation process by looking at the .NET Framework 3.0 setup log files or the .NET Framework 3.5 setup log files, depending on what setup is failing.

    If the error occurs during .NET Framework 3.0 setup, the main .NET Framework 3.0 setup error log file (named %temp%\dd_dotnetfx3error.txt) will show an error like the following in this case:

    [03/25/08,11:11:11] Windows Communication Foundation: [2] Error: Installation failed for component Windows Communication Foundation. MSI returned error code 1603

    If the error occurs during .NET Framework 3.5 setup, then the main .NET Framework 3.5 setup error log file (named %temp%\dd_dotnetfx35error.txt) will show an error like the following in this case:

    [03/25/08,11:11:11] Microsoft .NET Framework 3.0a: [2] Error: Installation failed for component Microsoft .NET Framework 3.0a. MSI returned error code 1603

    Step 2 - Find the verbose MSI log for the failing component

    From here, I proceed to locate the verbose MSI log file for the specific component that is failing.  As I described in this blog post, the .NET Framework 3.0 and 3.5 installers create their own verbose log files by default, so there is no need to enable logging and re-run setup to produce verbose logs.

    If the error occurs during .NET Framework 3.0 setup, the verbose log file that contains the error will be named %temp%\dd_wcf_retMSI*.txt in this case.

    If the error occurs during .NET Framework 3.0 SP1 setup, the verbose log file that contains the error will be named %temp%\dd_NET_Framework30_Setup*.txt in this case.

    Step 3 - Find the error causing the failure within the verbose MSI log

    Once I have located the appropriate verbose MSI log file, I use the technique described in this blog post to narrow down the root cause of the failure.  Searching for the string return value 3 in the case of this particular error shows that the last action being run prior to setup failing is the following:

    MSI (s) (B4:D0) [11:11:11:011]: Executing op: CustomActionSchedule(Action = DD_CA_InstallXwsRegExe_X86.3643236F_FC70_11D3_A536_0090278A1BB8, ActionType=3073, Source=BinaryData, Target=QuietExec, CustomActionData=c:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe /r /x /y /v; dummy; c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\)

    Note that you cannot search for the string return value 3 if you are installing on a non-English OS.  Windows Installer translates the string "return value" into the OS language when it creates entries in a verbose MSI log file, so you will need to search for a translated version of this message if you are installing on a non-English OS.

    Step 4 - Find the root cause of this custom action failure

    In this case, the verbose MSI log file shows that the custom action that runs ServiceModelReg.exe is failing in this case.  This custom action is designed to create its own log file named %temp%\dd_wcf_retCA*.txt, so the first thing I try when I see this type of error is to find that file and look for errors, warnings, or exceptions.  Most of the time, if that log is created, the error listed there is fairly self-explanatory and it is straightforward to determine how to work around the problem.

    However, I have also seen many cases where ServiceModelReg.exe fails but does not create this additional log file.  In that case, the next step is to go look at the application event log to see if any exceptions were logged by this action that will help narrow down the root cause.  You can do the following to locate this type of error in the application event log:

    1. Click on the Start menu, choose Run, type eventvwr and click OK
    2. Click on the Application log on the left side of the Event Viewer
    3. Locate the application event log entries with time stamps that match the time stamps of the custom action listed in the verbose MSI log files described above
    4. Look for errors with the source value set to System.ServiceModel.Install 3.0.0.0 (this is the assembly that is loaded by ServiceModelReg.exe to perform the registration that it needs to do)

    In most cases that I've seen of this issue in the past, the exception listed in the application event log looks like the following:

    System.TypeInitializationException: The type initializer for 'System.ServiceModel.Install.IisHelper' threw an exception. ---> System.ApplicationException: ServiceModelReg.exe has detected a possible corruption in the IIS metabase that prevents the registration of the ServiceModel IIS scriptmaps.  Please either fix the IIS metabase corruption, or, if you do not desire ServiceModel WebHost funtionality, disable the IISAdmin service and reregister ServiceModel. ---> System.Runtime.InteropServices.COMException (0x8009000F): Object already exists.

    Step 5 - Try to fix the underlying issue

    Typically, the above error means that there is something wrong with the installation of IIS on the system.  What I normally suggest to try to fix this type of error is to try to uninstall and then re-install IIS using the Add/Remove Windows Components control panel, reboot, and then try to install the .NET Framework 3.0 or 3.5 again.  If that does not help, it should also be possible to disable the IISAdmin service on the system prior to installing the .NET Framework 3.0 or 3.5 (assuming that you do not plan on using Windows Communication Foundation WebHost functionality after installing the .NET Framework 3.0 or 3.5).  To do that, you can use these steps:

    1. Click on the Start menu, choose Run, type services.msc and click OK
    2. Find the service named IIS Admin Service, right-click on it and choose Properties
    3. Change the Startup type drop-down to Disabled 
    4. Click the button to stop the service
    5. Click OK to dismiss the Service Properties dialog

    If the above steps do not work, it can also be helpful to try to install the .NET Framework 3.5 SP1 (which will install the .NET Framework 3.0 SP2 and 2.0 SP2 behind the scenes).  As described in this blog post, there are some changes in .NET Framework 3.5 SP1 setup that can allow it to succeed in cases where .NET Framework 3.0 or 3.5 setup would otherwise fail.

    What to do if steps 4 and 5 do not match what you see on your system

    This blog post is intended to demonstrate how I approach narrowing down the root cause of a particularly common installation problem that affects the .NET Framework 3.0 and 3.5.  However, there are several possible causes of installation failures in the .NET Framework, so that means that these steps will not work for all cases.  If you do not see the specific types of entries in your log files, then the workaround in step 5 will likely not help, but steps 1 through 4 can still be helpful in finding the root cause.

    I have posted about other possible causes of ServiceModelReg.exe custom action failures in the following blog post:

    I also suggest consulting the .NET Framework setup troubleshooting guide for links to other possible installation issues and workarounds, links to log file locations, links to readme files, etc.

    <update date="11/24/2008"> Added a link to a new blog post I wrote about another possible cause of ServiceModelReg.exe custom action failures in the .NET Framework 3.0 and 3.5. </update>

    <update date="8/10/2009"> Added a suggestion to try installing the .NET Framework 3.5 SP1 as a possible workaround to this type of install failure. </update>

     

  • Aaron Stebner's WebLog

    Links to information about creating customized XNA Game Studio 2.0 project templates

    • 0 Comments

    XNA Game Studio 2.0 introduces the concept of a Game Content Project.  A content project is nested within an XNA Game Studio 2.0 project in Visual Studio, and it is designed to store all assets and content for a game (sounds, textures, 3D models, etc) and build them as a part of the build process for the game project or independently of the game code.

    Having a nested content project within an XNA Game Studio 2.0 project makes it more difficult to create customized Visual Studio templates for XNA Game Studio 2.0 game projects or game library projects.  Fortunately, a couple of members of the XNA Game Studio team (Stephen and Nazeeh) have written in-depth blog posts that describe how to create customized Visual Studio project templates for XNA Game Studio 2.0 and demonstrate the process with a real-world example.

    If you are interested in creating customized project templates for XNA Game Studio 2.0, I encourage you to check out these blog posts:

  • Aaron Stebner's WebLog

    How to silently install the components included with the Visual Studio 2008 Express Editions

    • 12 Comments

    A while back, I posted a set of instructions for automating the install of Visual Studio 2005 Express Editions.  Since the Visual Studio 2008 product family shipped last November, I have been asked for an equivalent set of instructions for Visual Studio 2008 Express Editions as well.

    Before using the instructions in this post, you must use one of the following links to create a network install point for one or all of the Visual Studio 2008 Express Editions:

    Once you have downloaded the pieces of the Express Edition setup package, you will need to figure out which pieces are needed for the OS type (Windows XP, Windows Server 2003, etc), OS language (English, etc), processor architecture (x86, x64) and Express Edition type (VB, VWD, etc) that you are planning to install.  Each Express Edition consists of a set of prerequisites, the main Express Edition package and a set of optional components.

    The following components are prerequisites, meaning they must be installed before attempting to install the main Express Edition package:

    • Windows Installer 3.1
    • Visual C++ Minimal Redistributable
    • .NET Framework 3.5
    • .NET Framework 3.5 language pack
    • Remote Debugger
    • Windows SDK Express Headers and Libraries
    • Windows SDK Express Tools for the .NET Framework
    • Windows SDK Express Tools for Win32
    • Windows SDK Express Tools for Web
    • Visual Studio Web Authoring Component

    The following components are optional components, meaning they are not required to be installed, and must be installed after the main Express Edition package if you choose to install them:

    • SQL Server Compact 3.5
    • SQL Server Compact 3.5 Design Tools
    • MSDN Express
    • SQL Express
    • SQL Publishing Wizard
    • Silverlight 1.0

    The following is a list of all VS 2008 Express Edition prerequisites, main packages and optional components, what conditions they are needed for and their silent install command line switches.  Note that some packages are self-extracting packages that require 2 steps - one to extract the contents and a second to perform the silent install.

    Windows Installer 3.1

    Needed on Windows XP x86 if not already installed.

    WindowsInstaller-KB893803-v2-x86.exe /quiet /norestart

    Visual C++ Minimal Redistributable

    Needed on all operating systems if not already installed.

    • To extract: vcredistmin_x86.exe /x:%temp%\vcredistmin_x86 /q
    • To install: msiexec /i %temp%\vcredistmin_x86\vc_minred.msi /qn /l*v %temp%\vcredistmin.log VSEXTUI=1 REBOOT=ReallySuppress

    .NET Framework 3.5

    Needed on all operating systems if not already installed.

    dotnetfx35setup.exe /q /norestart /lang:ENU

    .NET Framework 3.5 language pack (x86)

    Needed for all non-English Express Editions on all x86 operating systems if not already installed.

    dotnetfx35langpack_x86**.exe /q /norestart

    Note: In this command line, ** is the 2 letter culture code for the language you are installing.  For example, the file name will be dotnetfx35langpack_x86fr.exe for the French language pack.

    .NET Framework 3.5 language pack (x64)

    Needed for all non-English Express Editions on all x64 operating systems if not already installed.

    dotnetfx35langpack_x64**.exe /q /norestart

    Note: In this command line, ** is the 2 letter culture code for the language you are installing.  For example, the file name will be dotnetfx35langpack_x64fr.exe for the French language pack.

    Remote Debugger (x64)

    Needed on all x64 operating systems if not already installed.

    • To extract: expdbgsetup.exe /x:%temp%\expdbgsetup /q
    • To install: %temp%\expdbgsetup\install.exe /q

    Windows SDK Express Headers and Libraries (x86)

    Only needed for the Visual C++ 2008 Express Edition.  Needed on all x86 operating systems if not already installed.

    • To extract: WinSDK_Build.exe /x:%temp%\winsdk_build /q
    • To install: msiexec /i %temp%\winsdk_build\VistaClientHeadersLibs-x86.msi /qn /l*v %temp%\VistaClientHeadersLibs-x86.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Headers and Libraries (x64)

    Only needed for the Visual C++ 2008 Express Edition.  Needed on all x64 operating systems if not already installed.

    • To extract: WinSDK_Build.exe /x:%temp%\winsdk_build /q
    • To install: msiexec /i %temp%\winsdk_build\VistaClientHeadersLibs-x64.msi /qn /l*v %temp%\VistaClientHeadersLibs-x64.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for the .NET Framework (x86)

    Only needed for Visual Basic, Visual C++ 2008 and Visual C# 2008 Express Editions.  Needed on all x86 operating systems if not already installed.

    • To extract: WinSDK_ExpTools.exe /x:%temp%\winsdk_exptools /q
    • To install: msiexec /i %temp%\winsdk_exptools\WinSDK_exptoolsm_x86.msi /qn /l*v %temp%\WinSDK_exptoolsm_x86.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for the .NET Framework (x64)

    Only needed for Visual Basic, Visual C++ 2008 and Visual C# 2008 Express Editions.  Needed on all x64 operating systems if not already installed.

    • To extract: WinSDK_ExpTools.exe /x:%temp%\winsdk_exptools /q
    • To install: msiexec /i %temp%\winsdk_exptools\WinSDK_exptoolsm_amd64.msi /qn /l*v %temp%\WinSDK_exptoolsm_amd64.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for Win32 (x86)

    Only needed for Visual Basic 2008, Visual C++ 2008 and Visual C# 2008 Express Editions.  Needed on all x86 operating systems if not already installed.

    • To extract: WinSDK_Exp32Tools.exe /x:%temp%\winsdk_exp32tools /q
    • To install: msiexec /i %temp%\winsdk_exp32tools\VistaClientExpressTools-x86.msi /qn /l*v %temp%\VistaClientExpressTools-x86.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for Win32 (x64)

    Only needed for Visual Basic 2008, Visual C++ 2008 and Visual C# 2008 Express Editions.  Needed on all x64 operating systems if not already installed.

    • To extract: WinSDK_Exp32Tools.exe /x:%temp%\winsdk_exp32tools /q
    • To install: msiexec /i %temp%\winsdk_exp32tools\VistaClientExpressTools-x64.msi /qn /l*v %temp%\VistaClientExpressTools-x64.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for Web (x86)

    Only needed for the Visual Web Developer 2008 Express Edition.  Needed on all x86 operating systems if not already installed.

    • To extract: WinSDK_VWDTools.exe /x:%temp%\winsdk_vwdtools /q
    • To install: msiexec /i %temp%\winsdk_vwdtools\WinSDK_vwdtoolsm_x86.msi /qn /l*v %temp%\WinSDK_vwdtoolsm_x86.log USING_EXUIH=1 REBOOT=ReallySuppress

    Windows SDK Express Tools for Web (x64)

    Only needed for the Visual Web Developer 2008 Express Edition.  Needed on all x64 operating systems if not already installed.

    • To extract: WinSDK_VWDTools.exe /x:%temp%\winsdk_vwdtools /q
    • To install: msiexec /i %temp%\winsdk_vwdtools\WinSDK_vwdtoolsm_amd64.msi /qn /l*v %temp%\WinSDK_vwdtoolsm_amd64.log USING_EXUIH=1 REBOOT=ReallySuppress

    Visual Studio Web Authoring Component

    Only needed for the Visual Web Developer 2008 Express Edition.  Needed on all operating systems if not already installed.

    WebDesignerCore.EXE /q /install /1033

    Main Visual Basic 2008 Express Edition package

    Needed on all operating systems in order to install the Visual Basic 2008 Express Edition.

    • To extract: ixpvb.exe /x:%temp%\vb_express_main /q
    • To install: msiexec /i %temp%\vb_express_main\vs_setup.msi /qn /l*v %temp%\vb_express_main.log VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress /qn

    Main Visual C++ 2008 Express Edition package

    Needed on all operating systems in order to install the Visual C++ 2008 Express Edition.

    • To extract: ixpvc.exe /x:%temp%\vc_express_main /q
    • To install: msiexec /i %temp%\vc_express_main\vs_setup.msi /qn /l*v %temp%\vc_express_main.log VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress /qn

    Main Visual C# 2008 Express Edition package

    Needed on all operating systems in order to install the Visual C# 2008 Express Edition.

    • To extract: ixpvcs.exe /x:%temp%\vcsharp_express_main /q
    • To install: msiexec /i %temp%\vcsharp_express_main\vs_setup.msi /qn /l*v %temp%\vcsharp_express_main.log VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress /qn

    Main Visual Web Developer 2008 Express Edition package

    Needed on all operating systems in order to install the Visual Web Developer 2008 Express Edition.

    • To extract: ixpvwd.exe /x:%temp%\vwd_express_main /q
    • To install: msiexec /i %temp%\vwd_express_main\vs_setup.msi /qn /l*v %temp%\vwd_express_main.log VSEXTUI=1 ADDLOCAL=ALL REBOOT=ReallySuppress /qn

    SQL Server Compact 3.5

    Only needed for Visual Basic 2008 and Visual C# 2008 Express Editions.  Optional on all operating systems if not already installed.

    msiexec /i SSCERuntime-enu.msi /qn /l*v %temp%\SSCERuntime-enu.log USING_EXUIH=1 REBOOT=ReallySuppress

    SQL Server Compact 3.5 Design Tools

    Only needed for Visual Basic 2008 and Visual C# 2008 Express Editions.  Optional on all operating systems if not already installed.

    msiexec /i SSCEVSTools-ENU.msi /qn /l*v %temp%\SSCEVSTools-ENU.log USING_EXUIH=1 REBOOT=ReallySuppress

    MSDN Express

    Optional on all operating systems if not already installed.

    • To extract: msdnixp.exe /x:%temp%\msdnixp /q
    • To install: %temp%\msdnixp\install.exe /q

    SQL Express (x86)

    Optional on all x86 operating systems if not already installed.

    sqlexpr32.exe -q /norebootchk /qn reboot=ReallySuppress AddUserAsAdmin=1 addlocal=all instancename=SQLEXPRESS SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0 ERRORREPORTING=2 SQLAUTOSTART=1

    SQL Express (x64)

    Optional on all x64 operating systems if not already installed.

    sqlexpr.exe -q /norebootchk /qn reboot=ReallySuppress AddUserAsAdmin=1 addlocal=all instancename=SQLEXPRESS SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0 ERRORREPORTING=2 SQLAUTOSTART=1

    SQL Publishing Wizard

    Only needed for the Visual Web Developer 2008 Express Edition.  Optional on all operating systems if not already installed.

    msiexec /i SqlPubWiz.msi /qn /l*v %temp%\sqlpubwiz.log USING_EXUIH=1 REBOOT=ReallySuppress ISINVOKEDFROMVS=1

    Silverlight 1.0

    Optional on all operating systems if not already installed.

    Silverlight1.0.exe /q

    Additional notes about silent install of the Express Editions:

    • The packages should be chained in the order listed above because this is the order that Express setup will run them if you launch setup in full UI mode
    • Some packages will require different command lines if you are installing non-English versions of the VS 2008 Express Editions - the Visual Studio Web Authoring Component, SQL Server Compact 3.5 and the SQL Server Compact 3.5 Design Tools
    • All of the command lines listed above can be figured out by downloading the Express web download bootstrapper (for example, this package for Visual C# 2008 Express), extracting the contents of the package, and reading through the file baseline.dat.  The combination of the Executable value data and the CommandLine value data for each component forms the command line that you want to use for silent installation.
    • If you look at baseline.dat for the Express Editions to form the command lines, you will notice that I removed the /watsongenman switches in the command lines that I listed above.  The /watsongenman switch is used to generate a log file that is sent as part of a Watson report for the Express Edition setup package when it is installed via full UI mode.  That switch is not needed when individually installing the components as I describe above.
    • To change from a silent installation to an unattended installation, change all instances of install.exe /q to install.exe /qb and change /qn to /qb for the main Express Edition and SQL Express command lines
  • Aaron Stebner's WebLog

    Link to information about a new WiX custom action to create Internet shortcuts

    • 1 Comments

    Bob Arnson has posted some information on his blog about a new feature he has added to WiX 3.0 that I wanted to link to here.  In his post at http://www.joyofsetup.com/2008/03/18/new-wix-feature-internet-shortcuts/, Bob describes the Internet shortcut creation feature that he added to WixUtilExtension.  The new InternetShortcut element allows you to create a shortcut to a web site or to a locally installed file referenced via the file:// protocol.

    For example, the following authoring will create an http:// shortcut:

    <util:InternetShortcut
        Id="MyBlog"
        Directory="DesktopFolder"
        Name="My Blog"
        Target="http://blogs.msdn.com/astebner/"
    />

    After adding the InternetShortcut element to your WiX authoring, you need to make sure to add a reference to the WixUtilExtension when compiling your MSI.  To do that, you must use the /ext parameter for the WiX compiler (candle.exe) like the following:

    candle.exe yoursetup.wxs -ext 'c:\Program Files\Windows Installer XML v3\bin\WixUtilExtension.dll'

    This feature will be available in the next weekly WiX 3.0 release (it is not in the 3.0.3907.0 build but will be in the next build after that).

    As a side note, as Bob mentioned in his post, it is technically possible to use the IniFile table in Windows Installer to create a .url file that will accomplish the same thing as an Internet shortcut, but the format of .url files is not officially documented and therefore is not guaranteed to work in the future.  This is how the XNA Game Studio 2.0 setup creates a start menu shortcut for the Creators Club Web site:

    <IniFile
      Id="CreatorsClubLink"
      Action="createLine"
      Name="XNA Creators Club Online.url"
      Directory="XnaProgramMenuDir"
      Section="InternetShortcut"
      Key="URL"
      Value="http://go.microsoft.com/fwlink/?LinkId=101279&amp;clcid=0x409"
    />

  • Aaron Stebner's WebLog

    How to create a combined network install point for all Visual Studio 2008 Express Editions

    • 4 Comments

    I previously posted an item describing how to create an installable layout for a Visual Studio 2008 Express Edition.  In this post, I will extend upon the topic of creating a network install point and demonstrate how to create a network install point that can be used to install all of the Express Editions from a single location.  This topic is more advanced than my previous post because it requires some modifications to setup data files, but it is all achievable with a few additional steps.

    At a high level, what the steps below will do is walk you through the process of downloading the prerequisite packages (which are common to all Express Editions), and then downloading the individual installers for each Express Edition.  Then we will update a setup data file for each Express Edition to force setup to search for the prerequisite packages in a common location so they only have to be downloaded and stored on the network install point once.

    Here are the specific steps to accomplish this:

    1. Create a folder named c:\Express_Editions_2008 and a sub-folder named c:\Express_Editions_2008\wcu
    2. Follow the steps in Option 1 or Option 2 of the topic entitled How to create an installable layout for a Visual Studio 2008 Express Edition to stage a network share for the Visual WebDev 2008 Express Edition, and stage it to c:\Express_Editions_2008\VWD instead of the folder c:\visual_webdev_2008 listed in that article
    3. Copy the contents of the folder c:\Express_Editions_2008\VWD\wcu up one directory to c:\Express_Editions_2008\wcu
    4. Open the file named c:\Express_Editions_2008\VWD\setup.sdb in a text editor such as notepad
    5. Locate the section named [CD Info] in setup.sdb, and for each component that contains the relative folder path wcu\<folder>, change this path to be ..\wcu\<folder>.  This allows setup to find the component setup package in the new location that you copied the WCU folder to in step 3 above
    6. Save and close setup.sdb

    Now, for each of the other 3 Express Editions (Visual Basic 2008 Express Edition, Visual C++ 2008 Express Edition and Visual C# 2008 Express Edition), follow the set of steps listed below to add them to your network install point.

    Visual Basic 2008 Express Edition

    1. Download the web download bootstrapper for the Visual Basic 2008 Express Edition and save it to your local hard drive
    2. Create a new folder named c:\Express_Editions_2008\VB
    3. Extract the contents of the web download bootstrapper to the folder c:\Express_Editions_2008\VB by running vbsetup.exe /x:c:\Express_Editions_2008\VB
    4. Go to c:\Express_Editions_2008\VB and open the file baseline.dat in a text editor such as Notepad
    5. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [vs_setup.dll] section of baseline.dat.  The desired URL is http://go.microsoft.com/fwlink/?LinkId=96093 for Visual Basic.
    6. Navigate to the URL that you created in step 5 and choose to save the file ixpvb.exe to the folder c:\Express_Editions_2008\VB
    7. Open the file named c:\Express_Editions_2008\VB\setup.sdb in a text editor such as notepad
    8. Locate the section named [CD Info] in setup.sdb, and for each component that contains the relative folder path wcu\<folder>, change this path to be ..\wcu\<folder>.  This allows setup to find the component setup package in the new location that you copied the WCU folder to in step 3 above
    9. Save and close setup.sdb

    Visual C++ 2008 Express Edition

    1. Download the web download bootstrapper for the Visual C++ 2008 Express Edition and save it to your local hard drive
    2. Create a new folder named c:\Express_Editions_2008\VC
    3. Extract the contents of the web download bootstrapper to the folder c:\Express_Editions_2008\VC by running vcsetup.exe /x:c:\Express_Editions_2008\VC
    4. Go to c:\Express_Editions_2008\VC and open the file baseline.dat in a text editor such as Notepad
    5. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [vs_setup.dll] section of baseline.dat.  The desired URL is http://go.microsoft.com/fwlink/?LinkId=95929 for Visual C++
    6. Navigate to the URL that you created in step 5 and choose to save the file ixpvc.exe to the folder c:\Express_Editions_2008\VC
    7. Open the file named c:\Express_Editions_2008\VC\setup.sdb in a text editor such as notepad
    8. Locate the section named [CD Info] in setup.sdb, and for each component that contains the relative folder path wcu\<folder>, change this path to be ..\wcu\<folder>.  This allows setup to find the component setup package in the new location that you copied the WCU folder to in step 3 above
    9. Save and close setup.sdb

    Visual C# 2008 Express Edition

    1. Download the web download bootstrapper for the Visual C# 2008 Express Edition and save it to your local hard drive
    2. Create a new folder named c:\Express_Editions_2008\VCSharp
    3. Extract the contents of the web download bootstrapper to the folder c:\Express_Editions_2008\VCSharp by running vcssetup.exe /x:c:\Express_Editions_2008\VCSharp
    4. Go to c:\Express_Editions_2008\VCSharp and open the file baseline.dat in a text editor such as Notepad
    5. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [vs_setup.dll] section of baseline.dat.  The desired URL is http://go.microsoft.com/fwlink/?LinkId=96094 for Visual C#
    6. Navigate to the URL that you created in step 5 and choose to save the file ixpvcs.exe to the folder c:\Express_Editions_2008\VCSharp
    7. Open the file named c:\Express_Editions\VCSharp\setup.sdb in a text editor such as notepad
    8. Locate the section named [CD Info] in setup.sdb, and for each component that contains the relative folder path wcu\<folder>, change this path to be ..\wcu\<folder>.  This allows setup to find the component setup package in the new location that you copied the WCU folder to in step 3 above
    9. Save and close setup.sdb
    Once you have staged the desired Express Editions, you can run the individual setup.exe files in the c:\Express_Editions_2008\<edition_name> sub-folders to run each setup and install each Express Edition.
  • Aaron Stebner's WebLog

    How to create an installable layout for a Visual Studio 2008 Express Edition

    • 7 Comments

    The following options can be used to download and assemble a folder structure that can be used to install one of the Visual Studio 2008 Express Editions.

    Option 1: Download and burn or extract the CD image (easiest option)

    The first, and easiest option is to utilize the Offline Install instructions for Visual Studio 2008 Express Editions page on the MSDN site.  These instructions allow you to download an ISO file for a DVD image that contains all of the following Visual Studio 2008 Express Editions and their prerequisites and optional components:

    • Visual Basic 2008 Express Edition
    • Visual C++ 2008 Express Edition
    • Visual C# 2008 Express Edition
    • Visual Web Developer 2008 Express Edition

    Once you have downloaded the ISO file, you can either burn the image onto a DVD and then copy the contents to your local hard drive or extract the contents to your local hard drive directly using a tool such as IsoBuster.

    Once you have copied the contents to a local hard drive, you can share out the folder on a network and install it from there if you choose to.

    Option 2: Manually assemble the equivalent of the CD image (advanced option)

    If you need to optimize bandwidth or for some other reason cannot use option 1, you can use some advanced steps to reverse engineer the VS 2008 Express Edition setup data files and manually download the individual pieces you will need to create a network installation point.  If you use these steps, you can optimize your download size by only including a single Express Edition instead of all 4.  You can include only the optional components you want to install (meaning you can skip SQL Express and MSDN if you choose to not install them during Express Edition setup).  You can also optimize your download size based on the configuration of the machines you will be installing on.  For example, if you know you will not need to install on any x64 systems, you can skip downloading the x64 components for SQL Express and the remote debugger.  Also, if you know that the systems you will install on already have prerequisites such as Windows Installer 3.1 or the .NET Framework 3.5, you can skip downloading those components.

    The following steps will allow you to manually assemble an installable layout for an Express Edition.  In this example, I will use the Visual Web Developer 2008 Express Edition (English), but equivalent steps can be used for the other Express Editions and non-English languages as well.  For other Express Editions, you will need to change the download location used in steps 1 and 5 below.

    1. Download the web download bootstrapper for Visual Web Developer 2008 Express Edition and save it to your local hard drive
    2. Create a new folder named c:\visual_webdev_2008 (or one of your own choosing)
    3. Extract the contents of the web download bootstrapper to the folder c:\visual_webdev_2008 by running vwdsetup.exe /x:c:\visual_webdev_2008
    4. Go to c:\visual_webdev_2008 and open the file baseline.dat in a text editor such as Notepad
    5. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [vs_setup.dll] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=95930
    6. Navigate to the URL that you created in step 5 and choose to save the file ixpvwd.exe to the folder c:\visual_webdev_2008
    7. Make a new folder named c:\visual_webdev_2008\wcu
    8. For the applicable prerequisites and optional components listed below, follow the set of additional steps listed below to download them and place them in the correct locations.  Some components are only needed for specific Express Editions or for specific processor architectures, and those details are noted in the title for each component listed below.  If no notes are included in the component name, it is applicable to all Express Editions and processor architectures.

    Windows Installer 3.1

    1. Make a new folder named c:\visual_webdev_2008\wcu\msi31
    2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp90] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=51430
    3. Navigate to the URL that you created in step 2 and choose to save the file WindowsInstaller-KB893803-v2-x86.exe to the folder c:\visual_webdev_2008\wcu\msi31

    Visual C++ Minimal Redistributable

    1. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp328,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=99257
    2. Navigate to the URL that you created in step 2 and choose to save the file vcredistmin_x86.exe to the folder c:\visual_webdev_2008\wcu

    .NET Framework 3.5

    1. Make a new folder named c:\visual_webdev_2008\wcu\dotnetframework
    2. Download the full install package for the .NET Framework 3.5 and save the file to your computer
    3. Extract the contents of the .NET Framework 3.5 setup package to the folder c:\visual_webdev_2008\wcu\dotnetframework by running dotnetfx35.exe /x:c:\visual_webdev_2008\wcu\dotnetframework using the copy of dotnetfx35.exe that you downloaded in step 2

    Remote Debugger (x64)

    1. Make a new folder named c:\visual_webdev_2008\wcu\RDBG and then another new folder named c:\visual_webdev_2008\wcu\RDBG\x64
    2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp73,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=95932
    3. Navigate to the URL that you created in step 2 and choose to save the file expdbgsetup.exe to the folder c:\visual_webdev_2008\wcu\RDBG\x64

    Windows SDK Express Tools for Web (only needed for Visual Web Developer Express Edition)

    1. Make a new folder named c:\visual_webdev_2008\wcu\WinSDK
    2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp344,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=96154
    3. Navigate to the URL that you created in step 2 and choose to save the file WinSDK_VWDTools.exe to the folder c:\visual_webdev_2008\wcu\WinSDK

      Windows SDK Express Tools for the .NET Framework (needed for Visual Basic, Visual C++ and Visual C# Express Editions)

      1. Make a new folder named c:\visual_webdev_2008\wcu\WinSDK
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp332,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=96148
      3. Navigate to the URL that you created in step 2 and choose to save the file WinSDK_ExpTools.exe to the folder c:\visual_webdev_2008\wcu\WinSDK

      Windows SDK Express Tools for Win32 (needed for Visual Basic, Visual C++ and Visual C# Express Editions)

      1. Make a new folder named c:\visual_webdev_2008\wcu\WinSDK
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp338,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=96149
      3. Navigate to the URL that you created in step 2 and choose to save the file WinSDK_Exp32Tools.exe to the folder c:\visual_webdev_2008\wcu\WinSDK

      Windows SDK Express Headers and Libraries (only needed for Visual C++ Express Edition)

      1. Make a new folder named c:\visual_webdev_2008\wcu\WinSDK
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp403,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=96151
      3. Navigate to the URL that you created in step 2 and choose to save the file WinSDK_Build.exe to the folder c:\visual_webdev_2008\wcu\WinSDK

      Visual Studio Web Authoring Component (only needed for Visual Web Developer Express Edition)

      1. Make a new folder named c:\visual_webdev_2008\wcu\WebDesignerCore
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp320] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=95934
      3. Navigate to the URL that you created in step 2 and choose to save the file WebDesignerCore.exe to the folder c:\visual_webdev_2008\wcu\WebDesignerCore

      SQL Server Compact 3.5 (needed for Visual Basic and Visual C# Express Editions)

      1. Make a new folder named c:\visual_webdev_2008\wcu\SSCE
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp478,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=90629
      3. Navigate to the URL that you created in step 2 and choose to save the file SSCERuntime-enu.msi to the folder c:\visual_webdev_2008\wcu\SSCE

      SQL Server Compact 3.5 Design Tools (needed for Visual Basic and Visual C# Express Editions)

      1. Make a new folder named c:\visual_webdev_2008\wcu\SSCE
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp479,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=90630
      3. Navigate to the URL that you created in step 2 and choose to save the file SSCEVSTools-enu.msi to the folder c:\visual_webdev_2008\wcu\SSCE

      SQL Publishing Wizard (only needed for Visual Web Developer Express Edition)

      1. Make a new folder named c:\visual_webdev_2008\wcu\SQLPub
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp485,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=98067
      3. Navigate to the URL that you created in step 2 and choose to save the file SqlPubWiz.msi to the folder c:\visual_webdev_2008\wcu\SQLPub

      SQL Server Express (x86)

      1. Make a new folder named c:\visual_webdev_2008\wcu\SSE
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp96] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=84246
      3. Navigate to the URL that you created in step 2 and choose to save the file sqlexpr32.exe to the folder c:\visual_webdev_2008\wcu\SSE

      SQL Server Express (x64)

      1. Make a new folder named c:\visual_webdev_2008\wcu\SSE
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp31] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=84247
      3. Navigate to the URL that you created in step 2 and choose to save the file sqlexpr.exe to the folder c:\visual_webdev_2008\wcu\SSE

      MSDN Express

      1. Make a new folder named c:\visual_webdev_2008\wcu\MSDNExpress
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp30,{12CDA52C-7A8F-4785-8A22-53C87393FEE0}] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=95931
      3. Navigate to the URL that you created in step 2 and choose to save the file msdnixp.exe to the folder c:\visual_webdev_2008\wcu\MSDNExpress

      Silverlight 1.0

      1. Make a new folder named c:\visual_webdev_2008\wcu\Silverlight
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp36] section of baseline.dat.  In this example, the desired URL is http://go.microsoft.com/fwlink/?LinkId=103103
      3. Navigate to the URL that you created in step 2 and choose to save the file Silverlight1.0.exe to the folder c:\visual_webdev_2008\wcu\Silverlight

      Additional notes for non-English Express Editions

      If you want to create an installable layout for a non-English Express Edition, you will need to use different URLs than the ones listed above.  The URLs can all be assembled using the prefix http://go.microsoft.com and the data stored in the URL value for the section in the file baseline.dat that corresponds to the component in question.

      In addition, you will also need to download the language pack for the .NET Framework 3.5 for non-English Express Editions.  This can be done with the following steps:

      .NET Framework 3.5 language pack (x86)

      1. Make a new folder named c:\visual_webdev\wcu\dotnetframework, then a new folder named c:\visual_webdev\wcu\dotnetframework\dotnetfx35, then a new folder named c:\visual_webdev\wcu\dotnetframework\dotnetfx35\x86
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp705####,{168D82F8-AC6B-4B55-804F-2AE51AC4BFDF}] section of baseline.dat, where #### is the 4-digit LCID for the language you are installing.  For example, the value will be 1036 for the French language pack.  The exact URL will vary based on what language you are installing.
      3. Navigate to the URL that you created in step 2 and choose to save the file dotnetfx35langpack_x86**.exe to the folder c:\visual_webdev\wcu\dotnetframework\dotnetfx35\x86, where ** is the 2 letter culture code for the language you are installing.  For example, the value will be dotnetfx35langpack_x86fr.exe for the French language pack.

      .NET Framework 3.5 language pack (x64)

      1. Make a new folder named c:\visual_webdev\wcu\dotnetframework, then a new folder named c:\visual_webdev\wcu\dotnetframework\dotnetfx35, then a new folder named c:\visual_webdev\wcu\dotnetframework\dotnetfx35\x64
      2. Open a web browser and build a URL by typing http://go.microsoft.com/ and appending the data stored in the URL value in the [gencomp706####,{168D82F8-AC6B-4B55-804F-2AE51AC4BFDF}] section of baseline.dat, where #### is the 4-digit LCID for the language you are installing.  For example, the value will be 1036 for the French language pack.  The exact URL will vary based on what language you are installing.
      3. Navigate to the URL that you created in step 2 and choose to save the file dotnetfx35langpack_x64**.exe to the folder c:\visual_webdev\wcu\dotnetframework\dotnetfx35\x64, where ** is the 2 letter culture code for the language you are installing.  For example, the file name will be dotnetfx35langpack_x64fr.exe for the French language pack.

      Advanced note about setting default checked state for optional components

      You can configure the default checked state for the SQL Server Compact 3.5, SQL Server Compact 3.5 Design Tools, MSDN Express, SQL Express and Silverlight 1.0 optional components using the DefaultSelected and WebDefaultSelected values in baseline.dat.  Setting them to 0 will cause the setup UI to appear with the checkbox unchecked for the item in question, and setting them to 1 will cause the setup UI to appear with the checkbox checked for the item in question.  The default selection state only applies to optional components for the Express Editions, so setting these values for components other than SQL Server Compact 3.5, SQL Server Compact 3.5 Design Tools, MSDN Express, SQL Express or Silverlight 1.0 will not have any effect.

    1. Aaron Stebner's WebLog

      Possible resolution for invalid license data errors after installing Visual Studio 2008

      • 18 Comments

      I have heard from a few customers who have installed Visual Studio 2008 and then seen a dialog appear stating "Invalid license data. Reinstall is required." when attempting to launch the IDE.  The dialog looks like the following:

      Pressing OK on this dialog dismisses the IDE and VS 2008 is not usable.

      There are a couple of cases where registry data can be orphaned on the machine that causes this type of error.  Unfortunately, running a repair of VS 2008 will not correctly fix the registry values that control this functionality in most cases.

      The following steps can be used to resolve most instances of this Invalid license data error message:

      1. Uninstall the Visual Studio 2008 product that you have installed.  You only have to uninstall the main Visual Studio product entry in Add or Remove Programs, and you can leave the other pieces installed by Visual Studio setup (such as the .NET Framework 3.5, MSDN, SQL Express, etc) alone.  The product name in Add or Remove Programs that you want to uninstall is dependent on the VS 2008 edition you have installed.  For example, for the English Professional edition, the product name will be "Microsoft Visual Studio 2008 Professional - ENU"
      2. Click on Start, choose Run and type cmd
      3. Copy and paste each of the following commands into the cmd prompt to clean up orphaned Visual Studio licensing data in your registry:
      4. reg delete HKCR\Licenses\21B7CDC0-21A6-4fa8-8CE5-F6A6B2B60839 /f
        reg delete HKCR\Licenses\2AC5863D-48B9-490c-ACD3-B7723A1FEB9E /f
        reg delete HKCR\Licenses\45D0AA33-5564-4a89-BE94-C1972EF4658C /f
        reg delete HKCR\Licenses\46D504D7-557F-4C19-A4DD-6605411EF496 /f
        reg delete HKCR\Licenses\743A8267-4958-460e-B757-7110EED3D53C /f
        reg delete HKCR\Licenses\82198EB8-0FAB-4b2b-98AD-F745A8566EFE /f
        reg delete HKCR\Licenses\AEA64E56-7C97-4a1c-8974-4E0BB4E48FCD /f
        reg delete HKCR\Licenses\B2825A63-A482-4032-80E6-42C9D2C1A78B /f
        reg delete HKCR\Licenses\BA32367F-28F8-4AEA-848D-95AE438B3B9C /f
        reg delete HKCR\Licenses\F2E1F428-5B9A-4a69-B1F4-28C3C644168A /f

      5. If you are installing on a 64-bit OS, copy and paste each of the following commands into the cmd prompt to clean up orphaned Visual Studio licensing data in your registry:
      6. reg delete HKCR\Wow6432Node\Licenses\21B7CDC0-21A6-4fa8-8CE5-F6A6B2B60839 /f
        reg delete HKCR\Wow6432Node\Licenses\2AC5863D-48B9-490c-ACD3-B7723A1FEB9E /f
        reg delete HKCR\Wow6432Node\Licenses\45D0AA33-5564-4a89-BE94-C1972EF4658C /f
        reg delete HKCR\Wow6432Node\Licenses\46D504D7-557F-4C19-A4DD-6605411EF496 /f
        reg delete HKCR\Wow6432Node\Licenses\743A8267-4958-460e-B757-7110EED3D53C /f
        reg delete HKCR\Wow6432Node\Licenses\82198EB8-0FAB-4b2b-98AD-F745A8566EFE /f
        reg delete HKCR\Wow6432Node\Licenses\AEA64E56-7C97-4a1c-8974-4E0BB4E48FCD /f
        reg delete HKCR\Wow6432Node\Licenses\B2825A63-A482-4032-80E6-42C9D2C1A78B /f
        reg delete HKCR\Wow6432Node\Licenses\BA32367F-28F8-4AEA-848D-95AE438B3B9C /f
        reg delete HKCR\Wow6432Node\Licenses\F2E1F428-5B9A-4a69-B1F4-28C3C644168A /f

      7. Re-install the Visual Studio 2008 product that you uninstalled in step 1 above

      After doing this, the license data should be recreated and correct and allow you to launch the VS 2008 IDE.

    2. Aaron Stebner's WebLog

      Knowledge base article describing how to extract .msu files and automate installing them

      • 3 Comments

      The .NET Framework 3.5 installs service packs for the .NET Framework 2.0 and 3.0 behind the scenes as prerequisites.  On Windows Vista and Windows Server 2008, the .NET Framework 2.0 and 3.0 are installed as OS components, which means that the 2.0 and 3.0 service packs are delivered as .msu files that contain OS update metadata files and payload.

      I was asked by a colleague today about how to view and extract the contents of the .NET Framework 2.0 SP1 and 3.0 SP1 .msu files and then automate the installation if needed.  An .msu file is essentially a .zip file, so in the past I have used standard .zip viewing tools (such as WinZip) to view the contents.

      Fortunately, my colleague found a useful knowledge base article describing how to automate this type of scenario and I wanted to post a link to it here to hopefully make it easier to find.  You can check out the article at this location:

      http://support.microsoft.com/kb/934307

      To summarize the information in that article, you can use the following syntax to extract the contents of an .msu file.  I am using the .NET Framework 2.0 SP1 .msu file that is included as a prerequisite for the .NET Framework 3.5 in the below examples:

      expand -f:* "NetFX2.0-KB110806-v6000-x86.msu" %temp%\netfx20sp1

      After extracting the contents of the .msu file, you can install it by using Package Manager (pkgmgr.exe) with a command line like the following:

      pkgmgr.exe /n:%temp%\netfx20sp1\Windows6.0-KB110806-v6000-x86.xml

      Alternatively, you can use Windows Update Standalone Installer (wusa.exe) to directly install a .msu file without extracting it by using a command line like the following:

      wusa.exe "NetFX2.0-KB110806-v6000-x86.msu" /quiet /norestart

    3. Aaron Stebner's WebLog

      Updated: what to do if other .NET Framework setup troubleshooting steps do not help

      • 169 Comments

      A while back, I posted a set of instructions that can be used to try to resolve .NET Framework installation issues in case other troubleshooting steps listed on my blog, in knowledge base articles or elsewhere do not work.  Those steps are out of date now because several new versions of the .NET Framework have been released since then, a new verification tool has been released and there are some other helpful steps that are not listed there.  Instead of trying to update those steps in that old post, I decided to write a replacement post that contains the new information.

      I have created a .NET Framework troubleshooting guide that contains links to information about various types of .NET Framework installation issues that we've seen over the years.  However, the links in that article do not cover all possible errors, and there are likely some scenarios that cannot be resolved by any of the workarounds listed in that article.

      If you run into an issue installing or using the .NET Framework or a .NET Framework hotfix or service pack, and the links in the .NET Framework troubleshooting guide do not help, I usually suggest trying the following steps in order to get your system back into a known state and then re-installing the .NET Framework and any hotfixes or service packs that apply to it:

      1. Go to the Add/Remove Programs control panel and attempt to repair the version of the .NET Framework that is causing problems on the system

        Note: There are a few versions of the .NET Framework that are installed as OS components, and therefore will not appear in Add/Remove Programs.  The .NET Framework 1.0 is an OS component on Windows XP Media Center and Tablet PC Editions.  The .NET Framework 1.1 is an OS component on Windows Server 2003.  The .NET Framework 2.0 and 3.0 are OS components on Windows Vista and Windows Server 2008.  The .NET Framework 2.0, 3.0 and 3.5 are OS components on Windows 7.  The .NET Framework 2.0, 3.0, 3.5 and 4.5 are OS components on Windows 8.

      2. If a repair does not help, then try to download and run the .NET Framework Repair Tool to see if it can find and fix any issues with the .NET Framework on your computer.
      3. If the repair tool does not help, then go to the Add/Remove Programs control panel and attempt to uninstall the version of the .NET Framework that is causing problems on the system
      4. If uninstall still fails from Add/Remove Programs, download the .NET Framework cleanup tool and choose to remove the version of the .NET Framework that is causing problems on your system
      5. Download and install the version of the .NET Framework that you cleaned up in step 2 or 3.  Here are some download links for various versions of the .NET Framework:

        .NET Framework 1.0
        .NET Framework 1.1
        .NET Framework 2.0
        .NET Framework 3.0
        .NET Framework 3.5
        .NET Framework 4
        .NET Framework 4.5
        .NET Framework 4.5.1
        .NET Framework 4.5.2

        Note - if you are having trouble installing the .NET Framework 2.0, 3.0 or 3.5, I recommend trying to installing the .NET Framework 3.5 SP1 because it will install the .NET Framework 2.0 SP2 and 3.0 SP2 behind the scenes, and these versions contain additional fixes not in the original 2.0, 3.0 or 3.5 releases.  Plus, 3.5 SP1 will automatically uninstall any older versions of 2.0, 3.0 or 3.5 that are on your system, so you can save some time by not trying to install a version of the .NET Framework that 3.5 SP1 is going to uninstall during its install process.

      6. (optional) Download and run the .NET Framework verification tool to double-check that the version of the .NET Framework that you installed in step 2 installed correctly
      7. Download and install any service packs or hotfixes for the version of the .NET Framework you just installed by running the setup package directly instead of using Windows Update.  Running it directly will allow the service pack or hotfix to display error dialogs (whereas, Windows Update will automatically suppress any error dialogs).  Here are some download links for various .NET Framework service packs:

        .NET Framework 1.0 SP3
        .NET Framework 1.1 SP1
        .NET Framework 3.5 SP1 family update; there are several versions depending on what OS you are running - Windows XP and Server 2003 x86, Windows XP and Server 2003 x64, Windows Vista and Server 2008 x86, Windows Vista and Server 2008 x64

        Note - the .NET Framework 2.0 SP1 and SP2 and 3.0 SP1 and SP2 are slipstream replacements for the original versions of 2.0 and 3.0, and the .NET Framework 3.5 SP1 is a slipstream replacement for the original version of 3.5.  You do not need to install 2.0 then SP1 and SP2, 3.0 then SP1 and SP2, or 3.5 then SP1 as separate steps like you do for 1.0 and 1.1.  Instead you can skip directly to installing 2.0 SP2, 3.0 SP2 and 3.5 SP1.

      .NET Framework setup log file locations

      If none of the above help, then it can be useful to look at the .NET Framework setup log files for more in-depth troubleshooting.  Here are links to information about the log files created by each version of the .NET Framework:

      The .NET Framework 1.0 and 1.1 are not listed above because they do not create log files automatically.  You need to use steps like the ones listed in this blog post in order to create log files for .NET Framework 1.0 and 1.1 setup.

      .NET Framework setup packaging notes that affect uninstalls

      The .NET Framework 1.0, 1.1 and 2.0 are all side-by-side versions that can be installed and uninstalled without affecting the others.  This means that if you are running into an issue in the .NET Framework 2.0, for example, you do not necessarily need to remove the .NET Framework 1.0 and 1.1 in addition to removing 2.0.

      The .NET Framework 3.0 is an add-on that requires the .NET Framework 2.0 to be present as a prerequisite.  If you have the .NET Framework 3.0 installed, you will not be allowed to uninstall the .NET Framework 2.0 until you first uninstall the .NET Framework 3.0.

      The .NET Framework 3.5 is an add-on that requires the .NET Framework 2.0 SP1 and the .NET Framework 3.0 SP1 to be present as prerequisites.  If you have the .NET Framework 3.5 installed, you will not be allowed to uninstall the .NET Framework 3.0 SP1 or 2.0 SP1 until you first uninstall the .NET Framework 3.5.  You will also not be allowed to uninstall the .NET Framework 2.0 SP1 until you first uninstall the .NET Framework 3.5 and the .NET Framework 3.0 SP1.

      The .NET Framework 3.5 SP1 is an add-on that requires the .NET Framework 2.0 SP2 and the .NET Framework 3.0 SP2 to be present as prerequisites.  If you have the .NET Framework 3.5 SP1 installed, you will not be allowed to uninstall the .NET Framework 3.0 SP2 or 2.0 SP2 until you first uninstall the .NET Framework 3.5 SP1.  You will also not be allowed to uninstall the .NET Framework 2.0 SP2 until you first uninstall the .NET Framework 3.5 SP1 and the .NET Framework 3.0 SP2.

      <update date="4/22/2008"> Added information and a link to the Microsoft .NET Framework 2.0 Registration Correction Tool, which should be used before resorting to trying the cleanup tool for .NET Framework 2.0 issues. </update>

      <update date="9/21/2008"> Added a link to download the .NET Framework 3.5 SP1 now that it has shipped. </update>

      <update date="9/23/2008"> Updated the link to the .NET Framework 2.0 Registration Correction Tool to point to the official knowledge base article now that it has been published. </update>

      <update date="1/25/2009"> Added a link to the standalone .NET Framework 2.0 SP2 installer. </update>

      <update date="2/25/2009"> Added links to the .NET Framework 3.5 SP1 family update installers. </update>

      <update date="3/23/2009"> Fixed broken link to the .NET Framework cleanup tool. </update>

      <update date="3/28/2009"> Fixed broken link to the .NET Framework setup verification tool. </update>

      <update date="12/2/2010"> Added download link for .NET Framework 4. </update>

      <update date="9/8/2012"> Added download link for .NET Framework 4.5 and fixed broken links to other versions of the .NET Framework. </update>

      <update date="1/24/2013"> Added a link to the .NET Framework Repair Tool. <update>

       

    4. Aaron Stebner's WebLog

      Draft version of a new .NET Framework setup verification tool available for download

      • 27 Comments

      A while ago, I published a .NET Framework setup verification tool that can be run to provide a sanity check of the install state of the .NET Framework 1.0, 1.1 and 2.0 on a system.  However, there are some limitations in that tool:

      • It does not support validating the .NET Framework 2.0 on Windows Vista
      • It does not support the .NET Framework 2.0 SP1, the .NET Framework 3.0, the .NET Framework 3.0 SP1 or the .NET Framework 3.5
      • It only checks file version information and does not check registry values created by setup
      • It depends on the setup technology used to install the product in the first place (Windows Installer or OS install technologies) and requires you to select an OS-specific version of the product in the UI in order to get accurate verification results
      • It reports misleading warnings if hotfixes for the .NET Framework are installed on the system

      As a result, I decided to create a new verification tool, and I have an initial version that I think is ready for more people to use.  I wanted to post some information about the tool so that folks can try it out to verify the installation state of the various versions of the .NET Framework on their systems.

      Where to download the new verification tool

      I have a draft version of a new verification tool that can be used to verify all versions of the .NET Framework (1.0, 1.1, 2.0, 2.0 SP1, 3.0, 3.0 SP1 and 3.5) on any supported OS and processor architecture.  You can find information about the tool and download it from this location:

      http://blogs.msdn.com/astebner/pages/8999004.aspx

      The UI for the tool is straightforward - it contains a drop-down list box that lets you choose the version of the .NET Framework that you would like to verify and a Verify Now button to initiate the verification process for the chosen product.  After verification completes, it will display results for the chosen product and allow you to select additional products to verify.

      I have been testing this new version on several systems that I have access to, but there are likely to still be issues where the tool falsely reports errors or misses some error cases.  Please let me know if you see any issues while using this tool by posting comments on this blog post or by contacting me directly.  If possible, please include information about your scenario and copies of the log files that I describe below so I can continue to make this tool better in the future.

      How to run the tool in silent mode

      This verification tool supports running in silent mode if you would like to automate the verification process.  To run in silent mode, you need to download the verification tool .zip file, extract the file netfx_setupverifier.exe from the .zip file, and then run it using syntax like the following:

      netfx_setupverifier.exe /q:a /c:"setupverifier.exe /p <name of product to verify>"

      The value that you pass with the /p switch to replace <name of product to verify> in this example must exactly match one of the products listed in the file setupverifier.ini that is included in the self-extracting package for the verification tool.

      Currently, the verification tool includes the following product names that can be passed in using the /p switch:

      • .NET Framework 1.0
      • .NET Framework 1.1
      • .NET Framework 2.0
      • .NET Framework 2.0 SP1
      • .NET Framework 2.0 SP2
      • .NET Framework 3.0
      • .NET Framework 3.0 SP1
      • .NET Framework 3.0 SP2
      • .NET Framework 3.5
      • .NET Framework 3.5 SP1

      For example, if you would like to run the tool in silent mode and verify the install state of the .NET Framework 2.0, you would use a command line like the following:

      netfx_setupverifier.exe /q:a /c:"setupverifier.exe /p .NET Framework 2.0"

      The verification tool returns the following exit codes:

      • 0 - cleanup completed successfully for the specified product
      • 1 - the required file setupverifier.ini was not found in the same path as setupverifier.exe
      • 2 - a product name was passed in that cannot be verified because it does not support installing on the OS that the tool is running on
      • 3 - a product name was passed in that does not exist in setupverifier.ini
      • 100 - verification failed for the specified product
      • 1602 - verification was canceled

      Logging

      This verification tool creates 2 log files by default that can be used to determine what actions the tool is taking and what errors it encounters while verifying a product.  The 2 log files are listed below, and they are created in the %temp% directory by default.  Note that you can find the %temp% directory by clicking on the Windows start menu, choosing Run, typing %temp% and clicking OK to open the directory in Windows Explorer.

      • %temp%\setupverifier_main_*.txt - this log contains information about all actions taken during a verification tool session; it will include information about each resource that the tool attempts to verify for a chosen product and whether or not that resource was found on the system; this log tends to be fairly long, so errors will be logged with the prefix ****ERROR**** to make it easy to search and find them
      • %temp%\setupverifier_errors_*.txt - this log only contains information about any errors found during verification of a chosen product

      A new pair of log files will be created each time the verification tool is launched.  The date and time the tool is launched will be appended to the end of the log file names by default in place of the * in the names listed above.  If you want to control the exact names used for the log files, you can use the following command line parameters:

      • /l <filename> - specifies a name to replace the default value of setupverifier_main_*.txt for the main activity log for the verification tool
      • /e <filename> - specifies a name to replace the default value of setupverifier_errors_*.txt for the error log for the verification tool

      For example, the following command line will allow you to specify non-default names for both log files:

      netfx_setupverifier.exe /q:a /c:"setupverifier.exe /l %temp%\my_main_log.txt /e %temp%\my_error_log.txt"

      <update date="9/2/2009"> Fixed broken link to the verification tool. </update>

       

    Page 1 of 1 (10 items)