89 lines
5.0 KiB
Markdown
89 lines
5.0 KiB
Markdown
# Установщик 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`; служба с устаревшим или некорректным путём пересоздаётся.
|