I have looked at three different tools for building a demo; Windows Media Encoder 9, ViewletBuilder4, and Macromedia Captivate. I did not try Wink based on hearing that it was more difficult to setup and create a demo compared to ViewletBuilder. I will describe each, but feel that Captivate is by the far best tool for creating demos (so feel free to just skip to that section).
Windows Media Encoder - http://www.microsoft.com/windows/windowsmedia/9series/encoder/default.aspx
Is basically a video recorder of you entire screen (or a particular window or region of your screen if preferred); meaning it literally records live activity of your screen and converts to a wmv format. You can also record audio.
I had two main issues using this tool. The first was once I started recording video (no audio), the CPU was pegged. Thus it took so long for me to actually navigate my IDE and console windows while stepping through the actual code demo, that it was useless. Then, even after the recording was finished, I was not able to find how to add bubble comments or any other notes to the video itself. Therefore, the only narration that could be added is via audio.
ViewletBuilder - http://www.qarbon.com/presentation-software/viewletbuilder/
Is based off of screen shots instead of recording live motion on the screen (but still allows for audio recording as well). Once you have started a new project, you capture screen shots manually (by pressing the Pause key) or by having the tool react to right and/or left mouse clicks. After you have collected all the screen shots you want, can then end the session and ViewletBuilder will lay out all the screen shots in order and allow for editing.
The editing process is one of ViewletBuilder's stronger points. It allows for the addition of balloon comments, images, shapes, etc. You can also manually add animated movement of the cursor on the screen shot. Once you have edited all the slides, there is a playback feature that will run through all the slides so you can see how the presentation will look once completed. When satisfied, can then choose to compile the viewlet into both a Windows self contained executable and a Flash swf file (along with html page to load the swf file).
I had a good bit of difficulty figuring out how to control the timing of the events for the slide. For example, how long to show a slide, when the cursor should move, and even when the bubble comments should be shown. Also could not figure out how to have multiple balloon comments on the same slide unless they were all shown at one time (so had to clone the slide for each bubble comment).
Captivate - http://www.macromedia.com/software/captivate/
Is a combination of live recording and screen shots. Upon recording, it will take screen shots as the window or screen changes (so if scroll down, change windows, etc., will take the screen shot for you). Captivate also records actions such as mouse clicks and typing automatically. It also does audio recording, but did not personally use this. This tool truly allows you to step through your demo as though you were demoing to someone looking over your shoulder without having to worry about any recording tool in the process. It also give you audio clues of when it recognizes a recording event, such as the sound of a camera taking a snap shot when you change windows, or the sounds of a keyboard when typing in a console.
Besides the nice automatic recording (without crippling your machine), where Captivate blows away the other tools is in the editing. Captivate provides ability to insert bubble comments, highlight box, images, rollover captions, buttons, animations, and other cool stuff. Even better, is the timeline slide for each slide so can easily control the total duration of the slide and when each element within the slide appears. For example, can add a bubble comment to a slide that only appears for the first 2 seconds of the slide, then as it fades out, can then have it show another bubble comment you have added to the same slide for 5 seconds, and then as it fades, have the mouse move to the window tab and click. Also have the ability to preview per slide or for the whole presentation. Can even manually run the timeline so can jump to any point or stop at any point within the timeline to see what is visible on the screen.
When done editing, is very easy to publish the project to all sorts of output to include swf file (with corresponding html file), windows executable, and even MS Word handouts. The only problem I encountered with the tool is it would sometimes crash if tried to record too many projects in a row. Although this problem in particular was a pain, the tool overall is very feature rich and extremely easy to use.
To see an example of a demo created using Captivate, see the JBossRemoting demo
One last note; if you are recording your full screen, be careful about screen resolution. By default, all these tools will assume the same resolution as your screen, so might end up being a lot larger than most viewer's screens. If just recording based on a single application window, can just resize the window itself so don't have to change screen resolution.
tom dat jboss daught org