I’m using Microsoft Visual Studio 2008 with a Windows target deployment. How would I make a file “update itself”? I’ve already got the “transmitting over a network” part down, but how do I make an executable write over itself?
Basically, I want to write an auto-updater for a directory that also includes the auto-updater, and the updater needs to update EVERYTHING in the directory.
Maybe a ways to pend the changes to the file for until the file lock is released would work. If I were to do that though, I’d probably follow it up with a hot-patch.
Write a new executable and delete or save a copy of the old one — you could send a diff over the network and have a third program, the update monitor or whatever, to apply it. It would be just a small script that could be started from the remote app when it realizes an update is available. The updater could rename itself to $UPDATER_OLD_VERSION or whatever, write an updated copy of itself with the appropriate name, and then when the new updater is run you check if there is a file named $UPDATER_OLD_VERSION in the app directory and delete it. All other files could just be updated/overwritten.