NSIS has the INetC plugin that can be used to download things from the internet but I don't know if there is an auto update tutorial out there. You might also want to take a look at the VPatch plugin...
There are many variables to think about here:
- Should your main application look for updates or just run the updater on application (or windows) startup so it can check?
- Are the files on the server signed or do you have other ways to detect invalid/corrupted/MitM updates?
- Do you require access control/DRM before downloading/applying updates?
- How will you handle major version number updates? Will you support more than one major version or force upgrades?
- Do you require administrator rights to update? UAC handling?
- How are you going to support upgrading from 1.0 to 1.2? Update to 1.1 first or support every possible minor version upgrade path?
I'm sure there are many other issues you also have to think about. You should probably try to answer all these questions before you start coding. During development you might find other questions or that you have to change the design completely.
IMHO, this is not a simple question and I don't think you will be able to find a drop-in solution that fits your exact design/requirements...