From a439908abb32ee9b5f3e2ed01127127453b10fc9 Mon Sep 17 00:00:00 2001 From: zqm Date: Thu, 9 Apr 2026 16:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E5=AF=B9=EF=BC=8CUpdater=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=B8=B4=E6=97=B6=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E6=96=87=E4=BB=B6=E5=90=8D=E4=B8=8D=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E5=B8=A6tmp=E3=80=82=E6=9C=8D=E5=8A=A1=E7=AB=AF?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=BF=99=E6=A0=B7=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Windows/CS/Framework4.0/Updater/src/main.rs | 24 ++++++++++++--------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Windows/CS/Framework4.0/Updater/src/main.rs b/Windows/CS/Framework4.0/Updater/src/main.rs index d30c48c..d5c4869 100644 --- a/Windows/CS/Framework4.0/Updater/src/main.rs +++ b/Windows/CS/Framework4.0/Updater/src/main.rs @@ -816,15 +816,19 @@ fn request_file_md5_for_app( sender.send(msg_str); } + /// 向服务器请求下载指定应用的文件 fn request_download_for_app( sender: &cube_lib::websocket::MessageSender, + app_name: &str, relative_path: &str, offset: u64, ) { + // 文件名前加上应用名称目录 + let full_path = format!("{}/{}", app_name, relative_path); let msg_str = format!( r#"{{"Type":"DownloadFile","Data":{{"filename":"{}","offset":{}}}}}"#, - relative_path, offset + full_path, offset ); let ts = chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f"); log_print!("{} 发送消息:{}", ts, msg_str); @@ -1230,11 +1234,14 @@ fn scan_local_tmp_files(app_name: &str) -> Vec { } else if path.is_file() { if let Some(filename) = path.file_name().and_then(|n| n.to_str()) { if filename.ends_with(".tmp") { - // 计算相对路径 + // 计算相对路径,并去掉 .tmp 后缀(发送正式文件名) if let Ok(rel) = path.strip_prefix(&upgrade_base) { let rel_str = rel.to_string_lossy().replace('\\', "/"); let rel_str = rel_str.trim_start_matches('/').to_string(); - tmp_files.push(rel_str); + // 去掉 .tmp 后缀,发送正式文件名 + let official_name = rel_str.strip_suffix(".tmp") + .unwrap_or(&rel_str); + tmp_files.push(official_name.to_string()); } } } @@ -1767,8 +1774,7 @@ async fn run_updater(debug_mode: bool) -> bool { if let Ok(_) = File::create(&tmp_path) { log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename); // 为这个正式文件发送下载请求 - // log_print!("{} [AllFile] 请求下载 {}", ts, filename); - request_download_for_app(&sender, filename, 0); + request_download_for_app(&sender, &app_name, filename, 0); update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst); } } else { @@ -1785,7 +1791,7 @@ async fn run_updater(debug_mode: bool) -> bool { if let Ok(_) = File::create(&tmp_path) { log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename); // 为这个正式文件发送下载请求(函数内部会记录发送消息日志) - request_download_for_app(&sender, filename, 0); + request_download_for_app(&sender, &app_name, filename, 0); update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst); } } @@ -1799,12 +1805,10 @@ async fn run_updater(debug_mode: bool) -> bool { if tmp_path.exists() { // tmp 存在,发送请求续传 let file_size = fs::metadata(&tmp_path).map(|m| m.len()).unwrap_or(0); - // log_print!("{} [AllFile] 请求续传 {} (已下载 {} 字节)", ts, original_filename, file_size); - request_download_for_app(&sender, original_filename, file_size); + request_download_for_app(&sender, &app_name, original_filename, file_size); } else { // tmp 不存在,重新下载 - // log_print!("{} [AllFile] 请求下载 {}", ts, original_filename); - request_download_for_app(&sender, original_filename, 0); + request_download_for_app(&sender, &app_name, original_filename, 0); } update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst); }