Сообщений: 116
Тем: 14
Зарегистрирован: May 2015
Репутация:
-35
12-07-2015, 04:04 AM
(Сообщение последний раз редактировалось: 12-07-2015, 05:25 AM mountaineer.)
Всем доброго!
Пытался найти исходники Updatera - на C#.
Нигде не могу найти, то ссылки битые, то сайты мертвые.
Ребят, пожалуйста у кого может завалялось?
Добавлено через 1 час 21 минуту
Мне нужно было понять, как работает updater, хотел посмотреть, вообщем я нашел все, что мне нужно.
Я просто изначально не правильно начал искать.
Правильно ли я понял (ядро updater'а не смотрел):
Updater обращается к месту где лежит обнова - смотрит даты последних модификаций, если есть изменения, берет обнову..., открывает папку с игрой у клиента, - и также проверяет даты модификаций..., если изменения есть обновляет файлы ?
Сообщений: 526
Тем: 28
Зарегистрирован: Oct 2009
Репутация:
7,209
проверка на валидность не по дате а по контрольной сумме файла делается.
Сообщений: 116
Тем: 14
Зарегистрирован: May 2015
Репутация:
-35
Код: using (var md5 = MD5.Create(),
stream = File.OpenRead(filename)) {
return md5.ComputeHash(stream);
}
?
Сообщений: 561
Тем: 44
Зарегистрирован: Sep 2011
Репутация:
412
Ага и проверка клиента может затянутся на минуты если чекать все файлы.
Сообщений: 205
Тем: 14
Зарегистрирован: Sep 2012
Репутация:
272
на сервере храним уже готовые контрольные суммы в файле, скачиваем файл и по названию файла проверяем контрольною сумму если не совпадает качаем и заменяем
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
12-07-2015, 11:04 PM
(Сообщение последний раз редактировалось: 12-07-2015, 11:07 PM Gaikotsu.)
как-то плохо ты искал
https://github.com/VISTALL/game-updater
Добавлено через 2 минуты
Smiler Написал:проверка на валидность не по дате а по контрольной сумме файла делается. для ускорения сначала можно сравнивать размеры файлов и толкьо если размеры совпадают - тогда чекать по контрольным суммам, т.к. в ином случае уже понятно что файл не такой какой нужно.
Сообщений: 526
Тем: 28
Зарегистрирован: Oct 2009
Репутация:
7,209
12-08-2015, 09:02 AM
(Сообщение последний раз редактировалось: 12-08-2015, 09:04 AM Smiler.)
flopix Написал:Ага и проверка клиента может затянутся на минуты если чекать все файлы.
в этом случае помогает опыт более опытных апдейтероделов )) например тех же 4геймов.
чекать всегда только критичные файлы для л2 это папка system , а остальное по требованию юзера (кнопка "проверить все файлы").
и не забываем что апдейтер это не защита клиента от подмены фалов
для защиты используется другой софт.
Добавлено через 2 минуты
Gaikotsu Написал:сначала можно сравнивать размеры файлов
я бы еще дату создания дополнительно к размеру чекал , для не критичных.
и в случае расхождения проверять контрольную сумму
Сообщений: 74
Тем: 1
Зарегистрирован: Aug 2015
Репутация:
119
12-08-2015, 09:58 AM
(Сообщение последний раз редактировалось: 12-08-2015, 10:04 AM BeOS.)
Gaikotsu Написал:как-то плохо ты искал
https://github.com/VISTALL/game-updater
Добавлено через 2 минуты
для ускорения сначала можно сравнивать размеры файлов и толкьо если размеры совпадают - тогда чекать по контрольным суммам, т.к. в ином случае уже понятно что файл не такой какой нужно. чет он какой-то delphi-style с перехватами оконных сообщений и пр.
имхо - проще было сделать, используя wpf, нежели извращать с Winform-ами.
Добавлено через 5 минут
mountaineer Написал:Всем доброго!
Пытался найти исходники Updatera - на C#.
Нигде не могу найти, то ссылки битые, то сайты мертвые.
Ребят, пожалуйста у кого может завалялось?
Добавлено через 1 час 21 минуту
Мне нужно было понять, как работает updater, хотел посмотреть, вообщем я нашел все, что мне нужно.
Я просто изначально не правильно начал искать.
Правильно ли я понял (ядро updater'а не смотрел):
Updater обращается к месту где лежит обнова - смотрит даты последних модификаций, если есть изменения, берет обнову..., открывает папку с игрой у клиента, - и также проверяет даты модификаций..., если изменения есть обновляет файлы ? по сути вся минимальная проверка сводится к тому, чтобы:
1. вытащить с сервера обновлений данные с хешами файлов.
2. пробежаться по этому файлу, сравнивая данные клиента:
а) если размер разный - перекачиваем.
б) если одинаковый - получаем хеш клиентской версии файла и сравниваем с эталоном, если разные - перекачиваем.
плюс к этому файлы надо разделять на критические для работы игры и нет. критические проверять каждый раз при старте клиента, остальные только при полной проверке.
ну и некоторые еще добавляют дополнительные фишки в апдейтер.
Сообщений: 116
Тем: 14
Зарегистрирован: May 2015
Репутация:
-35
Хочу, чтобы это было без заморочек, чтобы при запуске l2.exe - запускалась проверка на наличие обновления если они существуют, об этом будет давать знать флаг на поступление обновления, при открытии клиента появится сначала окошко " мол пожалуйста подождите идет обновление клиента ну и конечно же сам процесс... ", в котором заключается следующее:
Когда запускаем клиент, updater смотрит выставлен ли флаг на обнову, если выставлен и равен текущей обнове мы не запускаем updater, если не выставлен или отсутствует или больше текущей обновы, смотрим текущее обновление, пытаемся выставить если ничего не выходит, перезаливаем весь патч...
После успешного выполнения запускаем клиент.
Сообщений: 526
Тем: 28
Зарегистрирован: Oct 2009
Репутация:
7,209
mountaineer Написал:Хочу, чтобы это было без заморочек, чтобы при запуске l2.exe - запускалась проверка на наличие обновления если они существуют, об этом будет давать знать флаг на поступление обновления, при открытии клиента появится сначала окошко " мол пожалуйста подождите идет обновление клиента ну и конечно же сам процесс... ", в котором заключается следующее:
Когда запускаем клиент, updater смотрит выставлен ли флаг на обнову, если выставлен и равен текущей обнове мы не запускаем updater, если не выставлен или отсутствует или больше текущей обновы, смотрим текущее обновление, пытаемся выставить если ничего не выходит, перезаливаем весь патч...
После успешного выполнения запускаем клиент.
это очень ненадежный алгоритм,
1 если флаг выставлять после полного обновления то : при обрыве связи перекачивать придется весь апдейт ))
2 если выставлять флаг до успешного обновления, то при обрыве связи апдейт просто может быть не выкачан полностью.
и в обои случаях без проверки контрольной суммы нет возможности проверить файл на актуальность даже если флаг выставлен актуальный(вдруг его тупо удалили , или стерли в нем кусок и клиент не запускается).
|