Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как организовать обновление программы с сайта? / 10 сообщений из 10, страница 1 из 1
13.02.2015, 16:17
    #38879288
seg856
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
Есть сеть из компьютеров, какие-то имеют доступ в интернет, какие-то - нет. На каждом установлена программа, которую нужно обновлять.
Пусть обновление выложено на сайте. На выделенном компьютере администратор запускает (отдельную) программку, чтобы скачать файлы обновления с сайта в расшаренную папку компьютера, с которой уже остальные компы будут обновляться.

Как это сделать так, чтобы процесс скачивания файлов с сайта в расшаренную папку не мешал процессу скачивания файлов из папки другими компьютерами? Так как тогда обновление может пройти некорректно.
...
Рейтинг: 0 / 0
13.02.2015, 16:19
    #38879291
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
скачай с сайта под другим именем.
затем переименуй оба файла.
...
Рейтинг: 0 / 0
13.02.2015, 16:21
    #38879292
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
seg856Как это сделать так, чтобы процесс скачивания файлов с сайта в расшаренную папку не мешал процессу скачивания файлов из папки другими компьютерами? Так как тогда обновление может пройти некорректно.Скачивать во временный каталог/под временным именем, а затем перенести/переименовать в нужное имя.
...
Рейтинг: 0 / 0
13.02.2015, 16:23
    #38879297
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
eNoseскачай с сайта под другим именем.
затем переименуй оба файла.
Добавлю: после скачивания неплохо еще контрольную сумму проверить, или в архиве качать - битый не распакуется.
...
Рейтинг: 0 / 0
13.02.2015, 16:45
    #38879321
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
Какой смысл разрешать обновление, если в этот момент качается новая версия?
...
Рейтинг: 0 / 0
14.02.2015, 12:42
    #38879718
seg856
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
miksoft, а как угадать, когда именно копировать новые файлы в папку со старыми?
Если в сети 200 компьютеров, то какие-то из них могут скачивать обновление в любое время, и даже ночью. Нужна безотказная система.
...
Рейтинг: 0 / 0
14.02.2015, 13:33
    #38879738
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
Как вариант: не удалять старое, а писать новое в новый файл (папку). Внутри сетки выбирать самое свежее и его накатывать.

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

Как выше писали качать во временный файл, затем переименовавать. Старый не удалять сразу, а переименовывать (не копировать), т.к. виндовс дает переименовывать открытые файлы и тот кто его открыл (т.е. к себе копирует в этот момент) будет читать из него дальше.

Допустим обновление в файле my_update.zip. Качать так
download.cmd
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
del my_update.old
del temp.tmp
* качаем в temp.tmp
wget http:\\site.my\my_update.zip -O temp.tmp
* проверяем что ошибок не было и скачалось
if not %ERRORLEVEL% == 0 goto end
if not exist temp.tmp goto end
* переименовываем
ren my_update.zip my_update.old 
ren temp.tmp my_update.zip
:end
...
Рейтинг: 0 / 0
14.02.2015, 13:53
    #38879748
seg856
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
Dima T, пробовал скопировать файл фильма с D:\ на C:\ и в процессе переименовать - не позволяет. (XP)
...
Рейтинг: 0 / 0
14.02.2015, 14:12
    #38879758
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
seg856Dima T, пробовал скопировать файл фильма с D:\ на C:\ и в процессе переименовать - не позволяет. (XP)
Тоже неплохо, пока кто-то обновляется - файл не заменить.

Добавь ожидание освобождения файла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
del my_update.old
if exist my_update.old goto end
del temp.tmp
* качаем в temp.tmp
wget http:\\site.my\my_update.zip -O temp.tmp
* проверяем что ошибок не было и скачалось
if not %ERRORLEVEL% == 0 goto end
if not exist temp.tmp goto end
* переименовываем
:wait
ren my_update.zip my_update.old 
if exist my_update.zip goto wait
ren temp.tmp my_update.zip
:end


Будет в цикле пытаться переименовать пока не переименует. Правда не очень красиво получилось, проц на 100% загрузит ожиданием.
...
Рейтинг: 0 / 0
14.02.2015, 23:41
    #38879941
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обновление программы с сайта?
Наиболее разумный подход имхо - обновление содержит в имени файла обновления (или имени подкаталога с обновлением) версию этого обновления. Клиент при обновлении выбирает файл с максимальной на текущей момент версией. А скачиваение производится в имя, не соответствующее шаблону файла обновления, и только по завершении переименуется. Схема гарантирует отсутствие конфликтов.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как организовать обновление программы с сайта? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]