fix, run check_update_broker_process on privacy mode start

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-11-10 08:12:29 +08:00
parent 45dbea57f1
commit 895831f46f
3 changed files with 27 additions and 29 deletions

View File

@ -857,8 +857,18 @@ pub fn check_update_broker_process() -> ResultType<()> {
};
let cur_exe = cur_dir.join(process_exe);
// Force update broker exe if failed to check modified time.
let cmds = format!(
"
chcp 65001
taskkill /F /IM {process_exe}
copy /Y \"{origin_process_exe}\" \"{cur_exe}\"
",
cur_exe = cur_exe.to_string_lossy(),
);
if !std::path::Path::new(&cur_exe).exists() {
std::fs::copy(origin_process_exe, cur_exe)?;
run_cmds(cmds, false, "update_broker")?;
return Ok(());
}
@ -877,15 +887,6 @@ pub fn check_update_broker_process() -> ResultType<()> {
}
}
// Force update broker exe if failed to check modified time.
let cmds = format!(
"
chcp 65001
taskkill /F /IM {process_exe}
copy /Y \"{origin_process_exe}\" \"{cur_exe}\"
",
cur_exe = cur_exe.to_string_lossy(),
);
run_cmds(cmds, false, "update_broker")?;
Ok(())

View File

@ -83,6 +83,14 @@ impl WindowHandlers {
}
pub fn turn_on_privacy(conn_id: i32) -> ResultType<bool> {
let pre_conn_id = *CONN_ID.lock().unwrap();
if pre_conn_id == conn_id {
return Ok(true);
}
if pre_conn_id != 0 {
bail!("Privacy occupied by another one");
}
let exe_file = std::env::current_exe()?;
if let Some(cur_dir) = exe_file.parent() {
if !cur_dir.join("WindowInjection.dll").exists() {
@ -101,14 +109,6 @@ pub fn turn_on_privacy(conn_id: i32) -> ResultType<bool> {
std::thread::sleep(std::time::Duration::from_millis(1_000));
}
let pre_conn_id = *CONN_ID.lock().unwrap();
if pre_conn_id == conn_id {
return Ok(true);
}
if pre_conn_id != 0 {
bail!("Privacy occupied by another one");
}
let hwnd = wait_find_privacy_hwnd(0)?;
if hwnd.is_null() {
bail!("No privacy window created");
@ -152,6 +152,14 @@ pub fn start() -> ResultType<()> {
return Ok(());
}
log::info!("Start privacy mode window broker, check_update_broker_process");
if let Err(e) = crate::platform::windows::check_update_broker_process() {
log::warn!(
"Failed to check update broker process. Privacy mode may not work properly. {}",
e
);
}
let exe_file = std::env::current_exe()?;
let Some(cur_dir) = exe_file
.parent() else {

View File

@ -567,17 +567,6 @@ impl<T: InvokeUiCM> IpcTaskRunner<T> {
#[cfg(not(any(target_os = "android", target_os = "ios")))]
#[tokio::main(flavor = "current_thread")]
pub async fn start_ipc<T: InvokeUiCM>(cm: ConnectionManager<T>) {
#[cfg(windows)]
std::thread::spawn(move || {
log::info!("try create privacy mode window");
if let Err(e) = crate::platform::windows::check_update_broker_process() {
log::warn!(
"Failed to check update broker process. Privacy mode may not work properly. {}",
e
);
}
});
#[cfg(any(
target_os = "windows",
all(