018
Archive 018Desktop-приложение

EndlessWar Launcher

Лаунчер и апдейтер для игрового сервера EndlessWar: обновление клиента с зеркалами, несколько аккаунтов с автовходом, самообновление и встроенная самодиагностика

tools · desktop

Главный экран, оформление «Закат»: новости мира и список аккаунтов
01 /О проекте

Desktop-лаунчер и апдейтер для игрового сервера EndlessWar (Lineage II). Скачивает и обновляет клиент игры с нескольких серверов, хранит аккаунты и запускает игру с автовходом, сам обновляется по подписанному манифесту и чинит типичные проблемы запуска. Один EXE, .NET ставить не нужно.

Сайт игры

02 /Задача

Старый лаунчер не умел обновлять сам себя: каждую новую версию игроки ставили вручную.

Загрузка клиента зависела от одного сервера: если он тормозил или падал, обновление срывалось целиком.

Типичные обращения в поддержку были одни и те же: Defender удалил файлы, сбились часы, зависший процесс игры держит файлы, прокси или hosts мешают соединению.

Нужно было держать несколько игровых аккаунтов в одном окне, безопасно хранить пароли и запускать игру без ручного ввода.

03 /Решение

Лаунчер переписан с нуля на .NET 10 и WPF, перед управляемым кодом работает native C++ bootstrap, который проверяет зависимости и окружение.

Собственный движок обновлений: каталог серверов и зеркала, CRC32-проверка, LZMA-распаковка через 7-Zip, щадящие режимы для слабых ПК и плохой сети.

Самообновление по манифесту, подписанному ECDSA P-256: лаунчер сам скачивает установщик, проверяет SHA256 и ставит новую версию.

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

Установщик NSIS с native helper: проверка SHA256 всех файлов пакета, защита от подмены путей, аккуратное удаление без потери игры.

04 /⬇️ Движок обновлений
  1. 01Каталог серверов и зеркала: файл, который не скачался с одного сервера, берётся с другого; подводивший сервер уходит в конец очереди на весь сеанс
  2. 02Проверка файлов по CRC32 и докачка только изменённых; при смене сервера уже скачанные файлы не грузятся заново
  3. 03Распаковка LZMA-архивов через 7-Zip с приоритетом ниже обычного: игра и браузер не тормозят во время обновления
  4. 04Режим «Бережная загрузка»: по одному файлу, медленнее, но надёжнее на слабых компьютерах и нестабильной сети
  5. 05Щадящий режим после первого сбоя распаковки и повторные попытки с паузой; системная поломка показывается сразу, а не после десятка ошибок
  6. 06Обновление ждёт закрытия всех процессов игры: занятые файлы не перезаписываются и не дают ложный «повреждённый файл»
  7. 07Полная проверка всех файлов клиента по кнопке и запуск без проверки для опытных игроков
05 /👤 Аккаунты и вход
  1. 01Несколько игровых аккаунтов в одном лаунчере и несколько окон игры под разными аккаунтами одновременно
  2. 02Пароль хранится через Windows DPAPI отдельно для каждого аккаунта и только после успешного входа с явным согласием
  3. 03Токен сессии проверяется через API личного кабинета в фоне и перед запуском; недоступность кабинета не блокирует игру для сохранённого аккаунта
  4. 04401/403 и отзыв токена на сервере сбрасывают вход; скрытого повторного входа по сохранённому паролю нет
  5. 05Подпись запросов с учётом серверного времени: при расхождении часов запрос повторяется по времени сервера
