The ZMan:
Stephen Styrchak:
Please note that it is entirely possible to write an installer that detects the missing prerequisites, so you can pop up instructions for your customer instead of failing at runtime.
If only life was that easy...
Firstly its almost impossible to get any team at MS to commit to a method of detection that they guarantee will work in the future. So you resort to guessing which registry key to look for.
We were supposed to have included our Windows Installer product GUIDs in our docs, but that work slipped through the cracks. It should be included in v2.0, and I think someone's tracking it this time. Product GUIDs aren't supposed to change, and our future versions are going to be side-by-side. New products don't change how you detect an older product that you depend on.
The ZMan:
Since you can't redist any of the non runtime components then giving the user instructions on how to install C# Express, SP1, Vista Fix and then GSE will pretty much assure that they never finish the installation procedure unless they are very motivated.
If your dependency is on the non-redistributable parts of XNA Game Studio Express, then you have no choice but to tell people to install XNA Game Studio Express. At that point, you may as well let XNA GSE worry about its own dependencies. You're talking about an unsupported scenario, so it should be no surprise at all that the work-around is crummy.
If you want to build something on an unsupported scenario, be prepared to do a lot of the heavy lifting yourself. Installers are applications. They aren't magic. You need to design, implement, and test them just like any other application. Yes, there are technologies that make building simple installers very easy. Consider how the Forms designer makes building UI easy. The Forms designer is great for getting simple UI up and running quickly, but you can't build a robust multi-tier application using drag and drop. It's the same thing with installers. If you want to have a robust setup that works in many environments, and handles lots of different dependencies, you can't just use some point and click interface. At least, not today.
You can choose to wait several years for the possibility of someone creating a simple point-and-click way to author setup, if that's what you really want. But if you don't have the luxury of waiting years for someone else to do it, then you can start designing your own solutions.
I agree it's not easy, but the difficulty varies depending on your goals. My recommendation is, don't build a commercial application with dependencies on things that aren't redistributable. If you do, I suggest you prepare to make compromises on your ease-of-use or download size goals.
The ZMan:
Is there an official documented way to detect a missing XNA runtime install?
It was accidentally omitted from our docs. Depending on the installer technology you use, the documented steps might not have helped anyway.
The ZMan:
A white paper from you guys would be great and you will see for yourself how your tiny little XNA assembly becomes a huge download that cannot possibly compete with any other casual game out there.
I agree, a white paper would be great. I'm not sure that you in particular would be happy with it, though. You sound like you want it to be geared at the professional developer, while there's a good chance we'd write it for the hobbyist.
What I mean by that is, the installer I would build for my friends, family, and other home-brew game enthusiasts is not the same one I would build for paying customers. They have different expectations, and take different amounts of effort. You might not agree, but our primary XNA Game Studio customer segment needs something that is primarily easy and intuitive to build, and delivers a "simple enough" install experience. The "easy to build" part trumps "hassle-free experience for end-users." At the moment, setup is a non-starter for most people because they don't know what it is or how it works.
I agree we can do better. We are looking at various solutions, but if you don't want to wait an indeterminate amount of time for something we can't even disclose to you yet, then I'm still going to suggest that people look for ways to achieve "simple enough".