I personally came to appreciate applications that do something similar to the [sparkle framework][1], I guess it is a mac thing only but what it does is essentially (off the top of my head - I assume the behavior can be adjusted)

1. check for update (usually at application startup)
2. if there is one, a separate window is shown with a nicely formatted changelog
3. the user can then skip that version, install it or choose to be reminded later
4. if he decides to install the application, a progress bar is shown underneath the changelog
5. after the download the user can decide to quit the application and install immediately or to install after he quits the application

Considering that you are talking about .msi this particular framework is not really applicable, but in this cas I would rather go with some existing solution than reinventing the wheel.


  [1]: http://sparkle.andymatuschak.org/