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.

If anyone wants to help create an installer template for XNA games, be welcome!
Why would you need to write
Why would you need to write dll for that?
Isn't all information about .NET/DX/XNA versions available reading some values from registry?
Most of it is
Maybe I'm on the wrong track with this, but I couldn't get some informations from the registry exclusively. For example, finding out whether the XNA Framework 1.0 or the XNA Framework 1.0 Refresh is installed.
I've planned more for this DLL, like downloading the required setups and running them in the background while a nice progress bar is entertaining the user. Maybe all this can be achieved with MSI or NSIS, I don't know...
I was wondering where I
I was wondering where I could get my hands on this dll, I would be happy to try coding a program to create an installer, this is the biggest problem with getting people to play my games, making sure they have all the requirements. It would also be great if it detected pixel shaders.
Check your Mail ;)
I've sent you an email with some links where you can download the DLL!
Progress?
Has there been any success with a generic *.msi installer for XNA games, or at least a public version of this dll? Thanks for the good work so far!
XNA 1.0 Version is Ready to be Used
The XNA 1.0 Version of my installer template is ready to be used and can be downloaded from codeplex (www.codeplex.com/xnainstaller).
There's small issue that will causes the installer to attempt reinstallation of the redistributables when components were missing and the user presses the "back" button after they were installed (this issue is also documented on the codeplex page). Apart from that, there should be nothing to prevent anyone from using it :)
Post new comment