BUILD-GUIDE.md 4.2 KB

SteamSH 客户端打包指南

概述

本项目使用 Tauri + Vue 构建桌面客户端应用。打包为 Windows EXE 时,必须使用 OpenSSL 静态链接,否则生成的 exe 会依赖 libcrypto-3-x64.dll,在没有安装 OpenSSL 的电脑上无法运行。

快速打包

在 client-tauri 目录下执行:

cd d:\code\steam\client-tauri
.\build-release.ps1

详细步骤

1. 切换到项目目录

cd d:\code\steam\client-tauri

2. 设置 OpenSSL 静态链接环境

关键点:环境变量必须在同一个 PowerShell 会话中设置,然后直接执行 npm run tauri build。如果分成两个独立的命令执行,环境变量不会传递给后续的构建进程。

有两种写法:

方式一(推荐):使用构建脚本

.\build-release.ps1

方式二:单行命令 dot-source

. .\scripts\set-openssl-static-env.ps1; npm run tauri build

set-openssl-static-env.ps1 会设置以下环境变量:

环境变量 值 作用
OPENSSL_STATIC 1 通知 openssl-sys 静态链接 OpenSSL
OPENSSL_DIR C:\Program Files\OpenSSL-Win64 OpenSSL 安装根目录
OPENSSL_LIB_DIR C:\Program Files\OpenSSL-Win64\lib\VC\x64\static-only 静态库目录
OPENSSL_INCLUDE_DIR C:\Program Files\OpenSSL-Win64\include 头文件目录
RUSTFLAGS -C target-feature=+crt-static 使用静态 C 运行时

3. 等待编译完成

  • 前端构建(Vite):约 30-70 秒
  • Rust 编译:约 10-15 分钟(首次编译,之后增量编译约 2-3 分钟)

4. 输出文件

构建产物位于:

src-tauri/target/release/
├── steamSH.exe                              # 独立可执行文件(约 22MB)
└── bundle/
    ├── msi/
    │   └── steamSH_0.1.0_x64_en-US.msi     # MSI 安装包(约 8MB)
    └── nsis/
        └── x64/
            └── installer.exe                # NSIS 安装包(约 9.5MB)

5. 验证(可选)

使用 Visual Studio 的 dumpbin 检查 exe 是否还有 OpenSSL DLL 依赖:

& "C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\dumpbin.exe" /dependents "d:\code\steam\client-tauri\src-tauri\target\release\steamSH.exe"

正确的依赖列表(不包含 libcrypto/libssl):

advapi32.dll
ntdll.dll
bcryptprimitives.dll
kernel32.dll
crypt32.dll
bcrypt.dll
user32.dll
gdi32.dll
...

常见问题

Q: 打包后 exe 在其他电脑上报 libcrypto-3-x64.dll 找不到?

原因:OpenSSL 静态链接环境没有正确设置。常见错误是在一个 PowerShell 里执行 set-openssl-static-env.ps1,然后又在另一个命令里执行 npm run tauri build,环境变量未传递过去。

解决方法:确保在同一个 PowerShell 会话中,先设置环境变量,再执行构建命令。使用 build-release.ps1 脚本可以避免此问题。

Q: NSIS 安装包打包失败(os error 2)?

原因:installer.nsi 中使用了绝对路径 D:\code\steam\...,文件路径不存在时会报错。

解决方法:已将 installer.nsi 中的路径改为相对路径。如果仍有问题,可以手动运行:

cd "d:\code\steam\client-tauri\src-tauri\target\release\nsis\x64"
& "C:\Program Files (x86)\NSIS\makensis.exe" /V4 "installer.nsi"

Q: MSI 安装包可以正常使用吗?

可以。MSI 安装包使用 WiX 工具链生成,不受 NSIS 配置问题影响。推荐分发 MSI 安装包。

文件说明

文件 作用
build-release.ps1 主构建脚本,设置环境并执行 Tauri 构建
scripts/set-openssl-static-env.ps1 设置 OpenSSL 静态链接环境变量
src-tauri/nsis/installer.nsi NSIS 安装脚本
package.json npm 脚本定义

分发建议

  • 独立 exe:直接拷贝 steamSH.exe 到目标电脑(需要目标电脑已安装 WebView2 运行时,大多数 Windows 10/11 已自带)
  • MSI 安装包:适合企业环境,可通过组策略推送
  • NSIS 安装包:适合普通用户,安装过程更友好,首次安装会自动检测并安装 WebView2