Q:

How to best implement software updates on windows? 

I want to implement an "automatic update" system for  a windows application.  
Right now I'm semi-manually creating an "appcast" which my program checks, and notifies the user that a new version is available. ( I'm using
 NSIS for my installers). 
Is there software that I can use that will handle the "automatic" part of the updates, perhaps similar to  Sparkle on the mac?  Any issues/pitfalls that I should be aware of? 

A:

There's now a Windows port of Sparkle, see http://winsparkle.org. 

A:

There is no solution quite as smooth as Sparkle (that I know of). 
If you need an easy means of deployment and updating applications, ClickOnce is an option.  Unfortunately, it's inflexible (e.g., no per-machine installation instead of per-user), opaque (you have very little influence and clarity and control over how its deployment actually works) and non-standard (the paths it stores the installed app in are unlike anything else on Windows). 
Much closer to what you're asking would be ClickThrough, a side project of WiX, but I'm not sure it's still in development (if it is, they should be clearer about that…) — and it would use MSI in any case, not NSIS. 
You're likely best off rolling something on your own.  I'd love to see a Sparkle-like project for Windows, but nobody seems to have given it a shot thus far. 

A:

Google Chrome auto-update is based on Omaha:
http://code.google.com/p/omaha/
Their overview has a great section on why it was needed:

The browser typically prompted the user with a long series of techy, confusing and scary dialogs all trying to convince the user not to install.  Then the user was prompted with a wizard filled with choices that they did not need to or know how to decide amongst.  These factors combined to form a bad user experience and large drop-off during the app installation process

