You can use symlinks to blue green deploy the software, swap the symlink over, and restart the software to have the new version take effect with little downtime. You can do this with dlls and having the software manually unload and reload the dll for the same.
locks on symlinks apply to the target, not the symlink, this is piss easy to implement, and heres the kicker! Windows already uses symlinks for all of its dlls and exes as part of the winsxs store, so they could already use this to update without restarting, and even when a restart is needed, they could just stage it in the background, and do a normal reboot without the need for a pre shutdown and post startup stage.
This exists, right now, as something you can do in windows, windows 10, windows 7, windows xp. It works for all of them.
Microsoft has no excuse.