Lineage 2 Patch Downloader

Lineage 2 Patch Downloader Version_01-07-06

Нет прав для скачивания
Список изменений по файлам:

> Версия 01.07.01 и выше сделаны с помощью ИИ.


  • обновлена ссылка на список файлов для NCSoft Japan;

  • ядро загрузчика переписано на поэтапный конвейер (загрузка -> сохранение -> распаковка): у каждого этапа свой менеджер и один общий координатор;
  • добавлены аргументы командной строки для всех настроек - теперь .jar можно запускать вообще без "Main.ini";
  • добавлен новый источник "AKUMU" (зеркало akumu.ru): список файлов берётся из ".torrent" нужной папки, с поддержкой проверки Anubis (proof-of-work);
  • добавлен "-source_compare" - сверка патча с уже скачанной копией до начала загрузки;
  • распаковщики (LZMA / ZIP) разнесены по отдельным классам;

  • добавлены режимы загрузки "-download_mode": ALL_MEMORY / HYBRID / ALL_TEMP. В HYBRID мелкие файлы остаются в памяти, а крупные уходят во временные файлы;
  • добавлены "-temp_dir" и "-temp_threshold" для управления временными файлами;
  • добавлены потоковая загрузка и потоковая распаковка - большой файл большиком;
  • добавлена асинхронная проверка (хеш / размер) уже после сохранения файла;
  • добавлена защита от зарезервированных имён устройств Windows (NUL, CON, COM1 ...) в списке файлов;

  • файлы больше 2 ГБ теперь всегда сохраняются через временный файл (массив байт не вмещает больше Integer.MAX_VALUE);
  • если сервер игнорирует заголовок "Range" и отвечает '200' при загрузке по частям - соединение отменяется, а не выкачивается файл целиком заново;

  • добавлен "-last_version" - спрашивает у сервера обновлений NCSoft текущую версию патча и завершает работу. Ничего не качает и не требует файла настроек;
  • добавлены хосты обновлений для Кореи и Тайваня;
  • исправлено падение при разборе конфига, если ключ типа "File" отсутствует (ConfigFieldParser);

  • добавлен "README.md";
  • добавлены примеры запуска: "set_java.bat" (выбор используемой Java) + "example_download_nc_japan.bat", "example_download_akumu.bat", "example_last_version.bat";
  • убраны из-под контроля версий файлы IDE / утилит (qodana.yaml, *.iml, ".idea" кроме artifacts);

  • исправлена сборка артефакта - папка "work" теперь кладётся именно папкой, а не рассыпается содержимым в корень сборки;
RU:
Список изменений по файлам:


  • Исправлена ошибка парсинга списка файлов для лаунчера типа UpNovaLauncher;


  • В случае если запрос на HTTP не возвращает код '200' - логируем как ошибку;


  • добавлена обработка ошибок в проверку файлов, из-за чего она могла не корректно завершиться;
Список изменений по файлам:


  • Переработан парсинг Конфигурационных файлов;
  • Переработаны парсеры из строки (String) в значение;

  • Удалена информация для отладки;
  • если конфиг. файл не существует - игнорируем;
  • добавлено время ожидания подключения для http запроса;

  • Вызов "onLoad" при завершении парсинга и присвоении значений;
[Что не попало в список изменений]:
  • Добавлено 'pause' в конце .bat файла чтобы избежать его закрытия после выполнения;
  • Удалено поле [ansi_supported];
* LOGGING_FILE_CHECK_IN_CONDITION = false
[Версия 01.03.02]:
* Улучшение HTTP подключения;

[Версия 01.04.01]:
* Поддержка списка файлов с UpNovaLauncher;
* Переименование "Decode" в "Decompress";
* Добавлен "ArchiveType" enum для корректного понимания какой тип архива представлен в файле;
* Разделение классов разархивации;

[Версия 01.04.02]:
* Добавление новых алгоритмов хэширования;
* Поддержка "Параметров запуска";
* Исправление формирования списка файлов для UpNovaLauncher;

[Версия 01.05.01]:
* Переименование CheckSumManager в HashingManager;
* Разделение классов для формирование hash-сумы;
* Удалены неиспользуемые парметры;
* Добавлен параметр "UP_NOVA_LAUNCHER_PATCH_PATH" для указания навзвания ноды "PatchPath" из файла UpdateConfig.xml при использовании UpNovaLauncher;
* Добавлен параметр "THREAD_COUNT_FOR_FILE_CHECK_IN_CONDITION" для разделения колличества проверяемых файлов при восстановлении загрузки;
* Добавлен параметр "LOGGING_FILE_CHECK_IN_CONDITION" который будет показывать прогресс формирование списка исключенных из повтороной загруки файлов;
* Переписан класс "ConditionRestoreDownload" из работы "Проверяем все файлы и после проверяем список загрузки" на "Сравниваем файлы из списка загрузки с уже имеющимися";
* Исправление орко-графических ошибок;
* Добавлено "Тупое" логгирование;
* Добавлено использование "toLowerCase" в места где идет запись в словарь (map);
* Добавлена замена "нелегальных" символов;

[Версия 01.05.02]:
* Удалены неиспользуемые парметры;
* Некоторые парметры по-умолчанию были заменены со значения "true" на значение "false"

[Версия 01.05.03]:
* Исправлено деление на 0;

[Версия 01.05.04]:
* параметр запуска, который включает логгирование формирования списка файлов, которые не следует загружать;

[Версия 01.05.05]:
* Исправлено деление на 0;
* Исправление орко-графических ошибок;
* Если include-filter пустой - возвращаем "true" при проверке файлов для загрузки;
* Уменьшено колличество потоков (тредов) если доступное колличество для загрузки файлов меньше, чем колличество запрошеных потоков (тредов);
  • Добавлен параметр "max_download_attempts" для перезапуска загрузки файла, если подключение не стабильно;
  • Переписан класс "LinkHolder":

  • Разделен на FileInfoHolder и LinkInfoHolder;
  • FileInfoHolder содержит информацию о разделенных файлах (которые дадут исходный файл при обьединении);
  • LinkInfoHolder содержит информацию о ссылках, http статусу и размеру загружаемых данных по http;
  • LinkInfoHolder может быть null при условии, если FileInfoHolder содержит разделенные блоки;

  • В AbstractQueueManager _threadStatus изменен с типа boolean на тип AtomicBoolean (спасибо BACEK);
  • Дополнительные проверки в DecodeManager для входящего массива данных;
  • Переделаны некоторые методы в классе NcTaiwanLinkGenerator и NcKoreanLinkGenerator для упрощения читабельности кода и лучшей производительности;
Пример использования [max_download_attempts]:
1722856269019-png.76556

1722856279401-png.76557
  • Фильтр "игнорирования файлов" будет игнорировать указание "*" в "загружаемые файлы";
  • exclude_filter > include_filter;
  • Реализация многопоточности;
  • Изменение некоторых Logger на System.out;
  • Тип файлов "FILE_TYPE.UNK_04" тоже обозначен как возможно "разделенный";
  • Добавлен параметр, который логирует загруженные файлы в консоли как у acmi;
* include filter поддерживает несколько значений; (добавлен метод "optional" в ICondition)
* в классе FileUtils переменная "recursive" была заменена на "depth" (глубина);
* для проверки одного символа, были заменены методы "equalsIgnoreCase("символ")" на "charAt[0] == 'символ'";

[include filter example:]
1722705802200-png.76520
* Исправлены ссылки для Американской Версии;
Назад
Сверху Снизу