Tauri 嵌入外部二進(jìn)制文件

2023-10-19 17:08 更新

有時,為了使應(yīng)用程序正常運(yùn)行或防止用戶安裝額外的依賴項(例如,Node.js或Python),你可能需要嵌入依賴的二進(jìn)制文件。我們將這種二進(jìn)制文件稱為"sidecar"。

要捆綁你選擇的二進(jìn)制文件,你可以在tauri.conf.json文件中的tauri > bundle對象下添加externalBin屬性。

externalBin屬性需要一個字符串列表,其中包含目標(biāo)二進(jìn)制文件的路徑,可以是絕對路徑或相對路徑。

以下是一個示例配置,用于說明配置的結(jié)構(gòu)。這不是完整的tauri.conf.json文件:

{
"tauri": { "bundle": { "externalBin": [ "/absolute/path/to/sidecar", "relative/path/to/binary", "binaries/my-sidecar" ] }, "allowlist": { "shell": { "sidecar": true, "scope": [ { "name": "/absolute/path/to/sidecar", "sidecar": true }, { "name": "relative/path/to/binary", "sidecar": true }, { "name": "binaries/my-sidecar", "sidecar": true } ] } } } }

在這個示例中,externalBin屬性包含了三個不同的二進(jìn)制文件的路徑,一個使用絕對路徑,一個使用相對路徑,還有一個使用相對路徑的子目錄。

對于externalBin中的每個條目,需要在指定的路徑上存在一個帶有-$TARGET_TRIPLE后綴的同名二進(jìn)制文件。例如,"externalBin": ["binaries/my-sidecar"] 需要在Linux上存在一個src-tauri/binaries/my-sidecar-x86_64-unknown-linux-gnu可執(zhí)行文件。你可以通過查看rustc -Vv命令報告的host:屬性來找到當(dāng)前平臺的目標(biāo)三重屬性。

如果grep和cut命令可用,你可以直接使用以下命令從中提取目標(biāo)三重屬性,這些命令應(yīng)該在大多數(shù)Unix系統(tǒng)上都可以使用:

rustc -Vv | grep host | cut -f2 -d' '

在Windows上,你可以使用PowerShell來執(zhí)行相同的操作:

rustc -Vv | Select-String "host:" | ForEach-Object {$_.Line.split(" ")[1]}

以下是一個Node.js腳本,用于將目標(biāo)三重屬性附加到二進(jìn)制文件的名稱:

const execa = require('execa')
const fs = require('fs') let extension = '' if (process.platform === 'win32') { extension = '.exe' } async function main() { const rustInfo = (await execa('rustc', ['-vV'])).stdout const targetTriple = /host: (\S+)/g.exec(rustInfo)[1] if (!targetTriple) { console.error('Failed to determine platform target triple') } fs.renameSync( `src-tauri/binaries/sidecar${extension}`, `src-tauri/binaries/sidecar-${targetTriple}${extension}` ) } main().catch((e) => { throw e })

這個腳本會根據(jù)你的操作系統(tǒng),在二進(jìn)制文件的名稱中附加目標(biāo)三重屬性。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號