По нажатию - дисэйблить кнопку [и возможно другие связанные элеменыт ui + разлочивать/показывать другие] и потом пускать в отдельном потоке что-то долгое.. по его завершению - разлочивать.
Классика: две кнопки "пуск" и "стоп" + прогрессбар
IsEnabled у кнопок цепляется за булево поле IsProcess (инверсно у пуск и прямо у стоп)
ProgressBar - виден только когда IsProcess == true
Достаточно распространено полное непонимание юзерами понятий расположения файлов и т.п.
Поэтому как минимум будут грабли например с попытками юзера что-то запустить внутри архива и копированием архива в место, похожее на местоположение текущей версии... ну и "этот файл был получен из ненадежного источника и заблокирован" - никто не отменял....
Поэтому запуск некоего инсталлятора с единственной кнопкой "всё сделать" - окажется юзабельнее.