Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - *Теория* | Нужен алгоритм автоматического обновления программы

Ответить
Настройки темы
Теория - *Теория* | Нужен алгоритм автоматического обновления программы

Аватара для amohax

Пользователь


Сообщения: 69
Благодарности: 2

Профиль | Отправить PM | Цитировать


Никак не могу придумать как заставить программу саму себя обновлять.

Примерно по пунктам представляю так:

1. Запуск программы
2. Скачать с сайта файл http://сайтдляобновления.рф/апдейт.txt
3. Прочитать в файле версию
4. Сравнить со своей версией
5. Если наша версия старее, качаем новую по ссылке http://сайтдляобновления.рф/апдейт.exe

А что дальше делать? Как удалить текущий(выполняемый) файл, а в место него подсунуть новый и запустить?

Может быть "батник" специальный можно написать, но как-то не красиво

Подскажите как решить эту проблему по взрослому?

зы: Если это упростит решение, использую С#

Отправлено: 13:27, 28-02-2011

 

В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Пока файл занят, его невозможно заменить. Его по-любому нужно завершать!А далее с помощью чего нибудь заменить, будь то батник, либо что нибудь другое! В большинстве случаев же, при появлении новой версии, запускается другое приложение(апдейтер) и с помощью него уже обновляется сама программа! Сделайте что нибудь в таком же роде!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 13:51, 28-02-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для amohax

Пользователь


Сообщения: 69
Благодарности: 2

Профиль | Отправить PM | Цитировать


Поспрашивал тут у яндекса (надо было до создания темы это сделать)

Цитата LilLoco:
Пока файл занят, его невозможно заменить. »
заменить нельзя, а вот переименовать можно.

в итоге можно так (продолжение):

6. Переименовываем себя
7. Скачиваем новый файл
8. Запускаем новый
9. Закрываем старый.

Ходят слухи что такое работает, надо проверить.

Последний раз редактировалось amohax, 28-02-2011 в 15:50.


Отправлено: 14:19, 28-02-2011 | #3


Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:41, 28-02-2011 | #4


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Visual Studio позволяет создавать инсталлятор, который сам будет проверять обновления с любого места (локальная папка, WEB).

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:11, 01-03-2011 | #5


Аватара для amohax

Пользователь


Сообщения: 69
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Visual Studio позволяет создавать инсталлятор, который сам будет проверять обновления с любого места (локальная папка, WEB). »
Каким образом он это делает? Добавляет еще свою программу в автозагрузку и постоянно проверяет мой сервер на обновления? Зачем иметь постоянно запущенный процесс, если достаточно проверять обновления при запуске. Так гугл делает. Мне это не очень нравится. Может быть, конечно, он свой "лаунчер" создает, который при запуске проверяет обновления, а потом запускает программу. Тогда появляется проблема если пользователь сам захочет сделать ярлык.

Цитата Beyound:
эм.. а зачем так сложно. В своей программе проверяй версию файла на сервере. Если вышло обновление скачиваешь его и запускаешь другую программу через стандартные средства виндоз, и закрываешь свою программку. Новая программка смотрит в диспетчер задач в поисках первой программы - тем самым проверяя, закрылась она или еще нет, как только закрылась - обновляет файл старой программки каким угодно образом.
Выгодна этого метода - простота, удобство, если вдруг упадет или нетак чтото обновится всегда можно предусмотреть запуск второй программы из командной строки с каким нить хитрым ключем, самостоятельно скачивающим и устанавливающим твою прогу. »
Если я правильно понял, ваша программа (programm.exe) скачивает некий файл обновления (updater.exe), запускает его, а он уже выполняет все необходимые действия для обновление программы?

Отправлено: 06:14, 01-03-2011 | #6


Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


нет, я имел в виду что у тебя есть program.exe и скажем update.exe. Program.exe смотрит на сервер и, если есть, скачивает скажем update.tmp. как только она скачала - открывает update.exe и закрывает себя. Update.exe знает что делать с update.tmp и делает это, после чего снова запускает program.exe (уже новую).
Хотя можно так-же как и ты сказал.

Отправлено: 18:05, 01-03-2011 | #7


Аватара для amohax

Пользователь


Сообщения: 69
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Beyound:
нет, я имел в виду что у тебя есть program.exe и скажем update.exe. Program.exe смотрит на сервер и, если есть, скачивает скажем update.tmp. как только она скачала - открывает update.exe и закрывает себя. Update.exe знает что делать с update.tmp и делает это, после чего снова запускает program.exe (уже новую).
Хотя можно так-же как и ты сказал. »
Я как раз тоже самое и сказал, просто ты не учел то, что update.exe тоже иногда придется обновлять

Отправлено: 18:45, 01-03-2011 | #8


Старожил


Сообщения: 154
Благодарности: 39

Профиль | Отправить PM | Цитировать


ну почему.. смотря как напишешь. Если реализуешь полный функциональный набор, то обновлять ненадо, а если будешь годами доделывать.. то да.. придется

Отправлено: 20:46, 01-03-2011 | #9


Аватара для amohax

Пользователь


Сообщения: 69
Благодарности: 2

Профиль | Отправить PM | Цитировать


Если так рассуждать, то лучше сразу в программе реализовать полный функционал, тогда вообще обновлять не придется.

Отправлено: 07:03, 02-03-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - *Теория* | Нужен алгоритм автоматического обновления программы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Изменился сценарий автоматического обновления. Ser6720 Microsoft Windows 2000/XP 2 12-12-2007 23:36
.NET - *Теория*(VB.NET || C#.net ) Нужен алгоритм для мини - игры ssdm Программирование и базы данных 11 17-05-2007 02:12
полное отключение автоматического обновления segajb Microsoft Windows 2000/XP 10 01-06-2006 10:07
*Теория* | Алгоритм(ы) движения(наикротчайшего пути) XCodeR Программирование и базы данных 7 03-10-2005 12:48




 
Переход