This past week I’ve been working on my WiX XNA installer template again because I really wanted to integrate installer generation into my continuous integration builds. That way, I can hand test versions to friends without explaining in detail how to get it to run and it’s one less worry I have when I release the game.
After some FAQ reading and some questions on the XNA Forums, I had the certainty that XNA 3.0 can be deployed with .NET 2.0 only (if you change your project configurations to target .NET 2.0). This is good news because the .NET 3.5 installer is huge and, on a fresh system, I’ve had about a 1 in 10 success quote of the installer finishing without an error, so my trust in the .NET 3.5 installer is completely shattered.
Aaron Stebner also revealed to me how I can unpack (or, to be precise, how to create a administrative install of) the XNA 3.0 redistributable (see here). This allowed me to recompress the files, reducing the redistributable’s size from 7.61 MiB to 5.5 MiB, including the DirectX runtime files, XNA Framework 3.0 and the Windows Installer custom action DLL to integrate the installation into my .msi file.
I am thinking about leaving out the .NET Framework redistributable completely for several reasons:
- First, with 22.4 MB, it’s huge. And that’s only the 32 bit installer, if you want to support Windows XP x64 (the only 64 bit OS without .NET 2.0 preinstalled), make that 45.2 MB.
- Second, while I’m definitely targeting .NET 2.0 as long as I can, others interested in using the installer template for their games may want to use .NET 3.5. This would not only add another level of complexity to the installer, but also, at 231.5 MB, the .NET 3.5 SP1 redistributable is prohibitively large (since it includes the x86, x64 and IA64 runtimes).
- Third, if you wish to include the .NET Framework 2.0 or .NET Framework 3.5 for your players, you can still use a traditional bootstrapper (that’s how most other installers including InstallShield and InstallAware do it).
- Finally, users may already have obtained .NET in one way or another. Vista and Windows 7 have it preinstalled and many applications install it.
When the installer detects that .NET is not installed, it will display a friendly page to the user, explaining (very short) what .NET is and that it doesn’t slow down their computers, providing a hyperlink to where the user can download .NET. I think the explanation page is neccessary because there’s still resistance in uninformed user circles, to which an indie game consumer can very well belong.
So, in short, this is what the new installer experience will be like:
- The installer will have an overhead of about 400 KB (with XNA detection only) or 6.2 MB (with integrated XNA + DirectX redistributable).
- For Windows Vista and Windows 7 customers, the installer will simply install the combined XNA + DirectX redistributable, then your game – and off they go.
- Windows XP customers will be asked to install .NET 2.0 x86 (a 23.6 MB download), .NET 2.0 x64 (a 45.2 MB download) or .NET 3.5 (a 231.5 MB download), depending on their OS and which version of the .NET framework you require.
- If inclusion of .NET is not an issue (maybe you’re pressing a DVD or all your customers are on a broadband connection :p), you can bootstrap the installer using a tool such as dotNetInstaller.
- Customers without a shader-capable graphics card (or without a proper driver for the graphics card) will be warned upon installation.