mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-07-04 06:14:56 +03:00
Refact/printer driver default unchecked (#15191)
* refact: installation, printer driver, default unchecked Signed-off-by: fufesou <linlong1266@gmail.com> * refact: silent install, get option from the reg values Signed-off-by: fufesou <linlong1266@gmail.com> * refact: silent install, arg printer=[0|1] Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
@@ -262,11 +262,9 @@ pub fn core_main() -> Option<Vec<String>> {
|
||||
if config::is_disable_installation() {
|
||||
return None;
|
||||
}
|
||||
#[cfg(not(windows))]
|
||||
let options = "desktopicon startmenu";
|
||||
#[cfg(windows)]
|
||||
let options = "desktopicon startmenu printer";
|
||||
let res = platform::install_me(options, "".to_owned(), true, args.len() > 1);
|
||||
let (printer_override, debug) = parse_silent_install_args(&args);
|
||||
let options = platform::get_silent_install_options(printer_override);
|
||||
let res = platform::install_me(options, "".to_owned(), true, debug);
|
||||
let text = match res {
|
||||
Ok(_) => translate("Installation Successful!".to_string()),
|
||||
Err(err) => {
|
||||
@@ -933,6 +931,23 @@ fn is_cli_setting_change_disabled() -> bool {
|
||||
config::is_disable_settings() && !allow_command_line_settings
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
fn parse_silent_install_args(args: &[String]) -> (Option<bool>, bool) {
|
||||
let mut printer_override = None;
|
||||
let mut debug = false;
|
||||
|
||||
for arg in args.iter().skip(1) {
|
||||
match arg.as_str() {
|
||||
"printer=1" => printer_override = Some(true),
|
||||
"printer=0" => printer_override = Some(false),
|
||||
"debug" => debug = true,
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
(printer_override, debug)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
@@ -1324,6 +1324,23 @@ pub fn get_install_options() -> String {
|
||||
serde_json::to_string(&opts).unwrap_or("{}".to_owned())
|
||||
}
|
||||
|
||||
pub fn get_silent_install_options(printer_override: Option<bool>) -> &'static str {
|
||||
let install_printer = match printer_override {
|
||||
Some(override_value) => override_value,
|
||||
None => {
|
||||
let app_name = crate::get_app_name();
|
||||
let subkey = format!(".{}", app_name.to_lowercase());
|
||||
let printer = get_reg_of_hkcr(&subkey, REG_NAME_INSTALL_PRINTER);
|
||||
printer.as_deref() == Some("1")
|
||||
}
|
||||
};
|
||||
if install_printer && is_win_10_or_greater() {
|
||||
"desktopicon startmenu printer"
|
||||
} else {
|
||||
"desktopicon startmenu"
|
||||
}
|
||||
}
|
||||
|
||||
// This function return Option<String>, because some registry value may be empty.
|
||||
fn get_reg_of_hkcr(subkey: &str, name: &str) -> Option<String> {
|
||||
let hkcr = RegKey::predef(HKEY_CLASSES_ROOT);
|
||||
|
||||
Reference in New Issue
Block a user