如何在搭配SvelteKit的Tauri应用中集成外部应用包?
如何在Tauri + SvelteKit应用中打包并自动安装外部应用(Mechdyne TGX Receiver)
1. 准备外部安装包
将Mechdyne TGX Receiver的安装程序(如Windows平台的.exe/.msi)放到Tauri项目的src-tauri/resources目录下,若没有该目录则手动创建。
2. 配置Tauri打包资源
修改src-tauri/tauri.conf.json的build字段,将外部安装程序纳入打包资源列表,确保打包时会将其复制到应用输出目录:
"build": { "beforeBuildCommand": "npm run build", "beforeDevCommand": "npm run dev", "devPath": "http://localhost:5173", "distDir": "../dist", "resources": ["resources/tgx-installer.exe"] }
3. 添加自动安装逻辑
通过Tauri的Shell插件实现应用首次启动时的安装检查与执行:
- 先安装Shell插件:
npm install @tauri-apps/plugin-shell
- 在
src-tauri/src/main.rs中编写逻辑,检查TGX Receiver是否已安装,未安装则自动启动安装程序:
use tauri::Manager; use tauri_plugin_shell::ShellExt; fn main() { tauri::Builder::default() .plugin(tauri_plugin_shell::init()) .setup(|app| { // 获取打包后安装程序的路径 let tgx_installer_path = app.path_resolver() .resolve_resource("tgx-installer.exe") .expect("无法找到TGX安装程序"); // 检查TGX是否已安装(示例:根据默认安装路径判断,可替换为注册表检查逻辑) let tgx_is_installed = std::path::Path::new("C:/Program Files/Mechdyne/TGX Receiver/TGXReceiver.exe").exists(); if !tgx_is_installed { // 启动安装程序,若支持静默安装可添加参数(如"/silent") app.shell() .execute(tgx_installer_path.to_str().unwrap(), &["/silent"]) .expect("启动TGX安装程序失败"); } Ok(()) }) .run(tauri::generate_context!()) .expect("运行Tauri应用出错"); }
4. 关键注意事项
- 权限处理:若TGX安装需要管理员权限,需确保你的Tauri应用请求管理员权限(可在
tauri.conf.json的tauri.windows.security中配置requestedExecutionLevel为requireAdministrator)。 - 跨平台适配:若需支持macOS/Linux,需替换对应格式的安装包,并调整路径判断与启动逻辑。
- 静默安装:优先使用TGX安装程序的静默参数,避免安装过程中弹出交互窗口提升用户体验。
内容的提问来源于stack exchange,提问作者Gulam Gaus
相关产品推荐
相关产品推荐

