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

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

Размещено

db3ca27 Попытка исправить DPI
e76332b Масштабирование ресурсов лаунчера с учетом изменений DPI
0fbecfb Улучшение масштабирования лаунчера при высоком DPI
f99d0f9 Исправление обновления пользовательского имени
fadcac6 Отмена "Улучшение логирования установщика для загрузок"
54e92c0 Улучшение логирования установщика для загрузок
46b1870 Исправление Top
d722f91 Указание идентификатора среды выполнения win-x64
9061b18 Реализация тестовой публикации
b1d0b4e Добавление отсутствующих свойств ресурсов для значков
f04f235 Удаление загрузки запуска dsetup
fe338db Добавление Top
f4bec08 Улучшение обнаружения одного экземпляра для переименованного лаунчера
5c0eaf1 Добавление кнопок социальных сетей
91d3658 Обработка необязательных записей хеша без перезаписи пользовательских файлов
feaf0ea Отображение 'нет' при отсутствие онлайн-пользователей
dc1c4ad Исправлено обнаружение папок при первом запуске, наконец-то
08e1b6d Добавлены сообщения о статусе торговли и GM в сети
4a98bb1 Использование активации одного экземпляра
b6193e7 Изменение некоторых элементов дизайна
f4d59a3 Исправление ссылок


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

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

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

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

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

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

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

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

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

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

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

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

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