I'm looking for a way to give out preview or demo versions of our software to our customers as easy as possible.

The software we are currently developing is a pretty big project. It consists of a client environment, an application server, various databases, web services host etc. The project is developed incrementally and we want to ship the bits in intervals of one to two months. The first deliveries will not be used in production. They have the puropse of a demo to encourage the customers to give feedback.

We don't want to put burden on the customers to install and configure the system. All in all we are looking for a way to ease the deployment, installation and configuration pain.

What I thought of was to use a virtualizing technique to preinstall and preconfigure a virtual machine with all components that are neccessary. Our customers just have to mount the virtual image and run the application.

I would like to hear from folks who use this technique. I suppose there are some difficulties as well. Especially, what about licensing issues with the installed OS? Perhaps it is possible to have the virtual machine expire after a certain period of time.

Any experiences out there?

+2  A: 

You should take a look at thinstall(It has been bought by vmware and is called thinapp now), its an application virtualizer.

Alexander Stolz
+6  A: 

Since you're looking at an entire application stack, you'll need to virtualize the entire server to provide your customers with a realistic demo experience. Thinstall is great for single apps, but not an entire stack....

Microsoft have licensing schemes for this type of situation, since it's only been used for demonstration purposes and not production use a TechNet subscription might just cover you. Give your local Microsoft licensing centre a call to discuss, unlike the offshore support teams they're really helpful and friendly.

For running the 'stack' with the least overhead for your clients, I suggest using VMware. The customers can download the free VMware player, load up the machines (or multiple machines) and get a feel for the system... Microsoft Virtual PC or Virtual Server is going to be a bit more intrusive and not quite the "plug n play" solution that you're looking for.

If you're only looking to ship the application, consider either thinstall or providing Citrix / Terminal services access - customers can remotely login to your own (test) machines and run what they need.

Personally if it's doable, a standalone system would be best - tell your customers install vmware player, then run this app... which launches the various parts of your application stack (maybe off of a DVD) and you've got a fully self contained demo for the marketing guys to pimp out :)


Thinstall is great for single apps, but not an entire stack....

I didn't try it yet, but with the new version of thinstall you are able to let different thinstalled application communicate. But I guess you're right a vm-ware image would be easier

Alexander Stolz

Depending on if you can fit all the needed services into a single OS instance or not...

Vmware Ace or whatever they're calling it nowadays will let you deliver single virtual machines under strict control, with forced updates, expiration and whatnot. But it sounds easier to just set up a demo environment and allow remote access to it.

The issue here I guess is getting several virtual machines to communicate under unknown circumstances - if one is not enough?

An idea then is to ship a physical server preconfigured with virtualisation and whatever amount of virtual servers needed to demonstrate the system.

Using trial versions of the operating system might be good enough for the licensing dilemma - atleast Windows Server is testable for 60 days, extendable to 240 when registering.

Oskar Duveborn

It seems that you're trying to accomplish several competing goals:

  • "Give" the customer something.
  • Simplify and ease the customer experience.
  • Ensure the various components coexist and interact happily.
  • Accommodate licensing restrictions, both yours and the OS vendor's.
  • Allow incremental and piecewise upgrades.

Can you achieve all of these by hosting the back end (database, web server, etc.) and providing your customers with a CD (or download) that contains the client? This will give them the "download/upgrade experience" that goes along with client software, without dealing with the complexity of administering the back end.

For a near plug-and-play experience, you might consider placing your demo on a live linux or Windows CD. Note: you need a licensed copy of Windows for the latter.

Perhaps your "serious" customers might be able to request their own demo copies of the back end as well; they'd be more amenable to the additional work on their part.

As far as OS licenses, if your vendor(s) of choice aren't helpful, you might consider free or open-source alternatives such as FreeDOS or linux.

Adam Liss