Merge pull request #4550 from fufesou/refact/win_uninstall_cert
Refact/win uninstall cert
This commit is contained in:
		
						commit
						bad343adac
					
				| @ -151,6 +151,10 @@ pub fn core_main() -> Option<Vec<String>> { | |||||||
|                 #[cfg(windows)] |                 #[cfg(windows)] | ||||||
|                 hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); |                 hbb_common::allow_err!(crate::platform::windows::install_cert(&args[1])); | ||||||
|                 return None; |                 return None; | ||||||
|  |             } else if args[0] == "--uninstall-cert" { | ||||||
|  |                 #[cfg(windows)] | ||||||
|  |                 hbb_common::allow_err!(crate::platform::windows::uninstall_cert()); | ||||||
|  |                 return None; | ||||||
|             } else if args[0] == "--portable-service" { |             } else if args[0] == "--portable-service" { | ||||||
|                 crate::platform::elevate_or_run_as_system( |                 crate::platform::elevate_or_run_as_system( | ||||||
|                     click_setup, |                     click_setup, | ||||||
|  | |||||||
| @ -1245,10 +1245,18 @@ fn get_before_uninstall(kill_self: bool) -> String { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn get_uninstall(kill_self: bool) -> String { | fn get_uninstall(kill_self: bool) -> String { | ||||||
|  |     let mut uninstall_cert_cmd = "".to_string(); | ||||||
|  |     if let Ok(exe) = std::env::current_exe() { | ||||||
|  |         if let Some(exe_path) = exe.to_str() { | ||||||
|  |             uninstall_cert_cmd = format!("\"{}\" --uninstall-cert", exe_path); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     let (subkey, path, start_menu, _, _) = get_install_info(); |     let (subkey, path, start_menu, _, _) = get_install_info(); | ||||||
|     format!( |     format!( | ||||||
|         " |         " | ||||||
|     {before_uninstall} |     {before_uninstall} | ||||||
|  |     {uninstall_cert_cmd} | ||||||
|     reg delete {subkey} /f |     reg delete {subkey} /f | ||||||
|     if exist \"{path}\" rd /s /q \"{path}\" |     if exist \"{path}\" rd /s /q \"{path}\" | ||||||
|     if exist \"{start_menu}\" rd /s /q \"{start_menu}\" |     if exist \"{start_menu}\" rd /s /q \"{start_menu}\" | ||||||
| @ -1256,6 +1264,7 @@ fn get_uninstall(kill_self: bool) -> String { | |||||||
|     if exist \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\" del /f /q \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\" |     if exist \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\" del /f /q \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\" | ||||||
|     ",
 |     ",
 | ||||||
|         before_uninstall=get_before_uninstall(kill_self), |         before_uninstall=get_before_uninstall(kill_self), | ||||||
|  |         uninstall_cert_cmd = uninstall_cert_cmd, | ||||||
|         subkey=subkey, |         subkey=subkey, | ||||||
|         app_name = crate::get_app_name(), |         app_name = crate::get_app_name(), | ||||||
|         path = path, |         path = path, | ||||||
| @ -1264,7 +1273,6 @@ fn get_uninstall(kill_self: bool) -> String { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub fn uninstall_me(kill_self: bool) -> ResultType<()> { | pub fn uninstall_me(kill_self: bool) -> ResultType<()> { | ||||||
|     allow_err!(cert::uninstall_certs()); |  | ||||||
|     run_cmds(get_uninstall(kill_self), true, "uninstall") |     run_cmds(get_uninstall(kill_self), true, "uninstall") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -1901,7 +1909,11 @@ pub fn current_resolution(name: &str) -> ResultType<Resolution> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub(super) fn change_resolution_directly(name: &str, width: usize, height: usize) -> ResultType<()> { | pub(super) fn change_resolution_directly( | ||||||
|  |     name: &str, | ||||||
|  |     width: usize, | ||||||
|  |     height: usize, | ||||||
|  | ) -> ResultType<()> { | ||||||
|     let device_name = str_to_device_name(name); |     let device_name = str_to_device_name(name); | ||||||
|     unsafe { |     unsafe { | ||||||
|         let mut dm: DEVMODEW = std::mem::zeroed(); |         let mut dm: DEVMODEW = std::mem::zeroed(); | ||||||
| @ -1956,6 +1968,11 @@ pub fn install_cert(cert_file: &str) -> ResultType<()> { | |||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #[inline] | ||||||
|  | pub fn uninstall_cert() -> ResultType<()> { | ||||||
|  |     cert::uninstall_cert() | ||||||
|  | } | ||||||
|  | 
 | ||||||
| mod cert { | mod cert { | ||||||
|     use hbb_common::{allow_err, bail, log, ResultType}; |     use hbb_common::{allow_err, bail, log, ResultType}; | ||||||
|     use std::{path::Path, str::from_utf8}; |     use std::{path::Path, str::from_utf8}; | ||||||
| @ -2096,7 +2113,7 @@ mod cert { | |||||||
|         Ok(thumbprints) |         Ok(thumbprints) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn uninstall_certs() -> ResultType<()> { |     pub fn uninstall_cert() -> ResultType<()> { | ||||||
|         let thumbprints = get_thumbprints_to_rm()?; |         let thumbprints = get_thumbprints_to_rm()?; | ||||||
|         let reg_cert_key = unsafe { open_reg_cert_store()? }; |         let reg_cert_key = unsafe { open_reg_cert_store()? }; | ||||||
|         for thumbprint in thumbprints.iter() { |         for thumbprint in thumbprints.iter() { | ||||||
| @ -2176,7 +2193,7 @@ mod tests { | |||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn test_uninstall_cert() { |     fn test_uninstall_cert() { | ||||||
|         println!("uninstall driver certs: {:?}", cert::uninstall_certs()); |         println!("uninstall driver certs: {:?}", cert::uninstall_cert()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user