Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS with no warranties, and confer no rights. Additionally, views expressed herein are my own and not those of my employer, Microsoft.
I have previously posted some instructions (here and here) that can be used to verify and attempt to repair the files that ship as a part of the OS on Windows Vista. Since I wrote those posts, I have heard from a few customers who have attempted to use those instructions to repair their .NET Framework 2.0 and 3.0 files and/or Media Center files on Windows Vista, but received error messages from Sfc.exe indicating that some of the repair operations were not successful.
Fortunately, I recently found a Microsoft knowledge base article that provides more details about how to use Sfc.exe on Windows Vista, including steps that can be used to locate error messages and manually fix files that it was unable to repair.
You can find this knowledge base article at http://support.microsoft.com/kb/929833. If you are running into problems with Windows Vista and suspect that some of the OS files may be corrupt or missing, I'd suggest trying out the steps in this knowledge base article to see if they help correct the issues that you are seeing.
I recently posted a set of instructions for creating an administrative install point for the .NET Framework 2.0 SP1. In that post, I mentioned some behind-the-scenes architectural changes that affect how the installer works. Those architectural changes were also made for the .NET Framework 3.0 SP1, and as a result, there is a new set of instructions that must be followed in order to create an administrative install point for the .NET Framework 3.0 SP1 as well.
The following are some steps that can be used to create an administrative install point for the .NET Framework 3.0 SP1 for each of the supported processor architectures.
Please keep in mind that there are several prerequisites that must be installed prior to attempting to deploy the .NET Framework 3.0 SP1 from an administrative install point. These include the .NET Framework 2.0 SP1, MSXML 6.0, the RGB Rasterizer, the Windows Imaging Component (WIC) and the XML Paper Specification (XPS) shared components. The .NET Framework 2.0 SP1 can be deployed using the steps in my previous blog post, and the other prerequisites can be deployed using the previously documented steps in the .NET Framework 3.0 deployment guide. There is a new .NET Framework 3.5 deployment guide that is currently in the process of being published that will include this type of information, and I will provide an additional link to that document once it is available on MSDN.
To create an administrative install point for the .NET Framework 3.0 SP1 x86:
With these steps, you will have an administrative install point for the .NET Framework 3.0 SP1 x86 located at c:\netfx30sp1\x86AIP. You can then install the MSI directly using a command line like the following:
msiexec.exe /i c:\netfx30sp1\x86\AIP\netfx30a_x86.msi /l*v %temp%\netfx30sp1x86log.txt /qb VSEXTUI=1
You can adjust the parameters as needed if you want a fully silent install instead of basic UI, or want to use any other standard Windows Installer command line parameters.
To create an administrative install point for the .NET Framework 3.0 SP1 x64:
With these steps, you will have an administrative install point for the .NET Framework 3.0 SP1 x64 located at c:\netfx30sp1\x64\AIP. You can then install the MSI directly using a command line like the following:
msiexec.exe /i c:\netfx30sp1\x64\AIP\netfx30a_x64.msi /l*v %temp%\netfx30sp1x64log.txt /qb VSEXTUI=1
<update date="1/23/2008"> Added example command lines to install the MSI directly after creating the administrative install point. </update>
<update date="1/23/2008"> Corrected the download link in the x64 instructions. </update>
I just noticed this post on Aaron Ruckman's blog and wanted to link to it here to help raise visibility.
Description of this issue
There is an issue in the XPS component that is a prerequisite for the .NET Framework 3.0, 3.0 SP1 and 3.5 that can cause each of these versions of the .NET Framework to fail to install on Windows XP and Windows Server 2003. The XPS component can fail to install correctly if the Print Spooler service is not running on the system, and that in turn will cause the .NET Framework 3.0 or 3.5 setup to fail. In most cases of this error that we've seen so far, an Visual C++ runtime error dialog appears during .NET Framework 3.0, 3.0 SP1 or 3.5 setup with the following text on it:
The application has requested the Runtime to terminate it in an unusual way.
This error usually occurs while the PrintFilterPipelineSvc.exe process is being run during the installation of the XPS component that is a prerequisite for the .NET Framework 3.0, 3.0 SP1 and 3.5 on Windows XP and Windows Server 2003 operating systems. We have not yet heard of a case of this particular error affecting Windows Vista or later operating systems because the necessary XPS components are already present as a part of the OS, and therefore .NET Framework setup does not need to run PrintFilterPipelineSvc.exe.
How to work around this issue
If you are running into this issue on Windows XP and Windows Server 2003, you can resolve it by doing the following:
Note - if the Print Spooler service is already started and you are still seeing failures during .NET Framework 3.0 or 3.5 setup, then you are not running into this exact issue and your .NET Framework setup failure is being caused by some other problem. In that case, I 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="3/26/2008"> Added more details about the error message to hopefully make it easier to find this post when performing Web searches. </update>
The final releases of the Visual Studio 2008 Express Editions include an optional step to install Silverlight v1.0. We have seen a few cases where the Silverlight v1.0 component fails to install during a VS 2008 Express Edition installation because a previous version of Silverlight v1.0 was already installed on the system.
This scenario can occur if a pre-release version of Silverlight v1.0 is installed on the system and one of the following conditions is true:
How to diagnose this issue
In this scenario, the VS 2008 Express Edition setup log file (named %temp%\dd_install_*_xcor_90.txt) will contain an error message that looks like the following:
[12/12/07,12:12:12] ExpressUI: ***ERRORLOG EVENT*** : DepCheck indicates Microsoft Silverlight Runtime is not installed.
In addition, the Silverlight verbose MSI log file (named %temp%\SilverlightMSI*.txt) will contain error messages near the end of the file that look like the following:
MSI (s) (04:F4) [12:12:12:080]: Product: Microsoft Silverlight -- Configuration failed. MSI (s) (04:F4) [12:12:12:081]: Windows Installer reconfigured the product. Product Name: Microsoft Silverlight. Product Version: 1.0.20816.0. Product Language: 1033. Reconfiguration success or error status: 1638. MSI (s) (04:F4) [12:12:12:082]: MainEngineThread is returning 1638MSI (s) (04:C8) [12:12:12:082]: No System Restore sequence number for this installation.Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}
MSI (s) (04:F4) [12:12:12:080]: Product: Microsoft Silverlight -- Configuration failed.
MSI (s) (04:F4) [12:12:12:081]: Windows Installer reconfigured the product. Product Name: Microsoft Silverlight. Product Version: 1.0.20816.0. Product Language: 1033. Reconfiguration success or error status: 1638.
MSI (s) (04:F4) [12:12:12:082]: MainEngineThread is returning 1638MSI (s) (04:C8) [12:12:12:082]: No System Restore sequence number for this installation.Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}
Windows Installer error code 1638 means that an MSI with the same product code but a different package code is already installed.
If you run into this type of error while attempting to install a VS 2008 Express Edition, you can work around it by doing one of the following:
This issue and workaround is also documented in the Visual Studio 2008 Express Editions readme.
A while back, I posted some instructions that can be used to create an administrative install point for the .NET Framework 2.0. The .NET Framework 2.0 SP1 was recently released (it is required in order to install the .NET Framework 3.5). There are some behind the scenes architecture changes in the .NET Framework 2.0 SP1 setup (which I'm planning to describe in more detail in a future blog post). Those changes cause the previous instructions I posted for creating an administrative install point to no longer work.
Here are some updated steps that can be used to create an administrative install point for the .NET Framework 2.0 SP1 for each of the supported processor architectures.
To create an administrative install point for the .NET Framework 2.0 SP1 x86:
With these steps, you will have an administrative install point for the .NET Framework 2.0 SP1 x86 located at c:\netfx20sp1\x86\AIP. You can then install the MSI directly using a command line like the following:
msiexec.exe /i c:\netfx20sp1\x86\AIP\netfx20a_x86.msi /l*v %temp%\netfx20sp1x86log.txt /qb VSEXTUI=1
To create an administrative install point for the .NET Framework 2.0 SP1 x64:
With these steps, you will have an administrative install point for the .NET Framework 2.0 SP1 x64 located at c:\netfx20sp1\x64\AIP. You can then install the MSI directly using a command line like the following:
msiexec.exe /i c:\netfx20sp1\x64\AIP\netfx20a_x64.msi /l*v %temp%\netfx20sp1x64log.txt /qb VSEXTUI=1
To create an administrative install point for the .NET Framework 2.0 SP1 ia64:
With these steps, you will have an administrative install point for the .NET Framework 2.0 SP1 ia64 located at c:\netfx20sp1\ia64\AIP. You can then install the MSI directly using a command line like the following:
msiexec.exe /i c:\netfx20sp1\ia64\AIP\netfx20a_ia64.msi /l*v %temp%\netfx20sp1ia64log.txt /qb VSEXTUI=1
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 http://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:
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.
Since the final version of XNA Game Studio 2.0 was announced earlier today, we have heard from a few customers (notably, in the forum post at http://forums.xna.com/thread/36650.aspx) who have run setup and received a pop-up error message like the following while setup is trying to install the Games for Windows - LIVE Redist:
Source Required Setup has detected that the original source is necessary to continue. Please redownload and execute XNAGS20_Setup.exe.
Source Required
Setup has detected that the original source is necessary to continue. Please redownload and execute XNAGS20_Setup.exe.
In the cases we've seen so far, this issue can be resolved by doing the following:
What is happening behind the scenes
XNA Game Studio 2.0 setup is failing in this scenario in the cases we've heard of so far because a version of the Microsoft Games for Windows - LIVE Redistributable was already installed on the system, but it was installed from a different source location than XNA Game Studio 2.0 setup is trying to use. In this type of scenario, XNA Game Studio 2.0 recognizes that the Games for Windows - LIVE Redist is already installed and triggers a repair instead of an initial install. If any of the files installed by this package are missing or corrupt, Windows Installer will try to find the source location in order to replace those files. If the source location no longer exists, then XNA Game Studio 2.0 will display this type of error message.
The primary cause we've seen so far is a system that previously had the beta version of XNA Game Studio 2.0 installed and then uninstalled. Behind the scenes, the same Games for Windows - LIVE Redist is installed by the XNA Game Studio 2.0 beta and the final release, but the source location was moved after the beta shipped. Therefore, if any files installed by the Games for Windows - LIVE Redist are missing or corrupt, then the repair process for this package will trigger a request for the original source because it doesn't exist in the location that the final release of XNA Game Studio 2.0 installs it to.
However, this scenario will only occur if one of the files in the Games for Windows LIVE - Redist package is missing/corrupt and needs to be replaced. That means that only a small subset of people who previously installed the XNA Game Studio 2.0 beta will ever see this error. Most beta-to-final release install scenarios for XNA Game Studio 2.0 will work fine and not require any manual workarounds.
This scenario could also occur if some other product, such as a game that requires the Games for Windows - LIVE Redist, was installed on the system prior to installing XNA Game Studio 2.0. The specific conditions that must exist to trigger this error message are the following:
Regardless of which setup originally installed the Games for Windows LIVE - Redist, if you encounter this error while installing the final release of XNA Game Studio 2.0, you should be able to resolve it by uninstalling this package from Add/Remove Programs and then re-running XNA Game Studio 2.0 setup as described above.
I have seen several reports of issues related to uninstalling a beta or release candidate build of Visual Studio 2008 and installing the final release. As noted in many places, including this blog post, the most important step to take when updating a system to the final release of VS 2008 is to make sure that the pre-release VS 2008 packages are correctly removed. There are a couple of different scenarios that have different sets of uninstall requirements that are worth clarifying here.
Updating from beta 2 to the final release
If you have the VS 2008 beta 2 build or an earlier beta installed, the uninstall process for VS 2008 includes logic to automatically chain the uninstall of any pre-release packages that it chained in during installation. This means that if you had beta 2 installed, you can perform a very simple set of steps to remove beta 2 and install the final release:
If you follow these steps, you will probably notice that there will be several other packages that are left behind on the system after uninstalling beta 2. However, each of those packages are designed to be automatically upgraded to the final release versions. I've used theses steps on several systems (Windows XP, Windows Server 2003 and Windows Vista) and have had good results so far. There may be some isolated cases where the pre-release bits end up interfering with the final release install, and in those cases it may be necessary to manually remove the remaining packages. There is a link at the bottom of this post that lists all of the packages that are installed during VS 2008 setup if you need to uninstall them manually.
Updating from a post-beta 2 build to the final release
After VS 2008 beta 2, the chained uninstall feature was disabled within VS 2008 setup because a decision was made a while back to not automatically uninstall any chained components that are non-beta in case other applications on the system depend on them.
This means that if you have a post-beta 2 but pre-final release build (such as the release candidate), then you will need to make sure to uninstall all components by using the manual uninstall steps or the automated removal tool. The order of uninstall is important in these uninstall steps, so make sure to follow them as listed in this MSDN topic if you choose to uninstall manually instead of using the automated removal tool.
One additional note here - the manual uninstall steps and the automated removal tool will also perform a full uninstall of the final release of Visual Studio 2008 if you need to remove that from your system as opposed to just removing a pre-release version of VS 2008.
A note about removing the .NET Framework 3.5 beta
The .NET Framework 3.5 setup package has a couple of features that allow you to directly upgrade a system from a previous beta to the final release. For Windows XP and Windows Server 2003, the .NET Framework 3.5 is installed via a set of MSI packages. Each of those MSI packages contains Windows Installer major upgrade logic to accomplish the beta-to-RTM upgrade scenarios.
On Windows Vista, the .NET Framework 3.5 installs the .NET Framework 2.0 SP1 (Update for Microsoft Windows (KB110806)) and the .NET Framework 3.0 SP1 (Update for Microsoft Windows (KB929300)) as OS hotfix packages instead of as MSI-based packages. The final releases of these packages are designed to migrate forward any public beta versions of these packages so that you do not need to manually uninstall them, and I've successfully upgraded from beta 2 to RTM on several Vista systems without needing to uninstall these packages. However, there have been a few cases we've run into where that logic does not work.
You can use the following steps to manually remove beta versions of the .NET Framework 2.0 SP1 and 3.0 SP1 on Windows Vista if necessary:
Useful VS 2008 beta uninstall links
Here are a few links that may be useful to you as you work through the process of uninstalling beta versions of VS 2008 and moving forward to the final release:
As described in this post on the XNA team blog, the final version of XNA Game Studio 2.0 is now available for download. Here are some links that are hopefully useful to help you get started using XNA Game Studio 2.0.
Download links
Here are download links for XNA Game Studio 2.0:
Installation instructions
Here are some links to help you get started installing XNA Game Studio 2.0:
Getting started using XNA Game Studio 2.0
Here are some links to help you get started using XNA Game Studio 2.0:
New samples and starter kits
The XNA Game Studio 2.0 getting started page also includes several new samples and starter kits to help you quickly learn about some of the key new features in XNA Game Studio 2.0. Here are the currently available samples:
Make sure to check back in the upcoming days and weeks for additional new content.
There are a couple of links that I want to post here in the hopes of making them easier to find for anyone reading my blog and searching for information about Visual Studio 2008 installation issues. Both links contain descriptions of known installation issues and possible options that can be used to work around them.
VS 2008 Readme Files
Several known installation issues and workarounds are described in more detail in the Visual Studio 2008 readme. This readme is located at http://download.microsoft.com/download/9/a/e/9ae0f6cc-7032-408e-9ca7-989f9e4af4ec/VS2008Readme.htm.
The following additional readme files may be useful depending on what version of VS 2008 you are attempting to install:
VS 2008 Troubleshooting Guide blog post
In order to supplement the content in the readme, a colleague recently created a blog post that is being used to summarize some additional known issues that can be encountered while installing Visual Studio 2008 and steps that can be used to work around them. If you are encountering VS 2008 installation issues and did not find any useful information in the readme, I encourage you to also check out the Visual Studio 2008 Troubleshooting Guide blog post at http://blogs.msdn.com/varungupta/archive/2007/12/04/visual-studio-2008-setup-troubleshooting-guide.aspx.
<update date="1/3/2008"> Added links to VS 2008 Express Edition and MSDN readme files </update>
Every once in a while, I hear from a customer who has encountered an error while trying to install Document Explorer 2005 or Document Explorer 2008 (which is a prerequisite component that is installed during Visual Studio 2005 or Visual Studio 2008 setup).
In those cases, I typically ask the customer to send me the verbose installation log file from Document Explorer setup, which is located at %temp%\dd_dexplore*msi*.txt in order to narrow down the cause of this error. Then, I use the technique described in this blog post and search for the string "return value 3" to try to locate the action in the log file that indicates the root cause of the failure.
In many cases, Document Explorer setup failures end up with entries in the verbose MSI log file that look like the following:
12/01/07 11:11:11 DDSet_Status: BeginTransaction()->IHxRegisterSession::CreateTransaction() returned 8004036e.12/01/07 11:11:11 DDSet_Error: BeginTransaction()->Attempt failed because another transaction was running.
More details about the cause of this issue
In most cases, this type of error means that a previous product installation was attempting to register a help collection, and something happened that caused that help collection registration to not complete correctly.
A customer recently posted a comment on one of my blog posts that describes this scenario in more detail. To summarize that comment, if another help transaction is running, a file named C:\Documents and Settings\All Users\Application Data\Microsoft Help\Rgstrtn.lck (or C:\ProgramData\Microsoft Help\Rgstrtn.lck on Windows Vista) will likely exist. If that file exists, it prevents other help collections from being registered on the system, and if a setup attempts to register a help collection during this time, it will fail with the type of error message listed above.
To work around this issue, you can reboot the computer (which will cause that file to be deleted in most cases), or you can manually delete the Rgstrtn.lck file to reset the state of the help collection installation system on your system. After getting rid of that file, you can attempt to install Document Explorer again.
Note - this type of help collection installation error can occur in any product that includes help collections as part of their installation logic. This error is not limited to Document Explorer setup.
The .NET Framework 3.5 is packaged as a core package that includes language-neutral binaries and English resources, plus a series of language packs. The .NET Framework 3.5 setup has logic to detect the UI language of the OS it is being installed on, and to automatically chain in the installation of the appropriate language pack if one exists for that OS language. However, there is a potential issue related to language packs that can affect .NET Framework 3.5 installation on non-English systems. I've seen this issue reported by several customers and I want to try to explain what is happening behind the scenes and offer some options for working around this if you run into it on your system as well.
Description of the issue
As of the time that I'm writing this blog post, the .NET Framework 3.5 language packs have not yet been released for download. As a result, if you run .NET Framework 3.5 setup on a non-English OS, it will attempt to download the language pack setup in the language that matches the OS language, but since they are not yet released, it will instead download a place-holder file and that place-holder file will fail to install because it is not a valid language pack setup package. At the end of installation, the .NET Framework 3.5 setup UI will state that setup succeeded because setup treats language pack failures as warnings and not errors. However, you may also see a warning or error as a result of this failed language pack installation even though the overall .NET Framework 3.5 installation process returns success.
In addition, if you attempt to use instructions like the ones listed in this blog post to create a network or CD install point for the .NET Framework 3.5, and then you run setup from that install point on a non-English OS that does not have Internet connectivity, setup will detect that it needs to download a .NET Framework 3.5 language pack (because it will not be able to find it in a relative path next to the main setup executable). However, setup will fail to download the package due to the lack of Internet connectivity. After setup completes, it will report that the .NET Framework 3.5 installation is successful, but will also display an error dialog that is caused by the language pack download failure.
How to diagnose the issue
In the case where .NET Framework 3.5 setup does not have Internet connectivity but detects that it needs to download a language pack, the log file named %temp%\dd_dotnetfx35install.txt will show error messages that look like the following:
[12/01/07,11:11:11] Microsoft .NET Framework 3.5LP - ESN: Cannot access file: C:\Documents and Settings\user\Desktop\netfx35\wcu\dotNetFramework\dotnetfx35\x86\dotnetfx35langpack_x86es.exe......[12/01/07,11:11:11] Microsoft .NET Framework 3.5LP - ESN: dlmgr: CDownloadJobBITSImpl::GetState(): TransientError[12/01/07,11:11:11] Microsoft .NET Framework 3.5LP - ESN: dlmgr: Transient ErrorContext: 5 Error code: -2145386480 Description: There are currently no active network connections. Background Intelligent Transfer Service (BITS) will try again when an adapter is connected.
The above is an example log file obtained by attempting to run .NET Framework 3.5 on a Spanish OS after copying the setup package to the desktop and disconnecting the network cable.
How to workaround this issue
Option 1 - control language pack chaining behavior with a command line switch
If you would like to prevent .NET Framework 3.5 setup from attempting to chain in any language packs during installation on a non-English OS, you can run setup with the following command line switch:
dotnetfx35setup.exe /lang:ENU
This is the syntax that Visual Studio 2008 setup uses when it chains the .NET Framework 3.5 so that it can ensure that .NET Framework 3.5 setup will not need network connectivity in order to install successfully.
One note - the /lang switch will not have any effect if you already have the .NET Framework 3.5 installed on your system. It must be used during initial installation in order to cause it to skip downloading and installing any language packs.
Option 2 - download language packs and add them to your .NET Framework 3.5 layout
Alternatively, once the .NET Framework 3.5 language packs are released, you will be able to download their setup packages and place them in the dotNetFx35\x86, dotNetFx35\x64 and/or dotNetFx35\ia64 folder after following the instructions in this blog post to create an installable layout. Doing this will prevent the .NET Framework 3.5 setup from attempting to download the language packs from the Internet if it detects that it needs to install one of them because the OS being installed on is set to use non-English UI.
Aaron Ruckman has posted a request for feedback on his blog at http://blogs.msdn.com/aaronru/archive/2007/11/30/looking-to-improve-the-visual-studio-user-experience.aspx. He is looking for feedback regarding installation and deployment scenarios for Visual Studio in order to help make deployment scenarios for future versions of Visual Studio as useful as possible.
If you have feedback regarding the Visual Studio installation and/or deployment experience, I encourage you to take a look at the information in this blog post and provide your feedback in the form of an email to Aaron (his email address is in the text of the blog post) and/or comments on the blog post itself. When possible, please include suggestions for improvements if you can think of any for the scenarios you are interested in. Bug reports are useful too, but I also encourage you to report specific bugs on the Visual Studio bug reporting site and not only report them via email or comments on Aaron's blog post.
I've posted an updated version of the .NET Framework cleanup tool that contains the following changes:
In addition, thanks to a suggestion from a customer, I have added the readme and a change history text file to the zip file that contains the cleanup tool to make it easier to understand what the tool does, what changes were made, and whether or not you have the most recent version of the tool.
Please refer to the .NET Framework cleanup tool user's guide to find more information about the .NET Framework cleanup tool and download it if you need it on your system.
<update date="6/7/2010"> Fixed broken link to the cleanup tool. </update>
Back when the .NET Framework 3.5 beta 2 was released, I posted this item on my blog describing how to download the individual pieces of the .NET Framework 3.5 beta 2 in order to create an installable layout that can be used to create an installer that includes the .NET Framework 3.5 or for network deployment. If you have looked at those instructions, you'll notice how long, tedious and potentially error-prone they are.
Fortunately, as Bret Grinslade noted in this blog post, in the final release of the .NET Framework 3.5, a new package is available for download that includes all of the pieces of the .NET Framework 3.5 so that you no longer need to download the pieces individually in order to assemble an installable layout.
The combined installation package for the .NET Framework is available for download at http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe.
After downloading this package, you can extract the contents by running dotnetfx35.exe /x and it will prompt you with a location to extract the contents to. From there, you can trim down the installer payload if appropriate in your deployment scenario in the following ways:
Now you can run dotnetfx35setup.exe from the extracted folder to start installing the .NET Framework 3.5.
One important note - 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.5 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.5 setup will fail to install.