Files
BiLauncher/doc/cpp/SeasonalPackDownloader.md
T
2026-10-11 22:32:13 +03:00

2.1 KiB

SeasonalPackDownloader

seasonalpackdownloader.h, seasonalpackdownloader.cpp

Качает один архив сезонной сборки в файл и проверяет sha256. Пак весит сотни мегабайт, поэтому пишется потоком через QSaveFile, а не собирается в памяти. Битый архив распаковывать поверх рабочей .minecraft нельзя, поэтому файл появляется на диске только после совпадения хеша.

Распаковывает пак BuildSwitcher. Экземпляр держит LauncherBackend, который и вызывает загрузку на шаге Downloading установки сезонной сборки.

download(url, targetPath, sha256, expectedSize, label)

  • targetPath — <root>/builds/<id>/.pack-r<ревизия>.zip. Если файл уже есть, он будет перезаписан: недокачанный пак с прошлой попытки не должен дожить до новой.
  • expectedSize из каталога используется для прогресса, пока сервер не сообщил настоящий размер.
  • Таймаут — 60 секунд без данных. Повторных попыток нет: если загрузка оборвалась, установку нужно начать заново.

Если загрузка уже идёт, сразу приходит failed.

Сигналы: started(label), progressChanged() (не чаще раза в 100 мс), finished(path), failed(label, message), canceled(label). Геттеры прогресса такие же, как у других установщиков.

При ошибке и несовпадении хеша файл удаляется. cancel() обрывает запрос, и canceled приходит после его завершения.


При создании этого документа использовался ИИ.