hermes-hub/installer
ochenstarik-ui 377c567b85 fix(installer,release): находки agy с живой Windows-машины (A61)
Ветка installer/a61-live-verification (agy, коммит b0644a3) частично
пересекалась с HUB-1, частично добавляла то, чего в HUB-1 не было. Пункты
взяты по одному, дубли — нет.

## Взято

1. verify_multi_provider_router.py проверял изоляцию пути на ID "ag-w2" —
   на живой машине владельца это существующий подключённый профиль, и
   "assert not pdir.exists()" падал не из-за бага, а потому что каталог
   реального аккаунта и так был на месте (код возврата 12). ID заменён на
   заведомо не боевой "ag-probe-isolation-test".

2. HermesHubSetup.cs: CreateStartMenuShortcut/RemoveStartMenuShortcut не
   уважали HERMES_HUB_NO_REGISTRY — переменная гасила запись в реестр (A4),
   но ярлык в настоящем меню Пуск изолированные тесты всё равно писали.
   Добавлена та же проверка, что уже стоит перед записью в реестр. Заодно
   LOCALAPPDATA читается из окружения раньше SpecialFolder — расхождение
   найдено живым прогоном.

3. test_installer.py: /silent-тест линковался на venv настоящей машины
   junction'ом (Windows) или symlink'ом вместо пустых touch-файлов — раньше
   проверка живых Win32-зависимостей ничего по сути не проверяла.

4. update_manager.py: запасной перебор известных имён установщика
   (hermes-hub-setup.sh/install-linux.sh/HermesHubSetup.exe) до отката на
   .zip — подстраховка на случай расхождения определения платформы.

5. release_gate.py: --assets проверял только присутствие файлов. Добавлена
   нижняя граница размера (усечённая сборка, найдено вживую) и сверка
   SHA-256 каждого установщика с локальным checksums.txt — до всякой
   публикации. Своя реализация (agy: только HermesHubSetup.exe, только
   argparse-обвязка, несовместимая с --publication-only из HUB-1), но идея
   и обе живые находки — его. Проверено полным циклом: собран настоящий
   dist/hermes-hub-setup.sh, посчитаны настоящие контрольные суммы,
   --assets прошёл на них 12588887 байт, SHA-256 сошёлся.

## Не взято — уже есть шире в HUB-1

- security_guard.py: точечный "$HOME" в тексте команды вместо конвейера
  (диалект по команде, ${HOME}, %USERPROFILE%, fail-closed) — версия HUB-1
  шире и уже зелёная на настоящем Windows CI.
- test_a59: заглушка os.getuid без проверки ветки Windows (taskkill/wmic) —
  версия HUB-1 параметризована на обе ветки.
- Скомпилированные .exe — не переношу: пересборка на Windows после этого
  коммита, здесь compилятора нет.

Тесты: 780 -> 781 passed, 2 skipped, 4 deselected. ruff check . чисто.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 00:57:08 +07:00
..
build_installer.ps1 fix: проверка готовности всегда врала, установщик показывал зашитую версию 2026-08-24 09:47:00 +07:00
build_installer_linux.sh fix(installer): нормализация переводов строк молча зависела от нерабочего python3 2026-08-31 01:54:12 +07:00
HermesHubSetup.cs fix(installer,release): находки agy с живой Windows-машины (A61) 2026-09-04 00:57:08 +07:00
HermesHubSetup.py feat(hub): A34 восстановление подключения аккаунтов, OpenRouter, NVIDIA, удаление десктопа 2026-08-31 00:23:27 +07:00
install-linux.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00
lib_stop_running_hub.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00
README.md feat: production update feed architecture, host allowlist, and truthful release gate 2026-08-20 17:25:30 +07:00
uninstall-linux.sh fix(linux): значок .desktop-записи не рендерился; хаб нельзя было остановить 2026-09-03 22:02:43 +07:00

Hermes Hub — Installer Architecture

Canonical Windows Installer

  • Canonical Binary: HermesHubSetup.exe (built from HermesHubSetup.cs)
  • Build Script: build_installer.ps1 (compiles HermesHubSetup.cs using standard .NET Framework csc.exe present on all Windows 10/11 machines without extra toolchains).

Development & Helper Scripts

  • HermesHubSetup.py: Internal development helper script for testing installer logic in Python. Not distributed as a primary installer artifact.
  • install.ps1: Deprecated legacy bootstrap script for earlier development environments.

Testing Policy (S7)

  • Unit Tests: Must NEVER modify user Windows Registry (HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall) or Start Menu shortcuts.
  • Integration Tests: Executed against isolated sandbox mock directories.
  • Live VM Tests: Real Windows installer execution is reserved for disposable CI/VM environments.