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

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.361-dc1c4ad   Просмотр изменений

Размещено

dc1c4ad [kotishe] Fix first run folders detect, Finally
08e1b6d [kotishe] Add trade and GM online status messages


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

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

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

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

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

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

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

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

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

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

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

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

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