Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 20.02.2012, 09:32   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Обновление

В общем встала задача с обновлением программы. Задача обновить исполняемый файл уже запущенной программы, т.е. выполнить обновление из нее самой. Есть какие-то рефы на WinAPI, с помощью которых можно разорвать связь с открытым файлом?

Или если у кого есть другие предложения по реализации обновления - буду благодарен!
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.02.2012, 10:56   #2
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Обновление

Сама windows обновляет свои запущенные файлы лишь после перезагрузки, думаешь у тебя есть способ получше? Только через посредника.
__________________
(Offline)
 
Ответить с цитированием
Старый 20.02.2012, 11:18   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Обновление

У меня есть мысль обновить программу через бат файл с паузой, т.е. из программы запустить бат и выйти, а в батнике по нажатию кнопки запустить скачанные файлы на распаковку... но как-то оно мне не очень нравится...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.02.2012, 13:12   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Обновление

#2 - посредника, также делаю.
И описал ты в #3, именно его, посредника.

Если это клиентское ПО, то нужен отдельный Updater, который будет делать всю работу, он может также работать как отдельный процесс - подготавливаться к обновлению, но осуществлять его должен вынуждая перезапустить приложение.
Это как в Firefox'е, обновления делать, и других ПО.

Если это серверное ПО, то тут уже сложнее, т.к. серверные системы можно разбить на модули, которые по сути отвечают за разную логику, и работают весьма независимо. Например модули по обработке сетевых пакетов - это могут быть подключаемая динамично библиотека, и используя рефлекцию и спользуемая.
Тут можно замутить динамичную замену длл, но также нужен механизм очереди запросов и т.п. в сам модуль. Это не просто реализовать, т.к. если к примеру это модуль обработки пакетов, то если именно заменять - будет большая очередь образовываться.
Можно подключать новую, перенаправлять все запросы на неё, затем когда старый модуль перестаёт использоваться - отключать.

Но подобные фичи очень не просты в использовании, т.к. требуют весьма мощной архитектуры, и стабильной.

Серверное ПО, также может состоять из отдельных приложений, и использовать внутренние методы коммуникации, например используя отличную библиотеку ZeroMQ, которая для кластерных систем вообще шик.
Таким образом продумать систему коммуникации приложений, и далее дело уже в шляпе, запуск и остановка приложений - и будет их обновлением, при этом при корректной реализации, не мешающим работе сервера.
(Offline)
 
Ответить с цитированием
Старый 20.02.2012, 13:25   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Обновление

Сделал через bat и 7z.exe
Мог конечно написать оболочку на C#, но сказали никакого Net Framework
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:14.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com