如何在Tauri启动时自动创建Roaming下的应用数据目录?
解决Tauri中Windows下Roaming应用数据目录未自动创建的问题
目前Tauri没有提供通过tauri.conf.json自动创建Roaming应用数据目录的配置项,你可以通过以下方式实现需求:
方法:应用启动时自动创建目录
在应用启动逻辑中,借助Tauri的路径API获取Roaming目录路径,再用Rust的文件系统模块创建目录(包含所有父目录)。
代码示例(src-tauri/src/main.rs)
use tauri::{App, AppHandle}; use std::fs; #[tauri::command] async fn ensure_app_data_dir(app_handle: AppHandle) -> Result<(), String> { // 获取Roaming下的应用数据目录路径 let app_data_dir = app_handle.path().app_data_dir() .ok_or_else(|| "无法获取应用数据目录路径".to_string())?; // 目录不存在则创建(包含父目录) if !app_data_dir.exists() { fs::create_dir_all(&app_data_dir) .map_err(|e| format!("创建应用数据目录失败: {}", e))?; } Ok(()) } fn main() { tauri::Builder::default() .invoke_handler(tauri::generate_handler![ensure_app_data_dir]) .setup(|app| { // 应用启动时执行目录创建逻辑 let _ = ensure_app_data_dir(app.handle()).await; Ok(()) }) .run(tauri::generate_context!()) .expect("运行Tauri应用时出错"); }
说明
app_data_dir()方法返回的是Windows下~\AppData\Roaming\com.tauri.dev这类路径,app_local_data_dir()则对应Local目录create_dir_all会自动创建所有不存在的父目录,彻底避免os error 3路径不存在的错误- Tauri默认自动创建Local目录是因为内置存储等功能依赖它,Roaming目录属于按需使用的目录,因此需要手动实现自动创建逻辑
内容的提问来源于stack exchange,提问作者Syed Salman
相关产品推荐
相关产品推荐

