Могу посоветовать в общем случае, не по языку. У нас есть ПО, которое запускается только при определенных условиях. Если условия не подходят, то это ПО создает рядом с собой батник и запускает его, а само выгружается. Батник затем действует независимо. В нем прописано удаление экзешника ПО и затем он удаляет сам себя.
В вашем случае я думаю можно сделать все так же, только сам главный экзешник обновлять в последнюю очередь