Обновление
В общем встала задача с обновлением программы. Задача обновить исполняемый файл уже запущенной программы, т.е. выполнить обновление из нее самой. Есть какие-то рефы на WinAPI, с помощью которых можно разорвать связь с открытым файлом?
Или если у кого есть другие предложения по реализации обновления - буду благодарен! |
Ответ: Обновление
Сама windows обновляет свои запущенные файлы лишь после перезагрузки, думаешь у тебя есть способ получше? Только через посредника.
|
Ответ: Обновление
У меня есть мысль обновить программу через бат файл с паузой, т.е. из программы запустить бат и выйти, а в батнике по нажатию кнопки запустить скачанные файлы на распаковку... но как-то оно мне не очень нравится...
|
Ответ: Обновление
#2 - посредника, также делаю.
И описал ты в #3, именно его, посредника. Если это клиентское ПО, то нужен отдельный Updater, который будет делать всю работу, он может также работать как отдельный процесс - подготавливаться к обновлению, но осуществлять его должен вынуждая перезапустить приложение. Это как в Firefox'е, обновления делать, и других ПО. Если это серверное ПО, то тут уже сложнее, т.к. серверные системы можно разбить на модули, которые по сути отвечают за разную логику, и работают весьма независимо. Например модули по обработке сетевых пакетов - это могут быть подключаемая динамично библиотека, и используя рефлекцию и спользуемая. Тут можно замутить динамичную замену длл, но также нужен механизм очереди запросов и т.п. в сам модуль. Это не просто реализовать, т.к. если к примеру это модуль обработки пакетов, то если именно заменять - будет большая очередь образовываться. Можно подключать новую, перенаправлять все запросы на неё, затем когда старый модуль перестаёт использоваться - отключать. Но подобные фичи очень не просты в использовании, т.к. требуют весьма мощной архитектуры, и стабильной. Серверное ПО, также может состоять из отдельных приложений, и использовать внутренние методы коммуникации, например используя отличную библиотеку ZeroMQ, которая для кластерных систем вообще шик. Таким образом продумать систему коммуникации приложений, и далее дело уже в шляпе, запуск и остановка приложений - и будет их обновлением, при этом при корректной реализации, не мешающим работе сервера. |
Ответ: Обновление
Сделал через bat и 7z.exe
Мог конечно написать оболочку на C#, но сказали никакого Net Framework |
Часовой пояс GMT +4, время: 11:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot