W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
有時,為了使應(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)三重屬性。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: