@@ -419,6 +419,7 @@ async fn spawn_sidecar(
419419 app : tauri:: AppHandle < Runtime > ,
420420 name : String ,
421421 args : Vec < String > ,
422+ cwd : Option < String > ,
422423) -> Result < u32 , String > {
423424 use std:: process:: Stdio ;
424425 use std:: io:: Write as _;
@@ -452,10 +453,14 @@ async fn spawn_sidecar(
452453 ) , tauri:: path:: BaseDirectory :: Resource )
453454 . map_err ( |e| format ! ( "Failed to resolve sidecar path: {}" , e) ) ?;
454455
455- // 获取工作目录(用户主目录下的 .netmount)
456- let work_dir = app. path ( ) . home_dir ( )
457- . map_err ( |e| format ! ( "Failed to get home dir: {}" , e) ) ?
458- . join ( ".netmount" ) ;
456+ // 获取工作目录:优先使用传入的 cwd,否则使用默认目录
457+ let work_dir = if let Some ( cwd_path) = cwd {
458+ std:: path:: PathBuf :: from ( cwd_path)
459+ } else {
460+ app. path ( ) . home_dir ( )
461+ . map_err ( |e| format ! ( "Failed to get home dir: {}" , e) ) ?
462+ . join ( ".netmount" )
463+ } ;
459464
460465 // 确保工作目录存在
461466 if !work_dir. exists ( ) {
@@ -658,6 +663,7 @@ async fn run_sidecar_once(
658663 name : String ,
659664 args : Vec < String > ,
660665 timeout_ms : Option < u64 > ,
666+ cwd : Option < String > ,
661667) -> Result < RunSidecarOnceResult , String > {
662668 use std:: io:: Write as _;
663669 use std:: process:: Stdio ;
@@ -695,11 +701,15 @@ async fn run_sidecar_once(
695701 )
696702 . map_err ( |e| format ! ( "Failed to resolve sidecar path: {}" , e) ) ?;
697703
698- let work_dir = app
699- . path ( )
700- . home_dir ( )
701- . map_err ( |e| format ! ( "Failed to get home dir: {}" , e) ) ?
702- . join ( ".netmount" ) ;
704+ // 获取工作目录:优先使用传入的 cwd,否则使用默认目录
705+ let work_dir = if let Some ( cwd_path) = cwd {
706+ std:: path:: PathBuf :: from ( cwd_path)
707+ } else {
708+ app. path ( ) . home_dir ( )
709+ . map_err ( |e| format ! ( "Failed to get home dir: {}" , e) ) ?
710+ . join ( ".netmount" )
711+ } ;
712+
703713 if !work_dir. exists ( ) {
704714 let _ = std:: fs:: create_dir_all ( & work_dir) ;
705715 }
0 commit comments