SuperAPI AI 工具集

embedding-tauri-sidecars

通用与其它

查看项目

更新于 10-15 20:21

技能介绍

用途:该技能讲解如何在 Tauri 应用中嵌入并执行外部二进制(sidecar),以扩展功能或免去用户自行安装依赖。sidecar 可用任意语言编写,常见如 PyInstaller 打包的 Python CLI、Go/Rust 编译产物、Node.js 打包程序、API 服务或后台服务。

依赖与配置:需 shell 插件,Cargo.toml 添加 tauri-plugin-shell = "2",在 main.rs 用 tauri_plugin_shell::init() 注册,前端安装 @tauri-apps/plugin-shell。在 tauri.conf.json 的 bundle.externalBin 注册路径(相对 src-tauri),路径为 stem,构建时自动追加目标三元组后缀。

跨平台命名:需按平台提供带目标三元组后缀的文件,如 my-sidecar-x86_64-unknown-linux-gnu、my-sidecar-aarch64-apple-darwin、my-sidecar-x86_64-pc-windows-msvc.exe。可用 rustc --print host-tuple 或 rustc -Vv | grep host 查询。

执行方式:Rust 侧通过 app.shell().sidecar("名称") 调用,仅传文件名而非完整路径,支持 .output() 一次性执行与 .spawn() 长驻进程,配合 CommandEvent 读取 stdout/stderr 与终止事件;可用 State 与 Mutex 保存 CommandChild 以管理启停。JavaScript 侧用 Command.sidecar 执行,支持 execute()、spawn()、stdout/stderr 事件与 kill()。

权限与校验:在 capabilities/default.json 授予 shell:allow-execute,并用 args 配置静态字符串、正则 validator 或 true 校验参数。

限制与注意:Windows 需 .exe 扩展名,macOS 可能需签名且 Gatekeeper 会拦截未签名 sidecar,Linux 需 chmod +x 并注意 glibc 兼容;sidecar 会显著增大包体积,应校验路径、优雅处理错误并在退出时清理进程,且需在各平台测试。