Как написать exe-приложение, которое способно перезаписать себя же на диске. Другими словами как сделать, чтобы приложение после запуска "забыло" про свой image на диске и было бы возможно например удалить этот image? Второй вопрос - какой существует способ у процесса для перерезапуска себя же? Т.е. чтобы процесс мог выполнить какую-то инструкцию (куда то себя зарегистрировать) затем ExitProcess, и чтобы после этого например через 1 секунду этот же процесс гарантированно бы запустился. Страдаю над возможностью программки способной updatitj себя же и перезапускать заапдейченную версию. С минимальным импактом. Заранее спасибо
а если логика во втором exe тоже подвержена изменениям ? (что-то похожее получается на извечный филосовский вопрос о курице и яйце) если ничего не придумаю подходящего и мне никто не подскажет, то сделаю конечно вариант со вторым exe, который содержит минимум функциональности с предположением что она менятся точно не будет
я когда то делал так: Имел 2 функции апдейта дублирующии друг друга. Когда надо было обновить программу, получал с сервера обновлений файл определенного формата. Ну он был разбит на секции, в каждой секции хранилась информация о типе апдейта(интерфейс, апдейт, остальное) и байты для патчинга, номер байта - новое значение. 2 функции апдейта мне нужны были, если например мне нужно обновить саму эту функцию, то запускаю дублирующую, и она обнавляет первичную. Потом наоборот. Когда обновляется интерфейс, то я пересоздаю главное окно.
Содержание батника тоже может менятся. Идея батника ничем особо не отличается от 2х процессов. Хочется с 1м процессом. Ну ок. Перезапустить приложение можно действительно создав временный батник ждущий 1 сек, потом запускающий себя. После запуска батника cpазу ExitProcess, а при запуске процесса удаляем батник если он есть. Есть ли ответ на 1й вопрос? Может быть есть простой метод?
Если Вас не смущает необходимость перезагрузки для применения апдейта - используйте штатный метод: функция MoveFileEx с флагом MOVEFILE_DELAY_UNTIL_REBOOT. Удачи.