bump: Flutter 3.32.1 Rust 1.87.0

fix: rsi launcher patch 2.4.0
This commit is contained in:
2025-05-31 17:27:21 +08:00
parent 2139bfb652
commit 5d735632bf
48 changed files with 5239 additions and 5455 deletions

View File

@ -2,6 +2,7 @@ use std::fs::File;
use asar::{AsarReader, AsarWriter};
use tokio::fs;
use walkdir::WalkDir;
pub struct RsiLauncherAsarData {
pub asar_path: String,
@ -11,18 +12,50 @@ pub struct RsiLauncherAsarData {
impl RsiLauncherAsarData {
pub async fn write_main_js(&self, content: Vec<u8>) -> anyhow::Result<()> {
println!("[RsiLauncherAsarData] write_main_js");
let mut asar_writer = AsarWriter::new();
let asar_mem_file = fs::read(self.asar_path.clone()).await?;
let asar = AsarReader::new(&asar_mem_file, None)?;
let symlink_path = format!("{}.unpacked", self.asar_path);
asar.files().iter().for_each(|v| {
let (path, file) = v;
let path_string = path.clone().into_os_string().into_string().unwrap();
if path_string == self.main_js_path {
asar_writer.write_file(path, &content, true).unwrap();
} else {
asar_writer.write_file(path, file.data(), true).unwrap();
// check file exists in symlink_dir
let file_path = format!("{}/{}", symlink_path, path_string);
if std::fs::metadata(&file_path).is_ok() {
println!("[RsiLauncherAsarData] skip file: {}", path_string);
} else {
println!("[RsiLauncherAsarData] write_file: {}", path_string);
asar_writer.write_file(path, file.data(), true).unwrap();
}
}
});
// check if symlink_dir exists
if fs::metadata(&symlink_path).await.is_ok() {
// loop symlink_dir
for entry in WalkDir::new(symlink_path.clone())
.follow_links(true)
.into_iter()
.filter_map(|e| e.ok())
{
let f_path = entry.path();
if f_path.is_file() {
let relative_path = f_path.strip_prefix(&symlink_path)?;
let relative_path_str = relative_path.to_str().unwrap();
asar_writer.write_file(relative_path, &fs::read(f_path).await?, true, )?;
// asar_writer.write_symlink(relative_path_str, f_path)?;
println!(
"[RsiLauncherAsarData] write symlink file: {} -> {}",
relative_path_str,
f_path.to_str().unwrap_or("??")
);
}
}
}
// rm old asar
fs::remove_file(&self.asar_path).await?;
// write new asar
@ -49,4 +82,4 @@ pub async fn get_rsi_launcher_asar_data(asar_path: &str) -> anyhow::Result<RsiLa
main_js_path,
main_js_content,
})
}
}