Показать сообщение отдельно
Старый 05.11.2012, 02:17   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Автоапдейтер.

Если хранятся данные в файле ресурсов, то у тебя должна быть нормальная архитектура для хранения данных и индексирования адресов к данным, эдакий XML (например) заголовок, со списком данных, иерархией и т.п.
Далее если это есть, то ты будешь работать с хранилищем данных как с обыкновенной файловой системой.
Есть версии, каждая версия содержит информацию о изменениях, также есть ключевые версии, например каждая 8мая, которая имеет полный список файлов. Ключевые версии - обычно это версия которую качаешь с сайта когда качаешь полную игру. Получается что версию на сайте прийдётся обновлять не каждую версию, а лишь каждую 8ую, или сколько ты захочешь.
Далее зная текущую версию и разницу версий, находим все патчи, и затем создаём такой же xml со списком файлов, начиная со старых патчей к новым, чтобы если обновился дважды один и тот же файл, старый в итоге перезаписался новым. Когда имеем полный список, передаём данные клиенту (этот xml), и он начинает запрашивать сервер файлы по списку.
При этом если клиент не допатчился и закрыл приложение, затем пришёл позже, а там уже новый патч, то ему присылается лишь заголовки между той которую он не закончил и новым патчем, и клиент у себя уже дополняет свой патч файл (заголовки) так чтобы он был полным.
Каждый файл должен иметь также номер версии с которой он был закачан (к обновлению которому принадлежит).
Зачем это нужно?
Представь у тебя файл ресурсов с огромным заголовком тысяч файлов.
И тут ты напортачил и патч не работает. Делаем hard repair. Сервер выдаёт полный файл заголовок со списком всех файлов а также их версий. Клиент пробегается по своему списку файлов, сверяет версии, если есть расхождение вносит файл с расхождением и версию в временный заголовочный файл для последующего запроса.
После Repair'а при наличии расхождений, запросит у сервера файлы для обновления.

По сути тебе нужно разбить на явные и конкретные стадии патчинг, учитывая ВСЕ сценарии и возможность жёсткой починки.
Как заметил патчинг такого рода требует хорошую файловую систему ресурсов, без неё будет сложно реализовать хорошую систему.

Не думаю что на эту тему есть какие-то конкретные решения, т.к. оно очень зависит от специфики проекта и кучи факторов, следственно зная общие представления и задачи - тебе нужно разработать эту систему самостоятельно.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Lestar (05.11.2012)