本项目使用 Tauri + Vue 构建桌面客户端应用。打包为 Windows EXE 时,必须使用 OpenSSL 静态链接,否则生成的 exe 会依赖 libcrypto-3-x64.dll,在没有安装 OpenSSL 的电脑上无法运行。
在 client-tauri 目录下执行:
cd d:\code\steam\client-tauri
.\build-release.ps1
cd d:\code\steam\client-tauri
关键点:环境变量必须在同一个 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 运行时 |
构建产物位于:
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)
使用 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
...
libcrypto-3-x64.dll 找不到?原因:OpenSSL 静态链接环境没有正确设置。常见错误是在一个 PowerShell 里执行 set-openssl-static-env.ps1,然后又在另一个命令里执行 npm run tauri build,环境变量未传递过去。
解决方法:确保在同一个 PowerShell 会话中,先设置环境变量,再执行构建命令。使用 build-release.ps1 脚本可以避免此问题。
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"
可以。MSI 安装包使用 WiX 工具链生成,不受 NSIS 配置问题影响。推荐分发 MSI 安装包。
| 文件 | 作用 |
|---|---|
build-release.ps1 |
主构建脚本,设置环境并执行 Tauri 构建 |
scripts/set-openssl-static-env.ps1 |
设置 OpenSSL 静态链接环境变量 |
src-tauri/nsis/installer.nsi |
NSIS 安装脚本 |
package.json |
npm 脚本定义 |
steamSH.exe 到目标电脑(需要目标电脑已安装 WebView2 运行时,大多数 Windows 10/11 已自带)