Tauri 实验性功能:在 Linux 和 macOS 上构建 Windows 应用程序

2023-10-19 17:13 更新

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/.


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号