I've never done it before. But i imagine you set up a database with Version number and download location information. When the game loads it compares it's version number with the one in the database and if it's different it connects to the download location and downloads the update. All you hve to do is update the database with the new info when you fix the game.
I've never done this though, this is just how i'd approach it.
Use the download object, store the current version number on your site (or wherever) in a basic text file. Have the download object pull down the site version number, compare the games version (can also be stored externally) and if the site number is greater than the game > download updates. I use this one in my current project.
Alternatively you could have a series of strings for the latest file locations on your server, and at first the game downloads that and checks if you have the files. If not then it'll download the ones its missing. This would probably be quite useful if you're running a lot of external files.
There are a few ways of going about it really. Also: I'm tired.
Depends on the game. [Theory] You could have the old game download an updated .exe file, it then renames itself to something random, renames the new .exe to the corrent name and deletes the old .exe. But I don't think Windows lets you play around with files like that whilst they're running.
A secondary update.exe app would work best. It just checks your file version with a database or value stored on your server/hosting and then downloads and replaces the games .exe.