Ist das Programm dein eigenes Programm? Dann würde ich es nicht updaten sondern durch eine Art Bootloader ersetzen, welcher dann das eigentliche Programm (genauer: die aktuelle Version des eigentlichen Programms) zieht und ausführt.
ich mein, das Lade-Programm könnte dann ja auch einfach Process.Start("neueDateiVersion1.2.exe") machen. einfach die neue Version starten. EDIT: oder hast du gerade Angst vor den Dateisperren alias Datei ist noch geöffnet? Dann mach doch ne Textdatei, wo du die aktuelle Version reinschreibst.