不对,Updater上传临时文件列表中,文件名不应该带tmp。服务端没有这样的文件

This commit is contained in:
zqm
2026-04-09 16:53:37 +08:00
parent 1a0749f12f
commit a439908abb

View File

@@ -816,15 +816,19 @@ fn request_file_md5_for_app(
sender.send(msg_str); sender.send(msg_str);
} }
/// 向服务器请求下载指定应用的文件 /// 向服务器请求下载指定应用的文件
fn request_download_for_app( fn request_download_for_app(
sender: &cube_lib::websocket::MessageSender, sender: &cube_lib::websocket::MessageSender,
app_name: &str,
relative_path: &str, relative_path: &str,
offset: u64, offset: u64,
) { ) {
// 文件名前加上应用名称目录
let full_path = format!("{}/{}", app_name, relative_path);
let msg_str = format!( let msg_str = format!(
r#"{{"Type":"DownloadFile","Data":{{"filename":"{}","offset":{}}}}}"#, 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"); let ts = chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f");
log_print!("{} 发送消息:{}", ts, msg_str); log_print!("{} 发送消息:{}", ts, msg_str);
@@ -1230,11 +1234,14 @@ fn scan_local_tmp_files(app_name: &str) -> Vec<String> {
} else if path.is_file() { } else if path.is_file() {
if let Some(filename) = path.file_name().and_then(|n| n.to_str()) { if let Some(filename) = path.file_name().and_then(|n| n.to_str()) {
if filename.ends_with(".tmp") { if filename.ends_with(".tmp") {
// 计算相对路径 // 计算相对路径,并去掉 .tmp 后缀(发送正式文件名)
if let Ok(rel) = path.strip_prefix(&upgrade_base) { if let Ok(rel) = path.strip_prefix(&upgrade_base) {
let rel_str = rel.to_string_lossy().replace('\\', "/"); let rel_str = rel.to_string_lossy().replace('\\', "/");
let rel_str = rel_str.trim_start_matches('/').to_string(); 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) { if let Ok(_) = File::create(&tmp_path) {
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename); log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename);
// 为这个正式文件发送下载请求 // 为这个正式文件发送下载请求
// log_print!("{} [AllFile] 请求下载 {}", ts, filename); request_download_for_app(&sender, &app_name, filename, 0);
request_download_for_app(&sender, filename, 0);
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst); update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
} }
} else { } else {
@@ -1785,7 +1791,7 @@ async fn run_updater(debug_mode: bool) -> bool {
if let Ok(_) = File::create(&tmp_path) { if let Ok(_) = File::create(&tmp_path) {
log_print!("{} [AllFile] 创建空 tmp 文件: {}", ts, tmp_filename); 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); 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() { if tmp_path.exists() {
// tmp 存在,发送请求续传 // tmp 存在,发送请求续传
let file_size = fs::metadata(&tmp_path).map(|m| m.len()).unwrap_or(0); 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, &app_name, original_filename, file_size);
request_download_for_app(&sender, original_filename, file_size);
} else { } else {
// tmp 不存在,重新下载 // tmp 不存在,重新下载
// log_print!("{} [AllFile] 请求下载 {}", ts, original_filename); request_download_for_app(&sender, &app_name, original_filename, 0);
request_download_for_app(&sender, original_filename, 0);
} }
update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst); update_performed_clone2.store(true, std::sync::atomic::Ordering::SeqCst);
} }