Цитата
скачали новый, старый запускает его с параметром-своим хэндлом
Кого это "его"? Я тебе что выше писал? Как только обновление доступно - запускается Updater, который и производит скачку. Скачал - послал сообщение твоей основной программе. Она его приняла, аккуратно, без спешки закрыла все потоки (не Halt-ами, а /Terminate + FreeOnTerminate/ или /Terminate + WaitFor/, заодно отслеживая, что нет спящих потоков), и потом, перед самым своим завершением, послала Updater-у сообщение: "Все, все потоки удалены, все файлы закрыты, я никого не держу и делаю харакири". Твой Updater, приняв это сообщение, понимает, что основная программа уже вот-вот отбросит коньки, и, выждав контрольный промежуток времени (уже все закрыто, тормозов при выходе не будет, ага, тут можно и подождать), удаляет старый EXE-шник, заменяет его новым, и запускает его на выполнение. После чего завершается сам (его EXE-файл при этом удаляется автоматически, спасибо Дж. Рихтеру). Итог: обновленная программа работает, имя EXE-шника не изменилось, установщик исчез. Все как и было.
В твоем случае опять будет проблема. Скачал ты файл, запустил НОВОЕ приложение, старое закрылось. И что? Новое работает под новым именем. Чего ты добился? Нет уж, "разделяй и властвуй". Каждый делает то, что ему положено делать. Обновлялка качает обновления и занимается, собственно, его установкой, приложение ей в этом не мешает. А только помогает.