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.
A while back, I posted a set of steps that you can use to create an MSI with WiX and combine it with a Visual Studio setup.exe bootstrapper to create an installer that can chain prerequisites and then install the MSI. Since then, I've gotten a couple of questions about odd behaviors that customers have observed in the Visual Studio bootstrapper, and I've learned about a couple of issues about that bootstrapper technology and how to work around them that I wanted to describe here.
Issue 1 - problem creating a self-extracting package with the Visual Studio 2008 bootstrapper
If you use Visual Studio 2008 to create a VS bootstrapper package, you will notice that the setup.exe process exits as soon as it launches the install process for your MSI. That typically causes problems if the setup.exe is embedded in a self-extracting package. Because setup.exe exits before the overall installation process is complete, the self-extracting package will try to clean up and exit, and that can end up deleting files that are needed by the MSI that is still in the process of installing.
This behavior is new in bootstrapper packages created with Visual Studio 2008, and the change is designed to allow the bootstrapper to work better with UAC on Windows Vista. There are a couple of options available to you to work around this issue if needed:
Issue 2 - problem displaying download progress for the MSI via the Visual Studio 2008 bootstrapper
If you use Visual Studio 2008 to create a VS bootstrapper package, and you configure the bootstrapper to download your MSI from the Internet (by using the HomeSite value for the ComponentsLocation attribute in the GenerateBootstrapper task), you may not see any progress UI while the MSI is being downloaded. This is a bug in the VS 2008 bootstrapper that is fixed in VS 2008 SP1. To fix this, you can install VS 2008 SP1 and rebuild your setup.exe bootstrapper.
When you rebuild setup.exe, make sure that you use the version of msbuild.exe that is in the .NET Framework 3.5 directory (%windir%\Microsoft.NET\Framework\v3.5\msbuild.exe) and not the copy of msbuild.exe in the .NET Framework 2.0 directory (%windir%\Microsoft.NET\Framework\v2.0.50727\msbuild.exe) or else you will not see the download progress for your MSI, even if you have VS 2008 SP1 installed.