Tauri 实验性功能:在 Linux 和 macOS 上构建 Windows 应用程序
Tauri v1.3 新增了一种基于 NSIS 安装程序框架的新 Windows 安装程序类型。与 WiX 不同,NSIS 本身也可以在 Linux 和 macOS 上运行,这使得在非 Windows 主机上构建许多 Tauri 应用程序成为可能。请注意,这目前被认为是高度实验性的,可能不适用于每个系统或每个项目。因此,只有在本地虚拟机或 GitHub Actions 等 CI 解决方案不适用时,才应将其视为最后的选择。
由于 Tauri 官方仅支持 MSVC Windows 目标,设置稍微复杂一些。
首先,请确保所有 Tauri 依赖项至少是 1.3 版本,如果不确定如何操作,请查看依赖项更新指南。
Install NSIS
一些 Linux 发行版在它们的软件仓库中提供了 NSIS,例如在 Ubuntu 上,您可以通过运行以下命令来安装 NSIS:
Ubuntu
sudo apt install nsis
但在许多其他发行版中,您必须自行编译 NSIS,或手动下载未包含在发行版二进制包中的存根和插件。例如,Fedora 只提供二进制文件,但没有提供存根和插件:
Fedora
sudo dnf in mingw64-nsis
wget https://github.com/tauri-apps/binary-releases/releases/download/nsis-3/nsis-3.zip
unzip nsis-3.zip
sudo cp nsis-3.08/Stubs/* /usr/share/nsis/Stubs/
sudo cp -r nsis-3.08/Plugins/** /usr/share/nsis/Plugins/
在 macOS 上,您需要使用 Homebrew 安装 NSIS:
macOS
brew install nsis
Install LLVM and the LLD Linker
由于默认的 Microsoft 链接器仅在 Windows 上工作,因此我们还需要安装新的链接器。为了编译用于设置应用程序图标等内容的 Windows 资源文件,我们还需要 LLVM 项目的一部分,即 llvm-rc 二进制文件。
Ubuntu
sudo apt install lld llvm
macOS
brew install llvm
在 macOS 上,还需要将 /opt/homebrew/opt/llvm/bin 添加到您的 $PATH 中,如在安装输出中建议的那样。
Install the Windows Rust target
假设您要构建适用于 64 位 Windows 系统的应用程序:
rustup target add x86_64-pc-windows-msvc
Install the Windows SDKs
为获取 msvc 目标所需的 Windows SDK,我们将使用 xwin 项目:
cargo install xwin
然后,您可以使用 xwin 命令行工具将所需的文件安装到您选择的位置。请记住这个位置,因为我们将在下一步中需要它。在本指南中,我们将在主目录中创建一个名为 .xwin 的目录。
xwin splat --output ~/.xwin
如果出现以下错误消息而失败:
Error: failed to splat Microsoft.VC.14.29.16.10.CRT.x64.Desktop.base.vsix
Caused by:
0: unable to symlink from .xwin/crt/lib/x86_64/LIBCMT.lib to libcmt.lib
1: File exists (os error 17)
您可以尝试将 --disable-symlinks 标志添加到命令中:
xwin splat --output ~/.xwin --disable-symlinks
要使 Rust 编译器使用这些文件,首先需要在项目中创建一个 .cargo 目录,并在其中创建一个名为 config.toml 的文件,内容如下。请确保根据您的实际情况更改路径。
.cargo/config.toml
[target.x86_64-pc-windows-msvc]
linker = "lld"
rustflags = [
"-Lnative=/home/username/.xwin/crt/lib/x86_64",
"-Lnative=/home/username/.xwin/sdk/lib/um/x86_64",
"-Lnative=/home/username/.xwin/sdk/lib/ucrt/x86_64"
]
请记住,此文件特定于您的机器,因此如果您的项目是公开的或将与他人共享,我们不建议将其提交到 git。
Building the App
现在,只需将目标添加到 tauri build 命令中即可:
- npm
npm run tauri build -- --target x86_64-pc-windows-msvc
- Yarn
yarn tauri build --target x86_64-pc-windows-msvc
- pnpm
pnpm tauri build --target x86_64-pc-windows-msvc
- Cargo
cargo tauri build --target x86_64-pc-windows-msvc
The build output will then be in target/x86_64-pc-windows-msvc/release/bundle/nsis/.