OpenMU R32 Universal Launcher Transition

Что делает патч
- Один раз заменяет старый LauncherPreview\OpenMU.Launcher.exe стабильным bootstrap.
- Ярлык и привычный способ запуска не меняются.
- Bootstrap проверяет подписанные обновления лаунчера, применяет их транзакционно и запускает UI.
- Если новый UI не подтвердил успешный старт, bootstrap автоматически возвращает предыдущую версию.
- UI обновляет Main.exe, DLL и остальные файлы только по подписанному client manifest.
- Хеши Main.exe и DLL больше не зашиты в launcher, поэтому будущий Main проходит через обычный подписанный feed.
- При несовпадении SHA-256 в логе и сообщении указывается точный файл.

Установка игроком (один раз)
1. Полностью закрыть игру и launcher.
2. Распаковать содержимое архива в корень клиента с заменой файлов.
3. Запустить прежний ярлык OpenMU Launcher.

После этого пользователь ничего отдельно не запускает: всегда открывает тот же launcher.

Важно для владельца
- Сначала загрузить SERVER_UPLOAD_OPENMU_LAUNCHER_FEED_R32_20260819.zip в каталог
  https://openmu.ru/downloads/updates/openmu/launcher/ так, чтобы manifest находился по адресу
  https://openmu.ru/downloads/updates/openmu/launcher/stable/manifest.json
- Затем разместить PLAYER_PATCH_OPENMU_R32_BOOTSTRAP_20260819.zip на сайте.
- Не переименовывать и не редактировать файлы внутри feed.
- Этот выпуск не меняет игровой server image. При следующем изменении Main.exe серверная
  проверка версии/хеша тоже должна быть выпущена согласованно с client manifest.

Диагностика
- Ошибка bootstrap: LauncherPreview\bootstrap-error.log
- Состояние и откаты bootstrap: LauncherPreview\.openmu-bootstrap\
- Лог UI launcher: стандартный launcher log в клиенте.

