diff --git a/src/core_main.rs b/src/core_main.rs index 4529df6ab..fe58083b7 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -202,7 +202,12 @@ pub fn core_main() -> Option> { return None; } else if args[0] == "--install-cert" { #[cfg(windows)] - hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); + hbb_common::allow_err!(crate::platform::windows::install_cert( + crate::platform::windows::DRIVER_CERT_FILE + )); + if args.len() > 1 && args[1] == "silent" { + return None; + } #[cfg(all(windows, feature = "virtual_display_driver"))] if crate::virtual_display_manager::is_virtual_display_supported() { hbb_common::allow_err!(crate::virtual_display_manager::install_update_driver()); @@ -212,6 +217,19 @@ pub fn core_main() -> Option> { #[cfg(windows)] hbb_common::allow_err!(crate::platform::windows::uninstall_cert()); return None; + } else if args[0] == "--install-idd" { + #[cfg(windows)] + { + // It's ok to install cert multiple times. + hbb_common::allow_err!(crate::platform::windows::install_cert( + crate::platform::windows::DRIVER_CERT_FILE + )); + } + #[cfg(all(windows, feature = "virtual_display_driver"))] + if crate::virtual_display_manager::is_virtual_display_supported() { + hbb_common::allow_err!(crate::virtual_display_manager::install_update_driver()); + } + return None; } else if args[0] == "--portable-service" { crate::platform::elevate_or_run_as_system( click_setup, diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 42e071468..4799fa730 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -63,6 +63,8 @@ use windows_service::{ use winreg::enums::*; use winreg::RegKey; +pub const DRIVER_CERT_FILE: &str = "RustDeskIddDriver.cer"; + pub fn get_cursor_pos() -> Option<(i32, i32)> { unsafe { #[allow(invalid_value)] @@ -1029,7 +1031,12 @@ if exist \"{tmp_path}\\{app_name} Tray.lnk\" del /f /q \"{tmp_path}\\{app_name} let src_exe = std::env::current_exe()?.to_str().unwrap_or("").to_string(); let install_cert = if options.contains("driverCert") { - format!("\"{}\" --install-cert \"RustDeskIddDriver.cer\"", src_exe) + let s = format!(r#""{}" --install-cert"#, src_exe); + if silent { + format!("{} silent", s) + } else { + s + } } else { "".to_owned() };