another way for updater is to change the architecture of your app: Make almost every part of your app a plugin, and let the .exe just load these plugins. Than the exe would not need any updates, and it can check for plugin updates before loading them so there would no problem with deleting/replacing them.