One of the solution I have yet to try is to have an installer that can run in silent mode.
The application call the server and if it needs to update, it downloads the last installer then runs it with a silent or an update flag.
It has a lot of benefits :
- flexibility : you can do anything you would do for a normal install
- no extra package : the installer and the update are the same thing
- if you uninstall then reinstall, you can handle rollbacks
- the update is a separate process, so it can launch the app when the install is complete
- you have tools to handle vista UAC