mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-16 09:04:45 +01:00
81 lines
2.0 KiB
Rust
81 lines
2.0 KiB
Rust
use duct::cmd;
|
|
|
|
#[tauri::command]
|
|
pub fn run_program(path: String) {
|
|
// Without unwrap_or, this can crash when UAC prompt is denied
|
|
open::that(&path).unwrap_or(());
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn run_program_relative(path: String) {
|
|
// Save the current working directory
|
|
let cwd = std::env::current_dir().unwrap();
|
|
|
|
// Set the new working directory to the path before the executable
|
|
let mut path_buf = std::path::PathBuf::from(&path);
|
|
path_buf.pop();
|
|
|
|
// Set new working directory
|
|
std::env::set_current_dir(&path_buf).unwrap();
|
|
|
|
// Without unwrap_or, this can crash when UAC prompt is denied
|
|
open::that(&path).unwrap_or(());
|
|
|
|
// Restore the original working directory
|
|
std::env::set_current_dir(&cwd).unwrap();
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn run_command(program: &str, args: Vec<&str>) {
|
|
cmd(program, args).run().expect("Failed to run command");
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn run_jar(path: String, execute_in: String, java_path: String) {
|
|
let command = if java_path.is_empty() {
|
|
format!("java -jar \"{}\"", path)
|
|
} else {
|
|
format!("\"{}\" -jar \"{}\"", java_path, path)
|
|
};
|
|
|
|
// Open the program from the specified path.
|
|
match open::with(
|
|
format!("/k cd /D \"{}\" & {}", &execute_in, &command),
|
|
"C:\\Windows\\System32\\cmd.exe",
|
|
) {
|
|
Ok(_) => (),
|
|
Err(e) => println!("Failed to open jar ({} from {}): {}", &path, &execute_in, e),
|
|
};
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn open_in_browser(url: String) {
|
|
// Open the URL in the default browser.
|
|
match open::that(url) {
|
|
Ok(_) => (),
|
|
Err(e) => println!("Failed to open URL: {}", e),
|
|
};
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn install_location() -> String {
|
|
let mut exe_path = std::env::current_exe().unwrap();
|
|
|
|
// Get the path to the executable.
|
|
exe_path.pop();
|
|
|
|
return exe_path.to_str().unwrap().to_string();
|
|
}
|
|
|
|
#[cfg(windows)]
|
|
#[tauri::command]
|
|
pub fn is_elevated() -> bool {
|
|
is_elevated::is_elevated()
|
|
}
|
|
|
|
#[cfg(unix)]
|
|
#[tauri::command]
|
|
pub fn is_elevated() -> bool {
|
|
sudo::check() == sudo::RunningAs::Root
|
|
}
|