impress_asr_input_rust/BUILD_WINDOWS.md
impressionyang ceb2df18c4
Some checks are pending
Build Windows GUI / build-windows (push) Waiting to run
Build Windows GUI / release (push) Blocked by required conditions
初始提交:Windows 跨平台语音识别应用
功能:
- Tauri v2 GUI 应用
- 系统托盘支持
- 日志输出到文件
- 带时间戳的版本号
- 前端资源嵌入

修复:
- 前端路径使用相对路径
- 移除 devUrl 配置
- 窗口置顶设置
2026-05-21 17:58:18 +08:00

6.1 KiB
Raw Permalink Blame History

Windows 版本构建指南

由于交叉编译需要特定的系统依赖,建议在 Windows 原生环境或使用 Windows CI/CD 服务构建。

方法一Windows 原生构建(推荐)

1. 环境准备

在 Windows 机器上安装以下工具:

  1. Rust (https://rustup.rs/)

    winget install Rustlang.Rustup
    # 或下载 rustup-init.exe 运行
    
  2. Node.js 18+ (https://nodejs.org/)

    winget install OpenJS.NodeJS.LTS
    
  3. Visual Studio Build Tools 2022

    winget install Microsoft.VisualStudio.2022.BuildTools
    

    安装时勾选 "使用 C++ 的桌面开发"

2. 构建步骤

# 克隆仓库
git clone https://github.com/your-username/impress_asr_input_rust.git
cd impress_asr_input_rust

# 安装前端依赖
cd web
npm install
npm run build
cd ..

# 构建 Windows GUI 版本
cargo build --release --features gui

# 构建产物位置
# target/release/impress_asr_gui.exe
# target/release/impress_asr.exe

方法二:使用 cargo-xwin需要 Linux/macOS

如果你没有 Windows 机器,可以使用 cargo-xwin 在 Linux/macOS 上交叉编译:

1. 安装 cargo-xwin

# 首先安装 zig (用于交叉编译)
curl -L https://ziglang.org/download/0.11.0/zig-linux-x86_64-0.11.0.tar.xz | tar -xJ
sudo mv zig-linux-x86_64-0.11.0 /opt/zig
sudo ln -s /opt/zig/zig /usr/local/bin/zig

# 安装 cargo-xwin
cargo install cargo-xwin

2. 构建

# 构建 Windows x64 GUI 版本
cargo xwin build --release --features gui --target x86_64-pc-windows-msvc

# 构建产物位置
# target/x86_64-pc-windows-msvc/release/impress_asr_gui.exe

方法三GitHub Actions CI/CD

项目已配置 GitHub Actions 工作流,可以自动构建 Windows 版本。

创建工作流文件

.github/workflows/build-windows.yml:

name: Build Windows

on:
  push:
    tags: ['v*']
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-C target-feature=+crt-static"

jobs:
  build-windows:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v4

    - name: Install Rust
      uses: dtolnay/rust-action@stable
      with:
        targets: x86_64-pc-windows-msvc

    - name: Install Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '18'

    - name: Build Frontend
      run: |
        cd web
        npm install
        npm run build        

    - name: Build GUI
      run: cargo build --release --features gui

    - name: Upload Artifact
      uses: actions/upload-artifact@v4
      with:
        name: impress-asr-gui-windows
        path: target/release/impress_asr_gui.exe

    - name: Create Release Package
      run: |
        mkdir release
        cp target/release/impress_asr_gui.exe release/
        cp target/release/impress_asr.exe release/
        cp README.md release/
        cp LICENSE release/
        mkdir release/models
        echo "将模型文件放入此目录" > release/models/README.txt        

    - name: Upload Release
      uses: softprops/action-gh-release@v1
      if: startsWith(github.ref, 'refs/tags/')
      with:
        files: release/*

方法四:使用 Docker

# Dockerfile.windows
FROM messense/rust-crossbuild:windows-x86_64

RUN apt-get update && apt-get install -y \
    nodejs \
    npm \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

COPY . .

RUN cd web && npm install && npm run build
RUN cargo build --release --features gui

CMD ["cargo", "build", "--release", "--features", "gui"]

构建并提取:

docker build -f Dockerfile.windows -t impress-asr-windows .
docker run --rm -v $(pwd)/output:/output impress-asr-windows \
  cp target/release/impress_asr_gui.exe /output/

Windows 安装包制作(可选)

使用 Inno Setup 创建安装程序:

1. 安装 Inno Setup

winget install JRSoftware.InnoSetup

2. 创建安装脚本 installer.iss

#define MyAppName "impress ASR Input"
#define MyAppVersion "0.1.0"
#define MyAppPublisher "Your Name"

[Setup]
AppId={{YOUR-APP-ID}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
OutputDir=installer
OutputBaseFilename={#MyAppName}-setup-{#MyAppVersion}
SetupIconFile=resources\icons\icon.ico
Compression=lzma2
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "target\release\impress_asr_gui.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "target\release\impress_asr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "README.md"; DestDir: "{app}"; Flags: ignoreversion
Source: "models\*"; DestDir: "{app}\models"; Flags: recursesubdirs

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\impress_asr_gui.exe"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\impress_asr_gui.exe"

[Run]
Filename: "{app}\impress_asr_gui.exe"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

3. 编译安装程序

& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer.iss

构建产物

成功构建后,你将得到:

  • impress_asr_gui.exe - GUI 应用程序
  • impress_asr.exe - 命令行工具

分发

将以下文件打包分发给用户:

impress_asr_input_rust-v0.1.0-windows-x64/
├── impress_asr_gui.exe
├── impress_asr.exe
├── models/
│   └── sensevoice-small.onnx  (需要单独下载)
├── README.md
└── LICENSE

常见问题

Q: 构建时提示找不到 Windows SDK

A: 确保安装了 Visual Studio Build Tools并在安装时选择了 "使用 C++ 的桌面开发"。

Q: 链接错误 LNK1181

A: 确保以管理员身份运行 Developer Command Prompt for VS 2022或正确配置了环境变量。

Q: 程序启动后闪退?

A: 检查是否缺少 Microsoft Visual C++ Redistributable下载安装 https://aka.ms/vs/17/release/vc_redist.x64.exe

Q: 如何静默安装?

A: 使用 Inno Setup 安装程序时添加参数:

/impress-asr-setup-0.1.0.exe /VERYSILENT /NORESTART