I personally came to appreciate applications that do something similar to the sparkle framework,Sparkle framework. I guess it is a macMac thing only, but what it does is essentially does the following (off the top of my head - I assume the behavior can be adjusted).
- checkCheck for update (usually at application startup)
- ifIf there is one, a separate window is shown with a nicely formatted changelog
- theThe user can then skip that version, install it or choose to be reminded later
- ifIf he decides to install the application, a progress bar is shown underneath the changelog
- afterAfter 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 case I would rather go with some existing solution than reinventing the wheel.