The options for windows happen to be very limited, I'm afraid. You have one of these three:

1) Use a package management system. I tried to use one for windows, but they were non-mainstream and since most people don't have them installed, you are just forcing users to install one more program. I'm not sure if Windows8 provides something new in this arena, but I seriously doubt it. There are some acceptable cross-platform solutions, but I decided not to use them for that reason.

2) Implement an ad-hoc auto-update solution: check if there are updates, and download and install them. Even though this may seem the most sensible solution if you only have one program, updating your application on the background while it runs will probably fail on windows (you can't modify a exe while it's being executed, I'm afraid).

3) Implement something simple: just publish updates somewhere, and let the user know (better with a small icon or message in a corner of your window, never a popup). If you publish once a year, nobody will really care so much. I use [1], with which I just have to implement (derive) certain classes in my model and view (MVC architecture) and, at some point during program initialization, run UpdateCheck.installHandlers. It's part of a package I created called hails. It allows adding listeners to changes in the model, and writing your controller as a series of conditions like "field_of_element_in_the_view =:= field_in_the_model". If the types match, it'll keep both in sync for the duration of the program. Feel free to mail me any questions you have if you choose it a try (I actually use this for real stuff).

Cheers,
Ivan

[1] https://github.com/keera-studios/hails-mvc-solutions-gtk/blob/master/src/Hails/Graphics/UI/Gtk/Simplify/UpdateCheck.hs