Thanks to that I remembered (and found) more methods to do this!
One is the ClickOnce Framework. This frameworks takes care of the publishing and updating of your application. It allows administrators to roll an update to all users and even choose what update to roll. It has a lot of features which you can read about in the MSDN site.
Another way, which I less recommend, is having another application that is responsible for updating the main one. This way you don’t have the problem of file locks.
I don’t like this method because it gives you a new headache… What if I need to update the updater? :O
I found many nugets and OpenSource projects that address this issue as well. They all do one of two things, either the “rename” trick I ended up using, or an external installer.
At the end, it’s your choice which way to go. You have to be complete with your choice and be ready to explain why you thought that’s the better way.
See you soon!