fix flutter upgrade
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
d48a94e530
commit
894fe69285
@ -181,7 +181,7 @@ class _InstallPageState extends State<InstallPage> with WindowListener {
|
|||||||
void install() {
|
void install() {
|
||||||
btnEnabled.value = false;
|
btnEnabled.value = false;
|
||||||
showProgress.value = true;
|
showProgress.value = true;
|
||||||
String args = '--flutter';
|
String args = '';
|
||||||
if (startmenu.value) args += ' startmenu';
|
if (startmenu.value) args += ' startmenu';
|
||||||
if (desktopicon.value) args += ' desktopicon';
|
if (desktopicon.value) args += ' desktopicon';
|
||||||
bind.installInstallMe(options: args, path: controller.text);
|
bind.installInstallMe(options: args, path: controller.text);
|
||||||
|
@ -16,15 +16,6 @@ typedef void (*FUNC_RUSTDESK_FREE_ARGS)( char**, int);
|
|||||||
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
||||||
_In_ wchar_t *command_line, _In_ int show_command)
|
_In_ wchar_t *command_line, _In_ int show_command)
|
||||||
{
|
{
|
||||||
// uni links dispatch
|
|
||||||
HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"rustdesk");
|
|
||||||
if (hwnd != NULL) {
|
|
||||||
DispatchToUniLinksDesktop(hwnd);
|
|
||||||
|
|
||||||
::ShowWindow(hwnd, SW_NORMAL);
|
|
||||||
::SetForegroundWindow(hwnd);
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
HINSTANCE hInstance = LoadLibraryA("librustdesk.dll");
|
HINSTANCE hInstance = LoadLibraryA("librustdesk.dll");
|
||||||
if (!hInstance)
|
if (!hInstance)
|
||||||
{
|
{
|
||||||
@ -56,6 +47,16 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
|||||||
std::vector<std::string> rust_args(c_args, c_args + args_len);
|
std::vector<std::string> rust_args(c_args, c_args + args_len);
|
||||||
free_c_args(c_args, args_len);
|
free_c_args(c_args, args_len);
|
||||||
|
|
||||||
|
// uni links dispatch
|
||||||
|
HWND hwnd = ::FindWindow(L"FLUTTER_RUNNER_WIN32_WINDOW", L"rustdesk");
|
||||||
|
if (hwnd != NULL) {
|
||||||
|
DispatchToUniLinksDesktop(hwnd);
|
||||||
|
|
||||||
|
::ShowWindow(hwnd, SW_NORMAL);
|
||||||
|
::SetForegroundWindow(hwnd);
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
// Attach to console when present (e.g., 'flutter run') or create a
|
// Attach to console when present (e.g., 'flutter run') or create a
|
||||||
// new console when running with a debugger.
|
// new console when running with a debugger.
|
||||||
if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent())
|
if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent())
|
||||||
@ -78,7 +79,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
|
|||||||
FlutterWindow window(project);
|
FlutterWindow window(project);
|
||||||
Win32Window::Point origin(10, 10);
|
Win32Window::Point origin(10, 10);
|
||||||
Win32Window::Size size(800, 600);
|
Win32Window::Size size(800, 600);
|
||||||
if (!window.CreateAndShow(L"rustdesk", origin, size))
|
if (!window.CreateAndShow(L"RustDesk", origin, size))
|
||||||
{
|
{
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -878,6 +878,25 @@ fn get_install_info_with_subkey(subkey: String) -> (String, String, String, Stri
|
|||||||
(subkey, path, start_menu, exe)
|
(subkey, path, start_menu, exe)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn copy_exe_cmd(src_exe: &str, _exe: &str, _path: &str) -> String {
|
||||||
|
#[cfg(feature = "flutter")]
|
||||||
|
return format!(
|
||||||
|
"XCOPY \"{}\" \"{}\" /Y /E /H /C /I /K /R /Z",
|
||||||
|
PathBuf::from(src_exe)
|
||||||
|
.parent()
|
||||||
|
.unwrap()
|
||||||
|
.to_string_lossy()
|
||||||
|
.to_string(),
|
||||||
|
_path
|
||||||
|
);
|
||||||
|
#[cfg(not(feature = "flutter"))]
|
||||||
|
return format!(
|
||||||
|
"copy /Y \"{src_exe}\" \"{exe}\"",
|
||||||
|
src_exe = src_exe,
|
||||||
|
exe = _exe
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn update_me() -> ResultType<()> {
|
pub fn update_me() -> ResultType<()> {
|
||||||
let (_, path, _, exe) = get_install_info();
|
let (_, path, _, exe) = get_install_info();
|
||||||
let src_exe = std::env::current_exe()?.to_str().unwrap_or("").to_owned();
|
let src_exe = std::env::current_exe()?.to_str().unwrap_or("").to_owned();
|
||||||
@ -887,13 +906,13 @@ pub fn update_me() -> ResultType<()> {
|
|||||||
sc stop {app_name}
|
sc stop {app_name}
|
||||||
taskkill /F /IM {broker_exe}
|
taskkill /F /IM {broker_exe}
|
||||||
taskkill /F /IM {app_name}.exe
|
taskkill /F /IM {app_name}.exe
|
||||||
copy /Y \"{src_exe}\" \"{exe}\"
|
{copy_exe}
|
||||||
\"{src_exe}\" --extract \"{path}\"
|
\"{src_exe}\" --extract \"{path}\"
|
||||||
sc start {app_name}
|
sc start {app_name}
|
||||||
{lic}
|
{lic}
|
||||||
",
|
",
|
||||||
src_exe = src_exe,
|
src_exe = src_exe,
|
||||||
exe = exe,
|
copy_exe = copy_exe_cmd(&src_exe, &exe, &path),
|
||||||
broker_exe = crate::ui::win_privacy::INJECTED_PROCESS_EXE,
|
broker_exe = crate::ui::win_privacy::INJECTED_PROCESS_EXE,
|
||||||
path = path,
|
path = path,
|
||||||
app_name = crate::get_app_name(),
|
app_name = crate::get_app_name(),
|
||||||
@ -1038,18 +1057,6 @@ copy /Y \"{tmp_path}\\Uninstall {app_name}.lnk\" \"{start_menu}\\\"
|
|||||||
app_name = crate::get_app_name(),
|
app_name = crate::get_app_name(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
let mut flutter_copy = Default::default();
|
|
||||||
if options.contains("--flutter") {
|
|
||||||
flutter_copy = format!(
|
|
||||||
"XCOPY \"{}\" \"{}\" /Y /E /H /C /I /K /R /Z",
|
|
||||||
std::env::current_exe()?
|
|
||||||
.parent()
|
|
||||||
.unwrap()
|
|
||||||
.to_string_lossy()
|
|
||||||
.to_string(),
|
|
||||||
path
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let meta = std::fs::symlink_metadata(std::env::current_exe()?)?;
|
let meta = std::fs::symlink_metadata(std::env::current_exe()?)?;
|
||||||
let size = meta.len() / 1024;
|
let size = meta.len() / 1024;
|
||||||
@ -1072,13 +1079,14 @@ if exist \"{tmp_path}\\{app_name} Tray.lnk\" del /f /q \"{tmp_path}\\{app_name}
|
|||||||
tmp_path = tmp_path,
|
tmp_path = tmp_path,
|
||||||
app_name = crate::get_app_name(),
|
app_name = crate::get_app_name(),
|
||||||
);
|
);
|
||||||
|
let src_exe = std::env::current_exe()?.to_str().unwrap_or("").to_string();
|
||||||
|
|
||||||
let cmds = format!(
|
let cmds = format!(
|
||||||
"
|
"
|
||||||
{uninstall_str}
|
{uninstall_str}
|
||||||
chcp 65001
|
chcp 65001
|
||||||
md \"{path}\"
|
md \"{path}\"
|
||||||
{flutter_copy}
|
{copy_exe}
|
||||||
copy /Y \"{src_exe}\" \"{exe}\"
|
|
||||||
copy /Y \"{ORIGIN_PROCESS_EXE}\" \"{path}\\{broker_exe}\"
|
copy /Y \"{ORIGIN_PROCESS_EXE}\" \"{path}\\{broker_exe}\"
|
||||||
\"{src_exe}\" --extract \"{path}\"
|
\"{src_exe}\" --extract \"{path}\"
|
||||||
reg add {subkey} /f
|
reg add {subkey} /f
|
||||||
@ -1111,7 +1119,7 @@ sc delete {app_name}
|
|||||||
",
|
",
|
||||||
uninstall_str=uninstall_str,
|
uninstall_str=uninstall_str,
|
||||||
path=path,
|
path=path,
|
||||||
src_exe=std::env::current_exe()?.to_str().unwrap_or(""),
|
src_exe=src_exe,
|
||||||
exe=exe,
|
exe=exe,
|
||||||
ORIGIN_PROCESS_EXE = crate::ui::win_privacy::ORIGIN_PROCESS_EXE,
|
ORIGIN_PROCESS_EXE = crate::ui::win_privacy::ORIGIN_PROCESS_EXE,
|
||||||
broker_exe=crate::ui::win_privacy::INJECTED_PROCESS_EXE,
|
broker_exe=crate::ui::win_privacy::INJECTED_PROCESS_EXE,
|
||||||
@ -1140,7 +1148,7 @@ sc delete {app_name}
|
|||||||
} else {
|
} else {
|
||||||
&dels
|
&dels
|
||||||
},
|
},
|
||||||
flutter_copy = flutter_copy,
|
copy_exe = copy_exe_cmd(&src_exe, &exe, &path),
|
||||||
);
|
);
|
||||||
run_cmds(cmds, debug, "install")?;
|
run_cmds(cmds, debug, "install")?;
|
||||||
std::thread::sleep(std::time::Duration::from_millis(2000));
|
std::thread::sleep(std::time::Duration::from_millis(2000));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user