From 18464ec57067aec654dd6f6224eec01f07078b92 Mon Sep 17 00:00:00 2001 From: 21pages Date: Sat, 1 Jun 2024 20:28:21 +0800 Subject: [PATCH] windows replace uni with cmd to start up main window after installation (#8235) This is to avoid uni link not working Other change: The install window now has the title "appname - Install" to distinguish it from the main application window. Signed-off-by: 21pages --- flutter/lib/main.dart | 1 - flutter/windows/runner/main.cpp | 18 +++++++++++++++--- src/platform/windows.rs | 4 +--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/flutter/lib/main.dart b/flutter/lib/main.dart index 6c4c9f2bb..a7acc171e 100644 --- a/flutter/lib/main.dart +++ b/flutter/lib/main.dart @@ -338,7 +338,6 @@ void runInstallPage() async { windowManager.focus(); windowManager.setOpacity(1); windowManager.setAlignment(Alignment.center); // ensure - windowManager.setTitle(getWindowName()); }); } diff --git a/flutter/windows/runner/main.cpp b/flutter/windows/runner/main.cpp index 7547f5e92..5c55d1c28 100644 --- a/flutter/windows/runner/main.cpp +++ b/flutter/windows/runner/main.cpp @@ -116,15 +116,27 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, if (!command_line_arguments.empty() && command_line_arguments.front().compare(0, cmParam.size(), cmParam.c_str()) == 0) { is_cm_page = true; } + bool is_install_page = false; + auto installParam = std::string("--install"); + if (!command_line_arguments.empty() && command_line_arguments.front().compare(0, installParam.size(), installParam.c_str()) == 0) { + is_install_page = true; + } + command_line_arguments.insert(command_line_arguments.end(), rust_args.begin(), rust_args.end()); project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); FlutterWindow window(project); Win32Window::Point origin(10, 10); Win32Window::Size size(800, 600); - if (!window.CreateAndShow( - is_cm_page ? app_name + L" - Connection Manager" : app_name, origin, - size, !is_cm_page)) { + std::wstring window_title; + if (is_cm_page) { + window_title = app_name + L" - Connection Manager"; + } else if (is_install_page) { + window_title = app_name + L" - Install"; + } else { + window_title = app_name; + } + if (!window.CreateAndShow(window_title, origin, size, !is_cm_page)) { return EXIT_FAILURE; } window.SetQuitOnClose(true); diff --git a/src/platform/windows.rs b/src/platform/windows.rs index a3cc9f38e..1b30fdeed 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -2185,12 +2185,10 @@ sc start {app_name} fn run_after_run_cmds(silent: bool) { let (_, _, _, exe) = get_install_info(); - let app = crate::get_app_name().to_lowercase(); if !silent { log::debug!("Spawn new window"); allow_err!(std::process::Command::new("cmd") - .arg("/c") - .arg(format!("timeout /t 2 & start {app}://")) + .args(&["/c", "timeout", "/t", "2", "&", &format!("{exe}")]) .creation_flags(winapi::um::winbase::CREATE_NO_WINDOW) .spawn()); }