mirror of
https://github.com/ALEZ-DEV/Babylonia-terminal.git
synced 2026-03-21 21:58:52 +00:00
some little fixes (and nixos fix specific)
This commit is contained in:
parent
1795b9d580
commit
e41eece4a8
7
Cargo.lock
generated
7
Cargo.lock
generated
@ -374,6 +374,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"tar",
|
"tar",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"whatadistro",
|
||||||
"wincompatlib",
|
"wincompatlib",
|
||||||
"xz2",
|
"xz2",
|
||||||
]
|
]
|
||||||
@ -3963,6 +3964,12 @@ version = "0.1.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
|
checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "whatadistro"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1c97ebad4f59809511083f2161587445631bff21bb78d9e046b9ca5b2d05d913"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
version = "0.3.9"
|
version = "0.3.9"
|
||||||
|
|||||||
@ -27,6 +27,7 @@ serde = { version = "1.0.197", features = ["derive"] }
|
|||||||
serde_json = "1.0.115"
|
serde_json = "1.0.115"
|
||||||
tar = "0.4.40"
|
tar = "0.4.40"
|
||||||
tokio = { version = "1.37.0", features = ["fs"] }
|
tokio = { version = "1.37.0", features = ["fs"] }
|
||||||
|
whatadistro = "0.1.0"
|
||||||
wincompatlib = { version = "0.7.5", features = [
|
wincompatlib = { version = "0.7.5", features = [
|
||||||
"dxvk",
|
"dxvk",
|
||||||
"wine-bundles",
|
"wine-bundles",
|
||||||
|
|||||||
@ -111,6 +111,7 @@ impl WineComponent {
|
|||||||
debug!("Wine binary path : {:?}", wine_bin_location);
|
debug!("Wine binary path : {:?}", wine_bin_location);
|
||||||
|
|
||||||
let mut wine = wincompatlib::prelude::Wine::from_binary(wine_bin_location);
|
let mut wine = wincompatlib::prelude::Wine::from_binary(wine_bin_location);
|
||||||
|
wine.prefix = prefix.clone();
|
||||||
|
|
||||||
wine.init_prefix(Some(prefix)).unwrap();
|
wine.init_prefix(Some(prefix)).unwrap();
|
||||||
|
|
||||||
|
|||||||
@ -292,11 +292,21 @@ impl GameManager {
|
|||||||
let wine_path = GameConfig::get_config_directory()
|
let wine_path = GameConfig::get_config_directory()
|
||||||
.await
|
.await
|
||||||
.join("wine")
|
.join("wine")
|
||||||
|
.join("bin")
|
||||||
.join("wine");
|
.join("wine");
|
||||||
|
let mut wine_path = wine_path.to_str().unwrap();
|
||||||
|
|
||||||
|
if let Some(distro) = whatadistro::identify() {
|
||||||
|
if distro.is_similar("nixos") {
|
||||||
|
wine_path = "wine";
|
||||||
|
|
||||||
|
info!("Nixos detected, using system Wine...");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
//command.push(wine.python.to_str().unwrap());
|
//command.push(wine.python.to_str().unwrap());
|
||||||
command.push(wine_path.to_str().unwrap());
|
command.push(wine_path);
|
||||||
command.push("run");
|
//command.push("run");
|
||||||
command.push(binary_path.to_str().unwrap());
|
command.push(binary_path.to_str().unwrap());
|
||||||
|
|
||||||
let launch_option;
|
let launch_option;
|
||||||
@ -324,11 +334,14 @@ impl GameManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
debug!("Command preview -> {}", command.join(" "));
|
debug!("Command preview -> {}", command.join(" "));
|
||||||
|
debug!(
|
||||||
|
"Command envs -> {:?}",
|
||||||
|
wine.get_envs()["WINEPREFIX"].clone()
|
||||||
|
);
|
||||||
|
|
||||||
Ok(Command::new(command[0])
|
Ok(Command::new(command[0])
|
||||||
.args(&command[1..command.len()])
|
.args(&command[1..command.len()])
|
||||||
.envs(wine.get_envs())
|
.env("WINE_PREFIX", wine.get_envs()["WINEPREFIX"].clone())
|
||||||
.env("Wine_LOG", "1")
|
|
||||||
.stdin(Stdio::piped())
|
.stdin(Stdio::piped())
|
||||||
.stdout(Stdio::piped())
|
.stdout(Stdio::piped())
|
||||||
.stderr(Stdio::piped())
|
.stderr(Stdio::piped())
|
||||||
|
|||||||
@ -58,29 +58,29 @@ pub async fn patch_game(game_dir: PathBuf) -> anyhow::Result<()> {
|
|||||||
|
|
||||||
// section to replace the executable with the patched one
|
// section to replace the executable with the patched one
|
||||||
|
|
||||||
let executable_path = game_dir
|
//let executable_path = game_dir
|
||||||
.join(get_game_name())
|
// .join(get_game_name())
|
||||||
.join(get_game_name_with_executable());
|
// .join(get_game_name_with_executable());
|
||||||
|
|
||||||
debug!("{:?}", executable_path);
|
//debug!("{:?}", executable_path);
|
||||||
|
|
||||||
if executable_path.exists() {
|
//if executable_path.exists() {
|
||||||
remove_file(executable_path.clone()).await?;
|
// remove_file(executable_path.clone()).await?;
|
||||||
}
|
//}
|
||||||
|
|
||||||
match PatchedGameExecutable::get_exectable() {
|
//match PatchedGameExecutable::get_exectable() {
|
||||||
Some(exe) => {
|
// Some(exe) => {
|
||||||
let mut file = File::create(executable_path).await?;
|
// let mut file = File::create(executable_path).await?;
|
||||||
|
|
||||||
let data: Result<Vec<_>, _> = exe.data.bytes().collect();
|
// let data: Result<Vec<_>, _> = exe.data.bytes().collect();
|
||||||
let data = data.expect("Unable to read executable data");
|
// let data = data.expect("Unable to read executable data");
|
||||||
|
|
||||||
file.write_all(&data).await?;
|
// file.write_all(&data).await?;
|
||||||
}
|
// }
|
||||||
None => anyhow::bail!(
|
// None => anyhow::bail!(
|
||||||
"Game executable not included in the binary! Please report this to the developer!"
|
// "Game executable not included in the binary! Please report this to the developer!"
|
||||||
),
|
// ),
|
||||||
}
|
//}
|
||||||
|
|
||||||
let mut config = GameConfig::get_config().await;
|
let mut config = GameConfig::get_config().await;
|
||||||
config.is_game_patched = true;
|
config.is_game_patched = true;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user