Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Updater source
#1
Всем доброго! Smile

Пытался найти исходники Updatera - на C#.
Нигде не могу найти, то ссылки битые, то сайты мертвые.

Ребят, пожалуйста у кого может завалялось?

Добавлено через 1 час 21 минуту
Мне нужно было понять, как работает updater, хотел посмотреть, вообщем я нашел все, что мне нужно.
Я просто изначально не правильно начал искать.

Правильно ли я понял (ядро updater'а не смотрел):

Updater обращается к месту где лежит обнова - смотрит даты последних модификаций, если есть изменения, берет обнову..., открывает папку с игрой у клиента, - и также проверяет даты модификаций..., если изменения есть обновляет файлы ?
Ответ
#2
проверка на валидность не по дате а по контрольной сумме файла делается.
Ответ
#3
Код:
using (var md5 = MD5.Create(),
stream = File.OpenRead(filename)) {
    return md5.ComputeHash(stream);
}

?
Ответ
#4
Ага и проверка клиента может затянутся на минуты если чекать все файлы.
Ответ
#5
на сервере храним уже готовые контрольные суммы в файле, скачиваем файл и по названию файла проверяем контрольною сумму если не совпадает качаем и заменяем
Ответ
#6
как-то плохо ты искал

https://github.com/VISTALL/game-updater

Добавлено через 2 минуты
Smiler Написал:проверка на валидность не по дате а по контрольной сумме файла делается.
для ускорения сначала можно сравнивать размеры файлов и толкьо если размеры совпадают - тогда чекать по контрольным суммам, т.к. в ином случае уже понятно что файл не такой какой нужно.
Ответ
#7
flopix Написал:Ага и проверка клиента может затянутся на минуты если чекать все файлы.

в этом случае помогает опыт более опытных апдейтероделов )) например тех же 4геймов.

чекать всегда только критичные файлы для л2 это папка system , а остальное по требованию юзера (кнопка "проверить все файлы").

и не забываем что апдейтер это не защита клиента от подмены фалов Big Grin
для защиты используется другой софт.

Добавлено через 2 минуты
Gaikotsu Написал:сначала можно сравнивать размеры файлов

я бы еще дату создания дополнительно к размеру чекал , для не критичных.
и в случае расхождения проверять контрольную сумму
Ответ
#8
Gaikotsu Написал:как-то плохо ты искал

https://github.com/VISTALL/game-updater

Добавлено через 2 минуты
для ускорения сначала можно сравнивать размеры файлов и толкьо если размеры совпадают - тогда чекать по контрольным суммам, т.к. в ином случае уже понятно что файл не такой какой нужно.
чет он какой-то delphi-style с перехватами оконных сообщений и пр.
имхо - проще было сделать, используя wpf, нежели извращать с Winform-ами.

Добавлено через 5 минут
mountaineer Написал:Всем доброго! Smile

Пытался найти исходники Updatera - на C#.
Нигде не могу найти, то ссылки битые, то сайты мертвые.

Ребят, пожалуйста у кого может завалялось?

Добавлено через 1 час 21 минуту
Мне нужно было понять, как работает updater, хотел посмотреть, вообщем я нашел все, что мне нужно.
Я просто изначально не правильно начал искать.

Правильно ли я понял (ядро updater'а не смотрел):

Updater обращается к месту где лежит обнова - смотрит даты последних модификаций, если есть изменения, берет обнову..., открывает папку с игрой у клиента, - и также проверяет даты модификаций..., если изменения есть обновляет файлы ?
по сути вся минимальная проверка сводится к тому, чтобы:
1. вытащить с сервера обновлений данные с хешами файлов.
2. пробежаться по этому файлу, сравнивая данные клиента:
а) если размер разный - перекачиваем.
б) если одинаковый - получаем хеш клиентской версии файла и сравниваем с эталоном, если разные - перекачиваем.

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

ну и некоторые еще добавляют дополнительные фишки в апдейтер.
Ответ
#9
Хочу, чтобы это было без заморочек, чтобы при запуске l2.exe - запускалась проверка на наличие обновления если они существуют, об этом будет давать знать флаг на поступление обновления, при открытии клиента появится сначала окошко " мол пожалуйста подождите идет обновление клиента ну и конечно же сам процесс... ", в котором заключается следующее:

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

После успешного выполнения запускаем клиент.
Ответ
#10
mountaineer Написал:Хочу, чтобы это было без заморочек, чтобы при запуске l2.exe - запускалась проверка на наличие обновления если они существуют, об этом будет давать знать флаг на поступление обновления, при открытии клиента появится сначала окошко " мол пожалуйста подождите идет обновление клиента ну и конечно же сам процесс... ", в котором заключается следующее:

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

После успешного выполнения запускаем клиент.

это очень ненадежный алгоритм,
1 если флаг выставлять после полного обновления то : при обрыве связи перекачивать придется весь апдейт ))

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

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


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Dragon Weapon (Source) Anarchy 1 1,500 06-19-2018, 06:58 PM
Последний пост: smeli
  реализовать updater Delight 12 4,542 12-25-2017, 03:26 PM
Последний пост: BeOS
  Updater / Launcher Ave 1 2,634 05-24-2017, 01:31 PM
Последний пост: Ave
  Updater lineage HF GameAdvisor 0 1,110 07-27-2015, 11:15 AM
Последний пост: GameAdvisor
  Updater под дизайн raindew 0 1,373 04-25-2015, 10:29 AM
Последний пост: raindew
  updater Starli 1 1,537 09-08-2013, 09:04 AM
Последний пост: SoniPro
  Updater вместо l2.exe Durand 9 8,911 10-25-2012, 02:42 PM
Последний пост: Romka
  [source] host/port "в коде" izen 1 2,164 10-29-2010, 07:14 PM
Последний пост: Atlantis.Tor
  L2 Updater v2.0.2 + sources Credo 1 10,987 06-23-2010, 05:43 PM
Последний пост: VISTALL
  Updater на (Rus-of)Life Клиент Bastexses 0 2,857 04-29-2009, 10:50 AM
Последний пост: Bastexses

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)