mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
Merge pull request #2206 from 21pages/portable-service
quick start portable ci
This commit is contained in:
@@ -81,6 +81,13 @@ pub fn core_main() -> Option<Vec<String>> {
|
||||
}
|
||||
}
|
||||
#[cfg(windows)]
|
||||
#[cfg(feature = "quick_start")]
|
||||
if !crate::platform::is_installed() && args.is_empty() && !_is_elevate && !_is_run_as_system {
|
||||
if let Err(e) = crate::portable_service::client::start_portable_service() {
|
||||
log::error!("Failed to start portable service:{:?}", e);
|
||||
}
|
||||
}
|
||||
#[cfg(windows)]
|
||||
if !crate::platform::is_installed() && (_is_elevate || _is_run_as_system) {
|
||||
crate::platform::elevate_or_run_as_system(click_setup, _is_elevate, _is_run_as_system);
|
||||
return None;
|
||||
@@ -277,7 +284,7 @@ fn core_main_invoke_new_connection(mut args: std::env::Args) -> Option<Vec<Strin
|
||||
"RustDesk",
|
||||
(WM_USER + 2) as _, // refered from unilinks desktop pub
|
||||
uni_links.as_str(),
|
||||
true
|
||||
true,
|
||||
);
|
||||
return if res { None } else { Some(Vec::new()) };
|
||||
}
|
||||
|
||||
@@ -619,7 +619,11 @@ pub fn main_set_peer_option_sync(id: String, key: String, value: String) -> Sync
|
||||
}
|
||||
|
||||
pub fn main_set_peer_alias(id: String, alias: String) {
|
||||
main_broadcast_message(&HashMap::from([("name", "alias"), ("id", &id), ("alias", &alias)]));
|
||||
main_broadcast_message(&HashMap::from([
|
||||
("name", "alias"),
|
||||
("id", &id),
|
||||
("alias", &alias),
|
||||
]));
|
||||
set_peer_option(id, "alias".to_owned(), alias)
|
||||
}
|
||||
|
||||
@@ -1173,6 +1177,11 @@ pub fn main_account_auth_result() -> String {
|
||||
account_auth_result()
|
||||
}
|
||||
|
||||
pub fn main_on_main_window_close() {
|
||||
#[cfg(windows)]
|
||||
crate::portable_service::client::drop_portable_service_shared_memory();
|
||||
}
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
pub mod server_side {
|
||||
use jni::{
|
||||
|
||||
@@ -1553,6 +1553,13 @@ pub fn run_as_system(arg: &str) -> ResultType<()> {
|
||||
|
||||
pub fn elevate_or_run_as_system(is_setup: bool, is_elevate: bool, is_run_as_system: bool) {
|
||||
// avoid possible run recursively due to failed run.
|
||||
log::info!(
|
||||
"elevate:{}->{:?}, run_as_system:{}->{}",
|
||||
is_elevate,
|
||||
is_elevated(None),
|
||||
is_run_as_system,
|
||||
crate::username(),
|
||||
);
|
||||
let arg_elevate = if is_setup {
|
||||
"--noinstall --elevate"
|
||||
} else {
|
||||
|
||||
@@ -406,8 +406,9 @@ pub mod server {
|
||||
Pong => {
|
||||
nack = 0;
|
||||
}
|
||||
ConnCount(Some(n)) => {
|
||||
if n == 0 {
|
||||
ConnCount(Some(_n)) => {
|
||||
#[cfg(not(feature = "quick_start"))]
|
||||
if _n == 0 {
|
||||
log::info!("Connnection count equals 0, exit");
|
||||
stream.send(&Data::DataPortableService(WillClose)).await.ok();
|
||||
break;
|
||||
@@ -435,6 +436,7 @@ pub mod server {
|
||||
break;
|
||||
}
|
||||
stream.send(&Data::DataPortableService(Ping)).await.ok();
|
||||
#[cfg(not(feature = "quick_start"))]
|
||||
stream.send(&Data::DataPortableService(ConnCount(None))).await.ok();
|
||||
}
|
||||
}
|
||||
@@ -462,6 +464,7 @@ pub mod client {
|
||||
}
|
||||
|
||||
pub(crate) fn start_portable_service() -> ResultType<()> {
|
||||
log::info!("start portable service");
|
||||
if PORTABLE_SERVICE_RUNNING.lock().unwrap().clone() {
|
||||
bail!("already running");
|
||||
}
|
||||
@@ -484,7 +487,7 @@ pub mod client {
|
||||
crate::portable_service::SHMEM_NAME,
|
||||
shmem_size,
|
||||
)?);
|
||||
shutdown_hooks::add_shutdown_hook(drop_shmem);
|
||||
shutdown_hooks::add_shutdown_hook(drop_portable_service_shared_memory);
|
||||
}
|
||||
let mut option = SHMEM.lock().unwrap();
|
||||
let shmem = option.as_mut().unwrap();
|
||||
@@ -504,7 +507,7 @@ pub mod client {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
extern "C" fn drop_shmem() {
|
||||
pub extern "C" fn drop_portable_service_shared_memory() {
|
||||
log::info!("drop shared memory");
|
||||
*SHMEM.lock().unwrap() = None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user