EndlessWar Launcher
Лаунчер и апдейтер для игрового сервера EndlessWar: обновление клиента с зеркалами, несколько аккаунтов с автовходом, самообновление и встроенная самодиагностика
Desktop-лаунчер и апдейтер для игрового сервера EndlessWar (Lineage II). Скачивает и обновляет клиент игры с нескольких серверов, хранит аккаунты и запускает игру с автовходом, сам обновляется по подписанному манифесту и чинит типичные проблемы запуска. Один EXE, .NET ставить не нужно.
Старый лаунчер не умел обновлять сам себя: каждую новую версию игроки ставили вручную.
Загрузка клиента зависела от одного сервера: если он тормозил или падал, обновление срывалось целиком.
Типичные обращения в поддержку были одни и те же: Defender удалил файлы, сбились часы, зависший процесс игры держит файлы, прокси или hosts мешают соединению.
Нужно было держать несколько игровых аккаунтов в одном окне, безопасно хранить пароли и запускать игру без ручного ввода.
Лаунчер переписан с нуля на .NET 10 и WPF, перед управляемым кодом работает native C++ bootstrap, который проверяет зависимости и окружение.
Собственный движок обновлений: каталог серверов и зеркала, CRC32-проверка, LZMA-распаковка через 7-Zip, щадящие режимы для слабых ПК и плохой сети.
Самообновление по манифесту, подписанному ECDSA P-256: лаунчер сам скачивает установщик, проверяет SHA256 и ставит новую версию.
Встроенный помощник «Проблемы с запуском» и отдельный скрипт диагностики для поддержки закрывают большинство обращений без ручного разбора.
Установщик NSIS с native helper: проверка SHA256 всех файлов пакета, защита от подмены путей, аккуратное удаление без потери игры.
- 01Каталог серверов и зеркала: файл, который не скачался с одного сервера, берётся с другого; подводивший сервер уходит в конец очереди на весь сеанс
- 02Проверка файлов по CRC32 и докачка только изменённых; при смене сервера уже скачанные файлы не грузятся заново
- 03Распаковка LZMA-архивов через 7-Zip с приоритетом ниже обычного: игра и браузер не тормозят во время обновления
- 04Режим «Бережная загрузка»: по одному файлу, медленнее, но надёжнее на слабых компьютерах и нестабильной сети
- 05Щадящий режим после первого сбоя распаковки и повторные попытки с паузой; системная поломка показывается сразу, а не после десятка ошибок
- 06Обновление ждёт закрытия всех процессов игры: занятые файлы не перезаписываются и не дают ложный «повреждённый файл»
- 07Полная проверка всех файлов клиента по кнопке и запуск без проверки для опытных игроков
- 01Несколько игровых аккаунтов в одном лаунчере и несколько окон игры под разными аккаунтами одновременно
- 02Пароль хранится через Windows DPAPI отдельно для каждого аккаунта и только после успешного входа с явным согласием
- 03Токен сессии проверяется через API личного кабинета в фоне и перед запуском; недоступность кабинета не блокирует игру для сохранённого аккаунта
- 04401/403 и отзыв токена на сервере сбрасывают вход; скрытого повторного входа по сохранённому паролю нет
- 05Подпись запросов с учётом серверного времени: при расхождении часов запрос повторяется по времени сервера
- 01Лаунчер проверяет манифест при запуске и раз в 3 часа; манифест подписан ECDSA P-256, установщик принимается только с совпадающими размером и SHA256
- 02Три уровня обновления: обычное, обязательное и критическое; критическое ставится само при запуске, без «Позже» и отмены
- 03Тихая установка: лаунчер закрывается, установщик ждёт его выхода, переключает папки переименованием и снова открывает лаунчер; папка игры и настройки не трогаются
- 04Установщик NSIS с native C++ helper: проверка SHA256 всех файлов пакета, отказ от symlink, hardlink, UNC и подмены пути
- 05Поддержка Program Files и обычных папок, включая exFAT; в пользовательские папки файлы пишутся под ограниченным токеном той же учётной записи
- 06Чистое удаление: игра и неизвестные файлы остаются, удаляются только данные лаунчера текущего профиля Windows
- 01«Проблемы с запуском»: проверяет, не мешает ли Microsoft Defender клиенту, и по согласию игрока добавляет папку игры в исключения
- 02Сверка часов с сервером кабинета и исправление времени: сначала штатная синхронизация Windows, если она недоступна — время сервера
- 03Поиск зависших процессов игры, которые держат файлы и ломают проверку
- 04Структурированный журнал диагностики: только перечисленные события и числовые коды, без путей, адресов, паролей и текста исключений
- 05Скрипт диагностики для поддержки: Windows и обновления, антивирус, мешающие программы, hosts и прокси, TLS и сертификаты, DNS и порты серверов, часы, журнал лаунчера
- 06Готовый «Итог» в отчёте: какой сервер не отвечает, какой файл не распаковался и что игроку сделать, чтобы починить самому
- 01Native bootstrap до старта CLR: очищает переменные окружения CLR, проверяет SHA256-каталог зависимостей и удерживает файлы открытыми до завершения работы
- 02В Release адреса серверов берутся только из встроенного каталога: произвольные URL из настроек и соседних файлов игнорируются
- 03TLS-совместимость для старых систем и один экземпляр лаунчера на компьютер
- 01WPF без сторонних UI-библиотек, три оформления: «Закат», «Затмение» и «Луна»
- 02Новости мира с сайта и форума, плашка «Свежая новость» из личного кабинета; список обновляется, пока лаунчер открыт
- 03Аккаунты в правой панели, добавление и повторный вход в отдельной модалке; логин и пароль не живут на главном экране
- 04Настройки: папка клиента, сервер загрузки, язык клиента, закрывать лаунчер после запуска игры
- 05Прогресс загрузки с названием текущего сервера и понятными текстами ошибок, кнопки «Повторить» и «Проверить файлы»
- 06Ярлыки на кабинет, базу знаний, сайт, Discord и Telegram
- 01Единый сборщик на PowerShell: режимы Check, Dev и Release, ZIP-пакет, установщик, подписанный манифест обновления и отчёт с хешами
- 02Фиксированные версии .NET runtime и 7-Zip с проверкой SHA256; инструменты и ключи лежат вне исходников
- 03Тесты: авторизация и сбои сети, загрузка и движок, bootstrap, часы, самообновление, сессии, RuntimeTrust, установщик и очистка при удалении
- 04Изолированные UI-проверки со скриншотами всех оформлений в Dev-сборке
- 05Проверка кодировок исходников и UTF-8 во всех точках входа: русский текст в установщике и сборке не ломается
- 06Native C++ собирается с /W4 /WX и статическим CRT; обфусцированное ядро проверяется после сборки
Оценка по осям — авторская.
- Роль
- Разработка с нуля: архитектура, C#/WPF, native C++ bootstrap, движок обновлений, установщик, сборка и тесты
- Срок сборки
- 2026 – н.в.
- Статус
- Desktop-приложение
- Год
- 2026 – н.в.
- Ссылка
- endlesswar.live





