# Установщик Inv_web Client v2 для Windows Установщик поддерживает три режима: 1. **Автоматический с RustDesk** — устанавливает клиент и RustDesk без задания собственного сервера. Фиксированный пароль можно задать или оставить пустым. 2. **Ручной с сервером RustDesk** — устанавливает клиент и RustDesk, запрашивает `Сервер ID`, `Ретранслятор`, публичный `Key` и необязательный фиксированный пароль. 3. **Без RustDesk** — устанавливает только клиент Inv_web и не изменяет уже установленный RustDesk. Во всех режимах установщик также запрашивает адрес сервера. Служебный токен пользователь больше не вводит: клиент автоматически сохраняет встроенный токен, совпадающий с токеном серверной части. После установки параметры подключения сохраняются в: ```text %APPDATA%\InvWebClientAgentV2\config.json ``` ## Требования для сборки - Windows 10/11 x64; - классический CPython 3.13 x64 с Tcl/Tk; - [Inno Setup 6](https://jrsoftware.org/isdl.php). - официальный установщик RustDesk для Windows x64. Перед сборкой переименуйте установщик RustDesk в `rustdesk.exe` и положите его в: ```text installer\prerequisites\rustdesk.exe ``` Минимальный runtime из нового Python Install Manager не подходит для сборки, поскольку не содержит Tcl/Tk. BAT-файл проверяет не только версию Python, но и наличие рабочих файлов Tcl/Tk. Если подходящий CPython 3.13 не найден, сценарий: 1. пытается установить `Python.Python.3.13` через `winget`; 2. повторно проверяет Tcl/Tk; 3. если подходящий Python всё ещё не найден, скачивает официальный полный установщик [CPython 3.13.15 x64](https://www.python.org/downloads/release/python-31315/), проверяет его SHA-256 и тихо устанавливает для текущего пользователя с компонентами Tcl/Tk и `pip`. Для резервной загрузки требуется доступ к `python.org`. Добавлять Python в `PATH` и удалять уже установленные версии не требуется. ## Сборка Запустите: ```bat build_client_agent_v2_installer_windows.bat ``` Готовый установщик: ```text dist\Inv_web_Client_Setup.exe ``` При сборке клиент формируется в формате `onedir` и целиком включается в Inno Setup. Это исключает распаковку Tcl/Tk во временный каталог `_MEI...` при запуске. Сценарий сборки отдельно проверяет наличие `_tcl_data\init.tcl` и `_tk_data\tk.tcl`, а затем запускает клиент с `--help` как smoke-тест. Поэтому установщик не будет создан с неполным или не запускающимся Tkinter. Для тихой установки и настройки службы RustDesk мастер запрашивает права администратора. Клиент устанавливается в каталог: ```text %LOCALAPPDATA%\Programs\Inv_web Client ``` Сценарий настройки проверяет, что адрес ID-сервера, ретранслятор и ключ были фактически сохранены RustDesk, после чего перезапускает его службу. Диагностический журнал установки RustDesk сохраняется здесь: ```text %ProgramData%\Inv_web Client\rustdesk-install.log ``` Перед обновлением сценарий автоматически закрывает уже открытое пользовательское окно RustDesk, не затрагивая процесс службы. Он ожидает полного завершения тихой установки, но самостоятельно закрывает появившееся окно RustDesk, поэтому оно не задерживает установщик клиента. Для службы используется только системная копия из `Program Files`; служба с устаревшим или некорректным путём пересоздаётся.