docs(task): A8 — installer must offer reinstall when Hub is already present
SetupEngine.IsInstalled is computed but never reaches the wizard UI, so the first-install flow repeats verbatim on a machine that already has Hub. Adds the reinstall screen, the mirror semantics it triggers, the list of user data that must survive it, and a /reinstall silent flag. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
20078f5ff6
commit
3c55d0c624
1 changed files with 32 additions and 0 deletions
|
|
@ -95,6 +95,38 @@ router/gui_server.py
|
|||
|
||||
Требуется точное зеркало источника: удалять файлы, которых нет в источнике, исключать `__pycache__`. **Тест:** развернуть, удалить файл из источника, развернуть снова, убедиться, что в цели его нет.
|
||||
|
||||
## P0-4bis. Установщик должен различать первую установку и переустановку
|
||||
|
||||
Требование владельца: если программа уже установлена, мастер обязан предлагать **переустановку**, а не повторять сценарий первой установки.
|
||||
|
||||
Сейчас `SetupEngine.IsInstalled` вычисляется (`HermesHubSetup.cs:86`), но **в интерфейсе не используется ни разу**. Мастер всегда показывает одни и те же экраны — «Добро пожаловать в установку» → «Параметры установки» → «Установить», — независимо от того, стоит Hub на машине или нет.
|
||||
|
||||
Требуется: при обнаружении установленной копии первый экран показывает её состояние и предлагает действия.
|
||||
|
||||
```
|
||||
Hermes Hub уже установлен
|
||||
|
||||
Установленная версия : 0.1.0 (19.08.2026)
|
||||
Версия в дистрибутиве: 0.1.1
|
||||
|
||||
[ Переустановить ] [ Удалить ] [ Отмена ]
|
||||
```
|
||||
|
||||
**Переустановка** означает точное зеркало: файлы программы и плагина приводятся в соответствие дистрибутиву, а всё, чего в новой версии нет, — удаляется. Это тот же механизм, что и в P0-4, но вызванный явной кнопкой.
|
||||
|
||||
**Что удаляется:** устаревшие модули, файлы переименованных и перенесённых пакетов, `__pycache__`, скомпилированные остатки прошлых версий.
|
||||
|
||||
**Что обязано сохраниться:** `router_profiles.yaml`, каталоги профилей с авторизацией (`agy_profiles`, `codex_profiles`, `opengo_profiles` и аналогичные), `hub_settings.json`, журналы, состояние роутера и телеметрии. Пользовательские данные лежат отдельно от программных файлов — переустановка их не касается.
|
||||
|
||||
Перед удалением показать, что именно будет удалено, хотя бы количеством файлов. Молча стирать нельзя.
|
||||
|
||||
**Тихий режим:** добавить флаг `/reinstall` с тем же поведением и кодами возврата, что и у остальных режимов. Существующий `/repair` либо привести к этой же семантике, либо явно развести: сейчас он объявлен, но отличие от обычной установки не документировано.
|
||||
|
||||
**Тесты:**
|
||||
1. В песочнице: развернуть версию A, удалить файл из источника, запустить переустановку версии B — файла в цели нет, остальные соответствуют источнику.
|
||||
2. Пользовательские данные переживают переустановку: создать профиль с `auth.json`, `router_profiles.yaml` с правкой и `hub_settings.json`, переустановить, убедиться, что всё на месте и не изменилось.
|
||||
3. Обнаружение установленной копии: при наличии `HermesHub.exe` мастер показывает экран переустановки, при отсутствии — обычный сценарий.
|
||||
|
||||
## P0-5. Команда самопроверки
|
||||
|
||||
Расширить `print_diagnostics_cli` до проверки, отвечающей на вопрос «работает ли Hub» **без запуска десктопа Hermes**:
|
||||
|
|
|
|||
Loading…
Reference in a new issue