У нас есть минимальная "updater" exe, которая проверяет удаленный URL-адрес для обновлений, загружает их и заменяет файлы на диске до запуска реального приложения. Однако, если мы хотим заменить updater EXE, то AFAIK у нас есть два варианта:
1) Теневые копии ассемблирования, в результате чего .Net создаст теневую копию EXE (и любых ссылочных ассемблеров) и загрузит эти сборки, например что не теневые сборки могут быть заменены и будут использоваться, когда приложение будет запущено.
2) Определите, какие файлы заменены и переименовать/переместить их на диск. Windows, похоже, позволяет переименовывать/перемещать заблокированные файлы, поэтому мы можем перемещать файлы и копировать их в новых сборках. Опять же, при следующем запуске приложения мы будем запускать новые сборки. Этот подход упоминается здесь
Является ли этот второй метод рекомендуемым? Есть ли подводные камни для этого подхода?