Take the 2-minute tour ×

We have to distribute and maintain a somewhat complex software application, whose installer does not (nor is expected to) install and configure every part needed on any possible kind of server.

I've been the person responsible for the installation so far and I have knowledge of all the many pitfalls and tricks to get the installation to run smoothly. Now we have more people we want to train in this procedure and hopefully minimize my need to hand hold them while they're learning.

Thing is, a linear document for all possible cases would be far from ideal, because there are many possible paths in the process, depending on the starting point (Windows Server 2003 32/64 bits, Windows Server 2008 32/64 bits, SQL Server 2005 32/64 bits, Windows XP Pro SP2/SP3, .NET 2.0 SP1/SP2) and on all the possible problems that arise in each combination.

So, I'm looking for a tool that is designed with this scenario in mind, hopefully generating documentation based on a set of input parameters (configuration of the machines) or, even better, a tool that will guide the installation process based on what's been happening and which can record new problems and map them to known solutions.

I can envision writing such a tool, but it doesn't look like a (very) trivial problem. This seems to be the intersection of a knowledge base and an expert system.

So, what do you do? Assume defeat and have huge linear docs and FAQ like KBs?

share|improve this question
add comment

4 Answers

Alright, I've got two comments. First, the one you want to hear (although you're probably not expecting this).

Gamebook Engine (http://freshmeat.net/projects/gamebook-engine) sounds like it might be what you want, since you're essentially talking about a "Create your own Adventure" kind of process. Go to page 45 if you're installing on Windows XP, page 26 if you attack the druid.

2nd comment: You're probably going about this the wrong way. What you should really do is write a wrapper for this installer that is intelligent enough to know your platforms and has specific instructions needed for that platform. It's (maybe) more work, but it sounds like it will save everyone time in the long run.

share|improve this answer
Thing is I have no control over the source code of the installer nor over the app, so the second case ends up being very similar to the first, but instead of saying "do this" to the person just directly "doing this". No? –  Vinko Vrsalovic Jun 3 '09 at 9:25
add comment

The problem with linear installation is lack of idempotence, or the ability to repeat the task over and over with the same results, and if a failure occurs, it picks up right where it was broken (after fixing what broke it, of course :-)).

If a manual installation fails halfway through, you often have to scrap the whole thing over again. Enter the human factor, and you may have a disaster waiting to happen.

I don't have an answer for the Windows world, but Unix/Linux have two excellent configuration management tools that are designed for idempotence: Chef and Puppet. While linear installation procedures may be desired for some things, these tools will resume where left off if something unexpected occurred and something wasn't installed all the way.

share|improve this answer
add comment

I would probably go the wiki way: Using a wiki page per configuration question with links to other wiki pages depending on the answers. The flow through the installation would be represented by following the corresponding links. As new problems arise you create new wiki pages.

Then depending on the wiki you might be able to print out the wiki pages in a nice way and combine them in the desired order for the different server installations.

share|improve this answer
Is there a portable wiki? The perfect way would be to work even in non internet enabled scenarios (ie without connectivity to the outside) –  Vinko Vrsalovic Jun 3 '09 at 9:26
Yes, there is a portable WIKI. You're looking for stickwiki.sourceforge.net –  andrewd18 Jun 4 '09 at 14:00
add comment

Why not just create a portable html page with links that can be opened in a browser with a wizard-styled navigation, IE "click on this link if you have a windows 2003 server", etc. etc.

share|improve this answer
add comment

Your Answer


