Перейти к содержанию

Сборка 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:

C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin

Это самый долгий шаг

Установка занимает ~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:

C:\Program Files (x86)\GnuWin32\bin


Шаг 3 — protobuf

  1. Скачай ZIP с https://github.com/protocolbuffers/protobuf/releases — файл protoc-*-win64.zip
  2. Распакуй, например в C:\Users\<ИМЯ>\protoc\
  3. Задай переменную окружения:
PROTOC = C:\Users\<ИМЯ>\protoc\bin\protoc.exe

Шаг 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 — исходники Xray
  • third-party/windows/libwfp — Windows Filtering Platform
  • third-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 install 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 — Сборка

./build_release.sh

Скрипт автоматически:

  1. Собирает Rust workspace (cargo +stable build --release)
  2. Ставит npm-зависимости (npm install в shiva-app/)
  3. Запускает Tauri bundler с NSIS
  4. Копирует готовый .exe в dist-installer/

Готовый установщик будет в:

dist-installer/Shiva VPN_X.X.X_x64-setup.exe


Решение проблем

Ошибка Причина Решение
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 после установки