Перейти к содержанию

2 изображения

Информация о файле

Запустите лаунчер, выберите папку с игрой или закиньте в папку с клиентом, обновите клиент и играйте!

 


 

Launch the launcher, select the game folder or place it into the client folder, update the client, and play!

 

 

Логическая схема исходников

  • Точка входа и однократный запуск. Program.Main инициализирует WinForms, проверяет необходимость применения уже скачанного обновления лаунчера через LauncherUpdateApplier.TryApplyUpdate, затем запускает форму только если SingleApplication.Run подтверждает отсутствие второго экземпляра.

  • Главная форма (Form1) как оркестратор. В конструкторе создаются клиент HTTP, логгер, проверяющие/скачивающие компоненты (Hashs, Update, Installer), таймер статуса сервера и иконка в трее; также производится захват исходных ресурсов и настройка DPI.
    При показе формы выполняется стартовая цепочка: проверка расположения игры, при необходимости полный клиентский апдейт “first_moon_rising”, проверка флага неудачного обновления, затем автообновление самого лаунчера через LauncherUpdater; если всё в порядке — показ окна и периодическое обновление статуса сервера.

  • Проверка целостности и скачивание патчей. Hashs.NeedToUpdateAsync загружает списки контрольных хэшей для клиентских и системных файлов, сравнивает их с локальными и возвращает перечень архивов, требующих загрузки, параллельно обновляя прогресс-бар и лог.
    Update.DownloadFilesAsync принимает список архивов, качает их в целевую папку по построенному URL, отображает прогресс и сообщает результаты форме.
    Form1.StartGameAsync связывает оба шага: при необходимости качает патчи, распаковывает их в system, удаляет временные архивы и запускает L2.exe, сохраняя и восстанавливая статус сервера в UI.

  • Установка/развёртывание лаунчера. Installer проверяет наличие типовых игровых папок, при отсутствии запрашивает у пользователя путь, скачивает свежий l2launcher.exe с сервера обновлений, создаёт ярлык на рабочем столе и запускает установленный экземпляр.
    Константы путей, URL и имён пакетов/ресурсов сосредоточены в LauncherConfiguration.

  • Автообновление самого лаунчера. LauncherUpdater сравнивает локальную и удалённую версии, при наличии апдейта скачивает новый бинарник во временную папку, проверяет его версию и запусает новый процесс с аргументами для замены, помечая флагом launcher_update_pending.

  • Сетевые утилиты и HTTP. LauncherHttpClient создаёт единый HttpClient с поддержкой прокси и таймаутом 30 секунд, используемый всеми сетевыми операциями.
    Tools.GetServerLatency проверяет доступность сервера по TCP и возвращает пинг в миллисекундах для отображения статуса онлайн.

  • Управление окном и пользователем. В Form1 реализованы обработчики для ссылок/кнопок, логирование исключений, обновление текста статуса в UI, работа с треем и масштабирование интерфейса под DPI, а также проверка флага _forceExit и запрос пользовательского сценария закрытия (выход или сворачивание в трей).

Использованные команды

  • Просмотр структуры проекта и ключевых файлов: ls, ls l2launcher для ориентировки по каталогам.

  • Чтение исходников с нумерацией строк: nl -ba l2launcher/Program.cs, nl -ba l2launcher/Form1.cs, nl -ba l2launcher/lnchr/Hashs.cs, nl -ba l2launcher/lnchr/Update.cs, nl -ba l2launcher/lnchr/LauncherUpdater.cs, nl -ba l2launcher/LauncherConfiguration.cs, nl -ba l2launcher/lnchr/Http/LauncherHttpClient.cs, nl -ba l2launcher/lnchr/Install.cs, nl -ba l2launcher/lnchr/Tools.cs, nl -ba l2launcher/SingleApplication.cs.{line_range_start=1 line_range_end=27 terminal_chunk_id=C:nl -ba l2launcher/Program.cs | sed -n '1,200p'}{line_range_start=1 line_range_end=252 terminal_chunk_id=C:nl -ba l2launcher/Form1.cs | sed -n '1,260p'}{line_range_start=260 line_range_end=560 terminal_chunk_id=C:nl -ba l2launcher/Form1.cs | sed -n '260,560p'}{line_range_start=560 line_range_end=1108 terminal_chunk_id=C:nl -ba l2launcher/Form1.cs | sed -n '560,1120p'}{line_range_start=1 line_range_end=210 terminal_chunk_id=C:nl -ba l2launcher/lnchr/Hashs.cs | sed -n '1,240p'}{line_range_start=1 line_range_end=92 terminal_chunk_id=C:nl -ba l2launcher/lnchr/Update.cs | sed -n '1,220p'}{line_range_start=1 line_range_end=292 terminal_chunk_id=C:nl -ba l2launcher/lnchr/LauncherUpdater.cs | sed -n '1,320p'}{line_range_start=1 line_range_end=39 terminal_chunk_id=C:nl -ba l2launcher/LauncherConfiguration.cs | sed -n '1,200p'}{line_range_start=1 line_range_end=33 terminal_chunk_id=C:nl -ba l2launcher/lnchr/Http/LauncherHttpClient.cs | sed -n '1,200p'}{line_range_start=1 line_range_end=203 terminal_chunk_id=C:nl -ba l2launcher/lnchr/Install.cs | sed -n '1,240p'}{line_range_start=1 line_range_end=82 terminal_chunk_id=C:nl -ba l2launcher/lnchr/Tools.cs | sed -n '1,200p'}{line_range_start=1 line_range_end=181 terminal_chunk_id=C:nl -ba l2launcher/SingleApplication.cs | sed -n '1,200p'}


Что нового в версии 1.1.49.357-d543c84   Просмотр изменений

Размещено

4a98bb1  Использовать активацию через один экземпляр
b6193e7  Изменить некоторые элементы дизайна
f4d59a3  Исправить ссылки
c502f30  Обрабатывать заблокированные файлы при полном обновлении клиента
d973784  Исправить неоднозначность таймера в Form1
b181cc2  Добавить первый поток обновления клиента (moon rising refresh flow)
0cc2d13  Добавить периодическое обновление статуса сервера
cc536d4  Сделать определение папки клиента нечувствительным к регистру
fa26d73  Отключить invariant globalization в лаунчере
b04d53b  Добавить отчёт по аудиту безопасности
36e5852  Обрабатывать null-ситуации при создании ярлыка
234807e  Обрабатывать возможный null пути в установщике
5ceae2e  Удалить зависимость от COM для ярлыков
79f270f  Центрировать лаунчер после изменения экрана
4b3feda  Добавить рабочий процесс установки лаунчера
e928b9c  Улучшить обработку системных обновлений
9b30baf  Использовать HTTPS
7741a35  Скрывать окно лаунчера во время обновлений
f716c44  Логировать извлечённые файлы клиента при обновлении
3fc7340  Улучшить логирование обновлений лаунчера
b4d1064  Убрать вывод временных меток в статус-лейбле
55f6b63  Ограничить шум логов прогресса лаунчера
2a12d2c  Обрабатывать частичные совпадения версий при обновлениях лаунчера


Обратная связь

Рекомендуемые комментарии

Комментариев нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Добавить комментарий...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...