Сборка Desktop (Windows)¶
Инструкция для разработчика по сборке Shiva VPN Desktop под Windows.
Репозиторий: git@git.karmann.tech:vpn/desktop-alpha.git
Требования: Windows 10/11 x64, ~20 GB свободного места
Шаг 1 — Visual Studio Build Tools¶
Скачай и установи Visual Studio Build Tools 2022:
https://visualstudio.microsoft.com/downloads/ → "Build Tools for Visual Studio 2022"
При установке выбери компоненты:
- ✅ Desktop development with C++ (обязательно — включает MSVC v143 и Windows SDK)
После установки добавь MSBuild в PATH:
Это самый долгий шаг
Установка занимает ~10-20 минут. Без неё build_windows_modules.sh не выполнится.
Шаг 2 — Базовые инструменты¶
Открой PowerShell от администратора и выполни:
winget install --id Rustlang.Rustup
winget install --id GoLang.Go
winget install --id OpenJS.NodeJS.LTS
winget install -e --id LLVM.LLVM
winget install -e --id NASM.NASM
winget install -e --id GnuWin32.Make
winget install --id Microsoft.EdgeWebView2Runtime
После установки GNU Make добавь в PATH:
Шаг 3 — protobuf¶
- Скачай ZIP с https://github.com/protocolbuffers/protobuf/releases — файл
protoc-*-win64.zip - Распакуй, например в
C:\Users\<ИМЯ>\protoc\ - Задай переменную окружения:
Шаг 4 — Git for Windows¶
Скачай и установи с https://git-scm.com/download/win
Нужен для Git Bash — все скрипты сборки запускаются через него.
Шаг 5 — Перезагрузи систему¶
Чтобы все PATH-переменные применились.
Шаг 6 — Клонируй репозиторий и инициализируй субмодули¶
Открой Git Bash и выполни:
git clone git@git.karmann.tech:vpn/desktop-alpha.git
cd desktop-alpha
# Инициализируй субмодули (xray-core, libwfp, windows-libraries)
git submodule update --init --recursive
Субмодули обязательны
Репозиторий содержит три git-субмодуля:
third-party/xray-core— исходники Xraythird-party/windows/libwfp— Windows Filtering Platformthird-party/windows/windows-libraries— вспомогательные Windows библиотеки
Без --recursive build_xray.sh и build_windows_modules.sh упадут с ошибкой.
Доступ к репозиторию
Нужен SSH-ключ с доступом к GitLab. Передай публичный ключ zardes.
Шаг 7 — Настрой Rust toolchain¶
В Git Bash:
# Установи stable-msvc как toolchain по умолчанию (требование Tauri для Windows)
rustup default stable-msvc
# Добавь target для 64-bit Windows
rustup target add x86_64-pc-windows-msvc
Note
Скрипт сборки использует cargo +stable. Tauri на Windows требует именно stable-msvc — без этого линковка упадёт даже при наличии MSVC.
Источник: v2.tauri.app/start/prerequisites
Шаг 8 — Установи cargo-get¶
Нужен для определения версии из Cargo.toml в начале build_release.sh.
Шаг 9 — Собери third-party зависимости¶
В Git Bash из папки desktop-alpha/:
# Скачивает wintun 0.14.1 в dist/wintun/
bash third-party/install_wintun.sh
# Собирает winfw.dll через MSBuild (нужен msbuild.exe в PATH)
bash third-party/build_windows_modules.sh
# Собирает xray-core + скачивает geoip.dat / geosite.dat
bash third-party/build_xray.sh
Что делает каждый скрипт:
| Скрипт | Что делает | Результат |
|---|---|---|
install_wintun.sh |
Скачивает wintun 0.14.1 с wintun.net | dist/wintun/ |
build_windows_modules.sh |
Собирает C++ файрвол через MSBuild | dist/winfw.dll |
build_xray.sh |
Собирает xray из исходников + geoip | dist/xray/ |
Шаг 10 — Сборка¶
Скрипт автоматически:
- Собирает Rust workspace (
cargo +stable build --release) - Ставит npm-зависимости (
npm installвshiva-app/) - Запускает Tauri bundler с NSIS
- Копирует готовый
.exeвdist-installer/
Готовый установщик будет в:
Решение проблем¶
| Ошибка | Причина | Решение |
|---|---|---|
msbuild: not found |
MSBuild не в PATH | Добавь C:\...\BuildTools\MSBuild\Current\Bin в PATH |
protoc: not found |
Переменная PROTOC не задана |
Проверь env var, перезапусти Git Bash |
cargo: not found |
Rust не установлен | Запусти rustup-init.exe, перезапусти терминал |
cargo +stable ошибка |
Нет stable-msvc toolchain | rustup default stable-msvc |
xray-core: no such file |
Субмодули не инициализированы | git submodule update --init --recursive |
winfw.sln не найден |
Субмодули не инициализированы | git submodule update --init --recursive |
winget не работает |
Нужно обновление | Обновить App Installer через Microsoft Store |
node: not found |
Node.js не установлен или не в PATH | Перезапусти PowerShell после установки |