![]() |
*Теория* | Нужен алгоритм автоматического обновления программы
Никак не могу придумать как заставить программу саму себя обновлять.
Примерно по пунктам представляю так: 1. Запуск программы 2. Скачать с сайта файл http://сайтдляобновления.рф/апдейт.txt 3. Прочитать в файле версию 4. Сравнить со своей версией 5. Если наша версия старее, качаем новую по ссылке http://сайтдляобновления.рф/апдейт.exe А что дальше делать? Как удалить текущий(выполняемый) файл, а в место него подсунуть новый и запустить? Может быть "батник" специальный можно написать, но как-то не красиво :) Подскажите как решить эту проблему по взрослому? зы: Если это упростит решение, использую С# |
Пока файл занят, его невозможно заменить. Его по-любому нужно завершать!А далее с помощью чего нибудь заменить, будь то батник, либо что нибудь другое! В большинстве случаев же, при появлении новой версии, запускается другое приложение(апдейтер) и с помощью него уже обновляется сама программа! Сделайте что нибудь в таком же роде!
|
Поспрашивал тут у яндекса (надо было до создания темы это сделать)
Цитата:
в итоге можно так (продолжение): 6. Переименовываем себя 7. Скачиваем новый файл 8. Запускаем новый 9. Закрываем старый. Ходят слухи что такое работает, надо проверить. |
эм.. а зачем так сложно. В своей программе проверяй версию файла на сервере. Если вышло обновление скачиваешь его и запускаешь другую программу через стандартные средства виндоз, и закрываешь свою программку. Новая программка смотрит в диспетчер задач в поисках первой программы - тем самым проверяя, закрылась она или еще нет, как только закрылась - обновляет файл старой программки каким угодно образом.
Выгодна этого метода - простота, удобство, если вдруг упадет или нетак чтото обновится всегда можно предусмотреть запуск второй программы из командной строки с каким нить хитрым ключем, самостоятельно скачивающим и устанавливающим твою прогу. |
Visual Studio позволяет создавать инсталлятор, который сам будет проверять обновления с любого места (локальная папка, WEB).
|
Цитата:
Цитата:
|
нет, я имел в виду что у тебя есть program.exe и скажем update.exe. Program.exe смотрит на сервер и, если есть, скачивает скажем update.tmp. как только она скачала - открывает update.exe и закрывает себя. Update.exe знает что делать с update.tmp и делает это, после чего снова запускает program.exe (уже новую).
Хотя можно так-же как и ты сказал. |
Цитата:
|
ну почему.. смотря как напишешь. Если реализуешь полный функциональный набор, то обновлять ненадо, а если будешь годами доделывать.. то да.. придется
|
Если так рассуждать, то лучше сразу в программе реализовать полный функционал, тогда вообще обновлять не придется.
|
Цитата:
|
Цитата:
|
у программы update.exe очень узкая задача и предусмотреть в ней ВСЕ очень несложно, особенно если не жалеть особо трафик и применить фантацию. В конце концов можно тупо сделать update как некий компилятор, который будет транслировать то, что написано в файле процесс_обновления.тхт и команды копировать, удалять, менять и т.п. А если скачать установщик то вообще нафига чтото придумывать - пусть юзер через браузер по ссылке его качает когда хочет и ставит когда хочет, просто отслеживать его появление и информировать и все.
|
Beyound я не понимаю вашей логики. Извините.
|
да фигня война - главное маневры. Пиши то, что тебе ближе и понятнее - тогда и прога нормальная будет, а копашиться не в своих идеях толка мало так что клаву в руки и вперед а там авось чтото да получится )))
|
Время: 15:32. |
Время: 15:32.
© OSzone.net 2001-