From 97108e788fda117b783c2d321886c617cc98846c Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 26 Nov 2023 12:17:05 +0800 Subject: [PATCH 1/3] Fix. Install cert silent Signed-off-by: fufesou --- src/core_main.rs | 17 ++++++++++++++++- src/platform/windows.rs | 7 ++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/core_main.rs b/src/core_main.rs index 4529df6ab..53957fe45 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -201,8 +201,15 @@ pub fn core_main() -> Option> { .ok(); return None; } else if args[0] == "--install-cert" { + if args.len() == 1 { + log::error!("--install-cert must be called with cert file path"); + return None; + } #[cfg(windows)] hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); + if args.len() > 2 && args[2] == "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,7 +219,15 @@ pub fn core_main() -> Option> { #[cfg(windows)] hbb_common::allow_err!(crate::platform::windows::uninstall_cert()); return None; - } else if args[0] == "--portable-service" { + } else if args[0] == "--install-update-idd" { + // --install-cert must be called before this. + #[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, _is_elevate, diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 42e071468..aae21a4ce 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -1029,7 +1029,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 "RustDeskIddDriver.cer""#, src_exe); + if silent { + format!("{} silent", s) + } else { + s + } } else { "".to_owned() }; From 2d456fd1fc1aab0c323f1985a2f3a52a835afaa3 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 26 Nov 2023 12:30:14 +0800 Subject: [PATCH 2/3] --install-idd with cert Signed-off-by: fufesou --- src/core_main.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core_main.rs b/src/core_main.rs index 53957fe45..6c588a48a 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -219,15 +219,18 @@ pub fn core_main() -> Option> { #[cfg(windows)] hbb_common::allow_err!(crate::platform::windows::uninstall_cert()); return None; - } else if args[0] == "--install-update-idd" { - // --install-cert must be called before this. + } else if args[0] == "--install-idd" { + // Install cert if cert file is provided (2rd arg). + if args.len() == 2 { + #[cfg(windows)] + hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); + } #[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" { + } else if args[0] == "--portable-service" { crate::platform::elevate_or_run_as_system( click_setup, _is_elevate, From bb7300a055c8303ae1f014b84ae91178271eed41 Mon Sep 17 00:00:00 2001 From: fufesou Date: Sun, 26 Nov 2023 14:26:45 +0800 Subject: [PATCH 3/3] Remove cert file arg on installing cert Signed-off-by: fufesou --- src/core_main.rs | 20 ++++++++++---------- src/platform/windows.rs | 4 +++- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/core_main.rs b/src/core_main.rs index 6c588a48a..fe58083b7 100644 --- a/src/core_main.rs +++ b/src/core_main.rs @@ -201,13 +201,11 @@ pub fn core_main() -> Option> { .ok(); return None; } else if args[0] == "--install-cert" { - if args.len() == 1 { - log::error!("--install-cert must be called with cert file path"); - return None; - } #[cfg(windows)] - hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); - if args.len() > 2 && args[2] == "silent" { + 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"))] @@ -220,10 +218,12 @@ pub fn core_main() -> Option> { hbb_common::allow_err!(crate::platform::windows::uninstall_cert()); return None; } else if args[0] == "--install-idd" { - // Install cert if cert file is provided (2rd arg). - if args.len() == 2 { - #[cfg(windows)] - hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); + #[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() { diff --git a/src/platform/windows.rs b/src/platform/windows.rs index aae21a4ce..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,7 @@ 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") { - let s = format!(r#""{}" --install-cert "RustDeskIddDriver.cer""#, src_exe); + let s = format!(r#""{}" --install-cert"#, src_exe); if silent { format!("{} silent", s) } else {