From 4b243f8ea5ae85facb6ad5d81f975bd3d1bf2993 Mon Sep 17 00:00:00 2001 From: NotThorny <107363768+NotThorny@users.noreply.github.com> Date: Thu, 27 Nov 2025 21:05:29 -0700 Subject: [PATCH] Fix windows deps --- src-tauri/Cargo.lock | 187 ++++++++++++++++++++++++++++++++++++------- src-tauri/Cargo.toml | 12 ++- src-tauri/src/lib.rs | 9 +-- 3 files changed, 172 insertions(+), 36 deletions(-) diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index d84f64e..14d4db7 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1079,10 +1079,12 @@ dependencies = [ "futures-util", "getopts", "hudsucker", + "is_elevated", "once_cell", "open", "os_type", "rcgen 0.9.3", + "registry", "reqwest", "rust-ini", "rustls-pemfile", @@ -1091,7 +1093,7 @@ dependencies = [ "sevenz-rust", "simple-zip", "sudo", - "sysinfo 0.37.2", + "sysinfo 0.28.4", "tauri", "tauri-build", "tauri-plugin-dialog", @@ -1102,6 +1104,7 @@ dependencies = [ "tokio", "unrar", "which 8.0.0", + "windows-service", "zip 6.0.0", ] @@ -2644,6 +2647,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "is_elevated" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5299060ff5db63e788015dcb9525ad9b84f4fd9717ed2cbdeba5018cbf42f9b5" +dependencies = [ + "winapi", +] + [[package]] name = "itoa" version = "1.0.15" @@ -4330,6 +4342,26 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "rcgen" version = "0.9.3" @@ -4425,6 +4457,19 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +[[package]] +name = "registry" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "515143bd3c240fd5a47002a552fd7eba71acf8cd3cf7472e5ec392cda2ed3d90" +dependencies = [ + "bitflags 1.3.2", + "log", + "thiserror 1.0.69", + "utfx", + "windows 0.58.0", +] + [[package]] name = "reqwest" version = "0.12.24" @@ -5320,6 +5365,21 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "sysinfo" +version = "0.28.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2f3ca6693feb29a89724516f016488e9aafc7f37264f898593ee4b942f31b" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi", +] + [[package]] name = "sysinfo" version = "0.35.2" @@ -5331,21 +5391,7 @@ dependencies = [ "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows", -] - -[[package]] -name = "sysinfo" -version = "0.37.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" -dependencies = [ - "libc", - "memchr", - "ntapi", - "objc2-core-foundation", - "objc2-io-kit", - "windows", + "windows 0.61.3", ] [[package]] @@ -5422,7 +5468,7 @@ dependencies = [ "tao-macros", "unicode-segmentation", "url", - "windows", + "windows 0.61.3", "windows-core 0.61.2", "windows-version", "x11-dl", @@ -5504,7 +5550,7 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows", + "windows 0.61.3", ] [[package]] @@ -5645,7 +5691,7 @@ dependencies = [ "tauri-plugin", "thiserror 2.0.17", "url", - "windows", + "windows 0.61.3", "zbus", ] @@ -5692,7 +5738,7 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows", + "windows 0.61.3", ] [[package]] @@ -5718,7 +5764,7 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows", + "windows 0.61.3", "wry", ] @@ -6365,6 +6411,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utfx" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133bf74f01486773317ddfcde8e2e20d2933cc3b68ab797e5d718bef996a81de" + [[package]] name = "uuid" version = "1.18.1" @@ -6673,10 +6725,10 @@ checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows", + "windows 0.61.3", "windows-core 0.61.2", - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", ] [[package]] @@ -6697,7 +6749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" dependencies = [ "thiserror 2.0.17", - "windows", + "windows 0.61.3", "windows-core 0.61.2", ] @@ -6788,6 +6840,16 @@ dependencies = [ "windows-version", ] +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.3" @@ -6810,14 +6872,27 @@ dependencies = [ "windows-core 0.61.2", ] +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.1.3", "windows-result 0.3.4", "windows-strings 0.4.2", @@ -6829,8 +6904,8 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link 0.2.1", "windows-result 0.4.1", "windows-strings 0.5.1", @@ -6847,6 +6922,17 @@ dependencies = [ "windows-threading", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -6858,6 +6944,17 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "windows-interface" version = "0.59.3" @@ -6902,6 +6999,15 @@ dependencies = [ "windows-strings 0.5.1", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -6920,6 +7026,27 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-service" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9db37ecb5b13762d95468a2fc6009d4b2c62801243223aabd44fca13ad13c8" +dependencies = [ + "bitflags 1.3.2", + "widestring", + "windows-sys 0.45.0", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.4.2" @@ -7272,7 +7399,7 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows", + "windows 0.61.3", "windows-core 0.61.2", "windows-version", "x11-dl", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 62fa64b..71986eb 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -17,6 +17,10 @@ crate-type = ["staticlib", "cdylib", "rlib"] [build-dependencies] tauri-build = { version = "2", features = [] } +[target.'cfg(windows)'.dependencies] +is_elevated = "0.1.2" +registry = "1.2.1" + [dependencies] tauri = { version = "2", features = [] } tauri-plugin-opener = "2" @@ -24,7 +28,10 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" args = "2.2.0" once_cell = "1.21.3" -sysinfo = "0.37.2" + +# Access system process info. +sysinfo = "0.28.4" + futures-util = "0.3.31" file_diff = "1.0.0" tokio = { version = "1.48.0", features = ["signal"] } @@ -45,6 +52,9 @@ tauri-plugin-fs = "2.4.4" tauri-plugin-dialog = "2.4.2" tauri-plugin-shell = "2.3.3" +# Services +windows-service = "0.6.0" + [target.'cfg(unix)'.dependencies] sudo = "0.6.0" diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 72cb0ec..42bcd7b 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -8,13 +8,12 @@ use args::{Args, ArgsError}; use once_cell::sync::Lazy; use proxy::set_proxy_addr; use tauri::{Listener, Emitter}; -use std::ffi::OsStr; use std::io::Write; use std::{collections::HashMap, sync::Mutex}; use tauri::async_runtime::block_on; use std::thread; -use sysinfo::{Pid, System}; +use sysinfo::{Pid, ProcessExt, System, SystemExt}; #[cfg(target_os = "windows")] use crate::admin::reopen_as_admin; @@ -167,7 +166,7 @@ pub fn run() { let args: Vec = std::env::args().collect(); let parsed_args = block_on(parse_args(&args)).unwrap(); #[cfg(target_os = "windows")] - if !is_elevated() && !parsed_args.value_of("no-admin")? { + if !is_elevated() && !parsed_args.has_value("no-admin") { println!("==============================================================================="); println!("You running as a non-elevated user. Some stuff will almost definitely not work."); println!("==============================================================================="); @@ -420,8 +419,8 @@ fn enable_grasscutter_watcher(window: tauri::Window, process: String) { let mut system = System::new_all(); - for process_gc in system.processes_by_name(OsStr::new("java")) { - if process_gc.cmd().last().unwrap().to_str().unwrap().contains(&grasscutter_name) { + for process_gc in system.processes_by_name("java") { + if process_gc.cmd().last().unwrap().contains(&grasscutter_name) { gc_pid = process_gc.pid(); *GC_PID.lock().unwrap() = gc_pid.into(); window