The logo of the WiX XNA intaller, a cheap montage of the WiX and XNA logos

WiX XNA Installer 3.1

WiX XNA Installer Logo

I just uploaded a new release of my WiX XNA Installer template that has been updated to XNA 3.1!

If you happen to have a customized installer built on the XNA 3.0 template, fear not, for the required changes are very small! Use your favorite Diff/Merge tool and copy over any changes referring to Xna_3_1 into your existing installer.

I have declared this release a beta because I haven’t gotten around to testing it on all possible operating systems.

The logo of the WiX XNA intaller, a cheap montage of the WiX and XNA logos

WiX XNA Installer 3.0

WiX XNA Installer Logo

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.

Screenshot of an installer showing that DirectX 9.0c and XNA 3.0 are installed

Read More
The logo of the WiX XNA intaller, a cheap montage of the WiX and XNA logos

WiX Installer for XNA Games

My GameSetupHelper library is making good progress. I was finally able to get some insight into the workings of WiX and Windows Installer.

I’m just about to create a small installer template for XNA games that will automatically check whether the required system components are available (for XNA games, these are DirectX 9.0c with the D3DX library from October 2006, the .NET Framework 2.0 and of course the XNA Framework).

Screenshot of a windows installer GUI showing the .NET/XNA/DirectX detection results

What I’m looking for now is feedback on the installer (you can find a download link for an example .msi at the end of this article).

  • Is the detection working for you?
  • Do you think the presentation is okay?
  • Do the logo bitmaps look abhorrent? (I’d happily accept any contributions *wink*)
  • Would people be scared by the additional slide during setup? (I tried to be honest about what the installer does to your system and at the same time follow MS recommendation to just silently install anything that’s required)
  • Do I violate any licenses with this? (I am including the official redistributables inside the MSI file, which to my understanding is legal)
  • Anything else that you think might be wrong or missing?

I plan to release the sources of this template for free once I’m done. If you absolutely need to get that installer sources NOW, just send me a mail :)

XNA Game Installers

This weekend, I’ve been thinking about ways to create an installer for my game project. For desktop applications, the technology of choice is of course Microsoft Windows Installer, which generates handy .msi files. It also automatically tracks which steps are neccessary to uninstall the application and it has the convenient repair function. However, when it comes to installing the .NET Framework, the DirectX Runtime or the XNA Framework, there seems to be no existing solution for integrating these steps into a single .msi package.

Another option would be to use NSIS, which requires you to write the uninstall actions yourself and also uses a rather cryptic scripting language, but otherwise provides all the features you expect from a modern installer. It even has LZMA compression (known from 7-Zip), which is far superior to the compression ratio of the .cab files embedded in .msi packages.

I couldn’t get my head wrapped around the declarative programming style used by WiX yet, so unless I discover a nice free MSI authoring toolkit that can be in automated builds, I’ll probably go with NSIS.

Well, whatever I’ll choose in the end, I’ve written a small DLL that can detect whether the .NET Framework (1.0/1.1/2.0/3.0) is installed, whether DirectX (9.0) is available, whether the XNA Framework (1.0/1.0 Refresh) is installed and whether the AGEIA PhysX System Software is in place. The DLL is written in pure C++ and doesn’t rely on anything, not even the C++ runtime libraries. It can be interfaced from both NSIS and MSI.

Screenshot of the NUnit GUI running some tests  detecting whether XNA framework is installed

If anyone wants to help create an installer template for XNA games, be welcome!