06 /🔁 Самообновление и установщик
  1. 01Лаунчер проверяет манифест при запуске и раз в 3 часа; манифест подписан ECDSA P-256, установщик принимается только с совпадающими размером и SHA256
  2. 02Три уровня обновления: обычное, обязательное и критическое; критическое ставится само при запуске, без «Позже» и отмены
  3. 03Тихая установка: лаунчер закрывается, установщик ждёт его выхода, переключает папки переименованием и снова открывает лаунчер; папка игры и настройки не трогаются
  4. 04Установщик NSIS с native C++ helper: проверка SHA256 всех файлов пакета, отказ от symlink, hardlink, UNC и подмены пути
  5. 05Поддержка Program Files и обычных папок, включая exFAT; в пользовательские папки файлы пишутся под ограниченным токеном той же учётной записи
  6. 06Чистое удаление: игра и неизвестные файлы остаются, удаляются только данные лаунчера текущего профиля Windows
07 /🩺 Помощник и диагностика
  1. 01«Проблемы с запуском»: проверяет, не мешает ли Microsoft Defender клиенту, и по согласию игрока добавляет папку игры в исключения
  2. 02Сверка часов с сервером кабинета и исправление времени: сначала штатная синхронизация Windows, если она недоступна — время сервера
  3. 03Поиск зависших процессов игры, которые держат файлы и ломают проверку
  4. 04Структурированный журнал диагностики: только перечисленные события и числовые коды, без путей, адресов, паролей и текста исключений
  5. 05Скрипт диагностики для поддержки: Windows и обновления, антивирус, мешающие программы, hosts и прокси, TLS и сертификаты, DNS и порты серверов, часы, журнал лаунчера
  6. 06Готовый «Итог» в отчёте: какой сервер не отвечает, какой файл не распаковался и что игроку сделать, чтобы починить самому
08 /🔒 Безопасность
  1. 01Native bootstrap до старта CLR: очищает переменные окружения CLR, проверяет SHA256-каталог зависимостей и удерживает файлы открытыми до завершения работы
  2. 02В Release адреса серверов берутся только из встроенного каталога: произвольные URL из настроек и соседних файлов игнорируются
  3. 03TLS-совместимость для старых систем и один экземпляр лаунчера на компьютер
09 /🎨 Интерфейс
  1. 01WPF без сторонних UI-библиотек, три оформления: «Закат», «Затмение» и «Луна»
  2. 02Новости мира с сайта и форума, плашка «Свежая новость» из личного кабинета; список обновляется, пока лаунчер открыт
  3. 03Аккаунты в правой панели, добавление и повторный вход в отдельной модалке; логин и пароль не живут на главном экране
  4. 04Настройки: папка клиента, сервер загрузки, язык клиента, закрывать лаунчер после запуска игры
  5. 05Прогресс загрузки с названием текущего сервера и понятными текстами ошибок, кнопки «Повторить» и «Проверить файлы»
  6. 06Ярлыки на кабинет, базу знаний, сайт, Discord и Telegram
10 /🛠️ Сборка и качество
  1. 01Единый сборщик на PowerShell: режимы Check, Dev и Release, ZIP-пакет, установщик, подписанный манифест обновления и отчёт с хешами
  2. 02Фиксированные версии .NET runtime и 7-Zip с проверкой SHA256; инструменты и ключи лежат вне исходников
  3. 03Тесты: авторизация и сбои сети, загрузка и движок, bootstrap, часы, самообновление, сессии, RuntimeTrust, установщик и очистка при удалении
  4. 04Изолированные UI-проверки со скриншотами всех оформлений в Dev-сборке
  5. 05Проверка кодировок исходников и UTF-8 во всех точках входа: русский текст в установщике и сборке не ломается
  6. 06Native C++ собирается с /W4 /WX и статическим CRT; обфусцированное ядро проверяется после сборки
11 /Project DNA
Complexity0
Design0
Backend0
Automation0

Оценка по осям — авторская.

Роль
Разработка с нуля: архитектура, C#/WPF, native C++ bootstrap, движок обновлений, установщик, сборка и тесты
Срок сборки
2026 – н.в.
Статус
Desktop-приложение
Год
2026 – н.в.
Ссылка
endlesswar.live

Технологии

C# / .NET 10WPFC++ (Win32)NSISPowerShell7-Zip / LZMAECDSA P-256DPAPIObfuscar