Tauri 實(shí)驗(yàn)性功能:在 Linux 和 macOS 上構(gòu)建 Windows 應(yīng)用程序

2023-10-19 17:13 更新

Tauri v1.3 新增了一種基于 NSIS 安裝程序框架的新 Windows 安裝程序類型。與 WiX 不同,NSIS 本身也可以在 Linux 和 macOS 上運(yùn)行,這使得在非 Windows 主機(jī)上構(gòu)建許多 Tauri 應(yīng)用程序成為可能。請注意,這目前被認(rèn)為是高度實(shí)驗(yàn)性的,可能不適用于每個(gè)系統(tǒng)或每個(gè)項(xiàng)目。因此,只有在本地虛擬機(jī)或 GitHub Actions 等 CI 解決方案不適用時(shí),才應(yīng)將其視為最后的選擇。

由于 Tauri 官方僅支持 MSVC Windows 目標(biāo),設(shè)置稍微復(fù)雜一些。

首先,請確保所有 Tauri 依賴項(xiàng)至少是 1.3 版本,如果不確定如何操作,請查看依賴項(xiàng)更新指南。

Install NSIS?

一些 Linux 發(fā)行版在它們的軟件倉庫中提供了 NSIS,例如在 Ubuntu 上,您可以通過運(yùn)行以下命令來安裝 NSIS:

Ubuntu

sudo apt install nsis

但在許多其他發(fā)行版中,您必須自行編譯 NSIS,或手動(dòng)下載未包含在發(fā)行版二進(jìn)制包中的存根和插件。例如,F(xiàn)edora 只提供二進(jìn)制文件,但沒有提供存根和插件:

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?

由于默認(rèn)的 Microsoft 鏈接器僅在 Windows 上工作,因此我們還需要安裝新的鏈接器。為了編譯用于設(shè)置應(yīng)用程序圖標(biāo)等內(nèi)容的 Windows 資源文件,我們還需要 LLVM 項(xiàng)目的一部分,即 llvm-rc 二進(jìn)制文件。

Ubuntu

sudo apt install lld llvm

macOS

brew install llvm

在 macOS 上,還需要將 /opt/homebrew/opt/llvm/bin 添加到您的 $PATH 中,如在安裝輸出中建議的那樣。

Install the Windows Rust target?

假設(shè)您要構(gòu)建適用于 64 位 Windows 系統(tǒng)的應(yīng)用程序:

rustup target add x86_64-pc-windows-msvc

Install the Windows SDKs?

為獲取 msvc 目標(biāo)所需的 Windows SDK,我們將使用 xwin 項(xiàng)目:

cargo install xwin

然后,您可以使用 xwin 命令行工具將所需的文件安裝到您選擇的位置。請記住這個(gè)位置,因?yàn)槲覀儗⒃谙乱徊街行枰T诒局改现?,我們將在主目錄中?chuàng)建一個(gè)名為 .xwin 的目錄。

xwin splat --output ~/.xwin

如果出現(xiàn)以下錯(cuò)誤消息而失?。?br>

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 標(biāo)志添加到命令中:

xwin splat --output ~/.xwin --disable-symlinks

要使 Rust 編譯器使用這些文件,首先需要在項(xiàng)目中創(chuàng)建一個(gè) .cargo 目錄,并在其中創(chuàng)建一個(gè)名為 config.toml 的文件,內(nèi)容如下。請確保根據(jù)您的實(shí)際情況更改路徑。

.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"
]

請記住,此文件特定于您的機(jī)器,因此如果您的項(xiàng)目是公開的或?qū)⑴c他人共享,我們不建議將其提交到 git。

Building the App?

現(xiàn)在,只需將目標(biāo)添加到 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/.


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)