Автоматическое обновление [принципы и реализация]

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Автоматическое обновление [принципы и реализация]

Сообщение ndemidov » 11.09.2009 (Пт) 13:48

Нужно сделать обновление (для моей программы Wiki Wiki Earth).
Начав думать с VBTerminator, предположили, что обновление вероятно стоит представить отдельным исполняемым файлом.
Я обозначил самое главное свойство Обновления, как обновлять самого себя. Думаю, с этого и стоит начать.

Проблема, как вот это должно работать.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Автоматическое обновление [принципы и реализация]

Сообщение iGrok » 11.09.2009 (Пт) 14:29

Ну у меня была реализована такая схема:
1) Проверяем наличие обновления.
2) Скачиваем файл.
3) Когда скачался - предлагаем пользователю перезапуститься для обновления.
4) Если согласился - запускаем файл, передавая в параметрах свой PID. Проверяем, запустился ли. Если всё ок - завершаемся.
5) Обновлялка ждёт завершения процесса, pid которого получен в параметрах. После чего выполняет всё, что нужно.
6) Обновлялка запускает обновлённый экзешник. Обновлённый экзешник удаляет обновлялку.
label:
cli
jmp label

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Автоматическое обновление [принципы и реализация]

Сообщение ndemidov » 11.09.2009 (Пт) 15:02

А-а, то есть, exe-шник скачивает обновлялку? Похоже то что надо, если только файл обновлений не может перезаписать сам себя (тогда файл обновлений сможет обновит ьсам себя и не надо будет скачивать его каждый раз при обновлении программы).

----- ADDED:

Придумал, в 6-м пункте exe-шник не будет удалять обновлялку, а будет пере-закачивать её только если вышла новая версия обновлялки.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Автоматическое обновление [принципы и реализация]

Сообщение Williams » 11.09.2009 (Пт) 17:24

Для обновления .NET приложений удобна ClickOnce. Название технологии говорит само за себя.
И вы думаете, что вас оставят в живых после прочтения этого поста?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Автоматическое обновление [принципы и реализация]

Сообщение iGrok » 11.09.2009 (Пт) 19:07

Теоретически, перезапись "самого себя" возможна. Но "в лоб" у меня не получилось, а дальше я и не копался - не особо надо было.

У меня было немного проще - программа состояла всего из одного экзешника, и обновлялка - это он и был. Просто при запуске с ключём /pid= она заменяла оригинальный экзешник на себя. При этом на сервере отдельно лежал файл с номером текущей версии. Поэтому сначала я проверял версию по этому файлу, и если она оказывалась больше текущей - скачивал уже сам файл обновления, т.е. новый экзешник.
label:
cli
jmp label

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Автоматическое обновление [принципы и реализация]

Сообщение Williams » 11.09.2009 (Пт) 21:20

На тему обновления самого себя: http://social.msdn.microsoft.com/Forums ... 2dd112360c
И вы думаете, что вас оставят в живых после прочтения этого поста?


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList