fix: windows issue

This commit is contained in:
GyDi
2022-11-18 20:15:34 +08:00
parent f5f2fe3472
commit bcc5ec897a
4 changed files with 45 additions and 27 deletions

View File

@@ -74,6 +74,10 @@ impl CoreManager {
pub async fn run_core(&self) -> Result<()> {
let config_path = Config::generate_file(ConfigType::Run)?;
if let Some(child) = self.sidecar.lock().take() {
let _ = child.kill();
}
#[cfg(target_os = "windows")]
{
use super::win_service;
@@ -90,7 +94,7 @@ impl CoreManager {
// 服务模式启动失败就直接运行sidecar
match {
win_service::check_service().await?;
win_service::run_core_by_service().await
win_service::run_core_by_service(&config_path).await
} {
Ok(_) => return Ok(()),
Err(err) => {
@@ -103,12 +107,6 @@ impl CoreManager {
}
}
let mut sidecar = self.sidecar.lock();
if let Some(child) = sidecar.take() {
let _ = child.kill();
}
let app_dir = dirs::app_home_dir()?;
let app_dir = dirs::path_to_str(&app_dir)?;
@@ -137,6 +135,7 @@ impl CoreManager {
<Result<()>>::Ok(())
});
let mut sidecar = self.sidecar.lock();
*sidecar = Some(cmd_child);
tauri::async_runtime::spawn(async move {
@@ -193,6 +192,8 @@ impl CoreManager {
bail!("invalid clash core name \"{clash_core}\"");
}
log::debug!(target: "app", "change core to `{clash_core}`");
Config::verge().draft().clash_core = Some(clash_core);
// 清掉旧日志