Pretty simple: copy the new version to a temp file - proggy.new - and then start another program to do the copy and exit the first. This other program - copyupdate.exe - would back up the previous exe, rename/move the new one, and start the new exe, and then exit. You could also do this with a little DCOM magic, but the above is the simplest to do and debug.