rustdesk 2024-03-27 00:38:13 +08:00
parent 81aec8402b
commit 85f387bfb9
8 changed files with 20 additions and 13 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

After

Width:  |  Height:  |  Size: 612 B

View File

@ -265,7 +265,8 @@ pub fn core_main() -> Option<Vec<String>> {
return None; return None;
} else if args[0] == "--uninstall-service" { } else if args[0] == "--uninstall-service" {
log::info!("start --uninstall-service"); log::info!("start --uninstall-service");
crate::platform::uninstall_service(false); crate::platform::uninstall_service(false, true);
return None;
} else if args[0] == "--service" { } else if args[0] == "--service" {
log::info!("start --service"); log::info!("start --service");
crate::start_os_service(); crate::start_os_service();
@ -277,7 +278,6 @@ pub fn core_main() -> Option<Vec<String>> {
#[cfg(any(target_os = "linux", target_os = "windows"))] #[cfg(any(target_os = "linux", target_os = "windows"))]
{ {
crate::start_server(true); crate::start_server(true);
return None;
} }
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
{ {
@ -286,6 +286,7 @@ pub fn core_main() -> Option<Vec<String>> {
// prevent server exit when encountering errors from tray // prevent server exit when encountering errors from tray
hbb_common::allow_err!(handler.join()); hbb_common::allow_err!(handler.join());
} }
return None;
} else if args[0] == "--import-config" { } else if args[0] == "--import-config" {
if args.len() == 2 { if args.len() == 2 {
let filepath; let filepath;

View File

@ -1275,7 +1275,7 @@ fn switch_service(stop: bool) -> String {
} }
} }
pub fn uninstall_service(show_new_window: bool) -> bool { pub fn uninstall_service(show_new_window: bool, _: bool) -> bool {
if !has_cmd("systemctl") { if !has_cmd("systemctl") {
return false; return false;
} }

View File

@ -219,7 +219,7 @@ fn correct_app_name(s: &str) -> String {
s s
} }
pub fn uninstall_service(show_new_window: bool) -> bool { pub fn uninstall_service(show_new_window: bool, sync: bool) -> bool {
// to-do: do together with win/linux about refactory start/stop service // to-do: do together with win/linux about refactory start/stop service
if !is_installed_daemon(false) { if !is_installed_daemon(false) {
return false; return false;
@ -232,7 +232,7 @@ pub fn uninstall_service(show_new_window: bool) -> bool {
return false; return false;
}; };
std::thread::spawn(move || { let func = move || {
match std::process::Command::new("osascript") match std::process::Command::new("osascript")
.arg("-e") .arg("-e")
.arg(script_body) .arg(script_body)
@ -275,7 +275,12 @@ pub fn uninstall_service(show_new_window: bool) -> bool {
} }
} }
} }
}); };
if sync {
func();
} else {
std::thread::spawn(func);
}
true true
} }
@ -515,7 +520,7 @@ pub fn start_os_service() {
// https://emorydunn.github.io/LaunchAgent/Classes/LaunchAgent.html#/s:11LaunchAgentAAC16throttleIntervalSiSgvp, // https://emorydunn.github.io/LaunchAgent/Classes/LaunchAgent.html#/s:11LaunchAgentAAC16throttleIntervalSiSgvp,
// by default, ThrottleInterval = 10, we changed it to 1 // by default, ThrottleInterval = 10, we changed it to 1
if dt >= 0 { if dt >= 0 {
std::thread::sleep(std::time::Duration::from_secs(dt.clamp(3, 30) as _)); std::thread::sleep(std::time::Duration::from_secs(dt.clamp(0, 15) as _));
} }
log::info!("The others killed"); log::info!("The others killed");
std::process::exit(0); std::process::exit(0);

View File

@ -8,8 +8,9 @@
<true/> <true/>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/Applications/RustDesk.app/Contents/MacOS/RustDesk</string> <string>/bin/sh</string>
<string>--service</string> <string>-c</string>
<string>sleep 1.5; /Applications/RustDesk.app/Contents/MacOS/RustDesk --service</string>
</array> </array>
<key>RunAtLoad</key> <key>RunAtLoad</key>
<true/> <true/>

View File

@ -2302,7 +2302,7 @@ impl Drop for WakeLock {
} }
} }
pub fn uninstall_service(show_new_window: bool) -> bool { pub fn uninstall_service(show_new_window: bool, _: bool) -> bool {
log::info!("Uninstalling service..."); log::info!("Uninstalling service...");
let filter = format!(" /FI \"PID ne {}\"", get_current_pid()); let filter = format!(" /FI \"PID ne {}\"", get_current_pid());
Config::set_option("stop-service".into(), "Y".into()); Config::set_option("stop-service".into(), "Y".into());

View File

@ -131,7 +131,7 @@ pub fn make_tray() -> hbb_common::ResultType<()> {
return; return;
} }
*/ */
if !crate::platform::uninstall_service(false) { if !crate::platform::uninstall_service(false, false) {
*control_flow = ControlFlow::Exit; *control_flow = ControlFlow::Exit;
} }
} else if event.id == open_i.id() { } else if event.id == open_i.id() {

View File

@ -348,7 +348,7 @@ pub fn set_option(key: String, value: String) {
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
{ {
let is_stop = value == "Y"; let is_stop = value == "Y";
if is_stop && crate::platform::macos::uninstall_service(true) { if is_stop && crate::platform::uninstall_service(true, false) {
return; return;
} }
} }
@ -356,7 +356,7 @@ pub fn set_option(key: String, value: String) {
{ {
if crate::platform::is_installed() { if crate::platform::is_installed() {
if value == "Y" { if value == "Y" {
if crate::platform::uninstall_service(true) { if crate::platform::uninstall_service(true, false) {
return; return;
} }
} else { } else {