views:

63

answers:

4

Does Windows installer provide a built-in method for updating applications, or do I have to write this myself in my application code?

For example, ClickOnce can automatically update my application for me; I do not have to write code specifically for this in my application. Is similar functionality available in Windows Installer or is it purely for installation purposes only?

+2  A: 

Windows Installer provides a mechanism for you to build patches and updates for applications you used it to install--either for minor bug-fix patches or for full version-to-version upgrades. (Some information can be found here.)

It does not, however, provide an auto-update mechanism like ClickOnce does. You'll need to write code that knows how to look for available updates and start the updating process.

Reuben
s/to install it/it to install/, I think ;-)
SamB
@SamB good catch!
Reuben
A: 

Windows installer does indeed provide a mechanism for updating applications. Check out this overview from Microsoft. Here are the specific types:

Major upgrade:
For major new releases that involve wholesale changes in the feature tree of the app, and possibly the removal of outdated features or components (1.0 -> 2.0)

Minor upgrade:
For minor changes to the application such as updating existing files and maybe adding new ones (1.0 -> 1.1)

Small update (patch):
For very minor changes, typically with no change in the published version number.

Tools like Wix help to author the MSI database that tells the installer service how to handle an update.

Chris Tybur
+1  A: 

Windows installer does not but Google installer does http://code.google.com/p/omaha/

Maxim Veksler
A: 

While it t is true that MSI has various servicing strategies, an auto-update pattern is not one of them. If you are using InstallShield you can use their auto update framework. If you don't mind writing a little bit of code, here is one way to do it yourself:

http://blog.deploymentengineering.com/2006/10/implementing-auto-updating.html

Christopher Painter