Это не ограничивается C # или WPF.
Вы должны предоставить интеллектуальный установщик, который может определить версии файлов и / или даты и знать, какие из них заменить, а какие нет.Поэтому установщик может установить или обновить в зависимости от ситуации.
Также Visual Studio поставляется с решением для установки, которое я лично предпочитаю Inno Setup .Это делает установку, обновление и деинсталляцию легкой задачей и работает со всеми языками.