diff --git a/.gitignore b/.gitignore index d843c51..f6f5e2c 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,5 @@ app.*.map.json /android/app/release l10n_errors.txt -pubspec.lock \ No newline at end of file +pubspec.lock +/dist/ \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index c8b1b83..3123533 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,12 +29,22 @@ import 'package:proxypin/ui/mobile/mobile.dart'; import 'package:proxypin/utils/navigator.dart'; import 'package:proxypin/utils/platform.dart'; import 'package:window_manager/window_manager.dart'; +import 'package:windows_single_instance/windows_single_instance.dart'; + +import 'network/util/logger.dart'; ///主入口 ///@author wanghongen void main(List args) async { WidgetsFlutterBinding.ensureInitialized(); + if (Platform.isWindows) { + await WindowsSingleInstance.ensureSingleInstance([], "ProxyPin", onSecondWindow: (args) { + logger.d('WindowsSingleInstance onSecondWindow $args'); + windowManager.show(); + }); + } + var instance = AppConfiguration.instance; //多窗口 if (args.firstOrNull == 'multi_window') { diff --git a/pubspec.yaml b/pubspec.yaml index 7297dd6..ffaf960 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,6 +18,7 @@ dependencies: logger: ^2.5.0 date_format: ^2.0.9 window_manager: ^0.4.3 + windows_single_instance: ^1.0.1 desktop_multi_window: git: url: https://gitee.com/wanghongenpin/flutter-plugins.git diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index bfb3e6c..47cc4cd 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -16,6 +16,7 @@ #include #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { DesktopMultiWindowPluginRegisterWithRegistrar( @@ -38,4 +39,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("Win32audioPluginCApi")); WindowManagerPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("WindowManagerPlugin")); + WindowsSingleInstancePluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowsSingleInstancePlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index a0b8a09..b982dcd 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -13,6 +13,7 @@ list(APPEND FLUTTER_PLUGIN_LIST url_launcher_windows win32audio window_manager + windows_single_instance ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/windows/packaging/exe/inno_setup.sas b/windows/packaging/exe/inno_setup.sas index adc1f85..de4a891 100644 --- a/windows/packaging/exe/inno_setup.sas +++ b/windows/packaging/exe/inno_setup.sas @@ -2,7 +2,7 @@ AppId={{APP_ID}} AppVersion={{APP_VERSION}} AppName={{DISPLAY_NAME}} -AppPublisher={{PUBLISHER_NAME}} +AppPublisher={{PUBLISHER}} AppPublisherURL={{PUBLISHER_URL}} AppSupportURL={{PUBLISHER_URL}} AppUpdatesURL={{PUBLISHER_URL}} @@ -26,8 +26,9 @@ CloseApplications=force {% endfor %} [Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if CREATE_DESKTOP_ICON != true %}unchecked{% else %}checkedonce{% endif %} -Name: "launchAtStartup"; Description: "{cm:AutoStartProgram,{{DISPLAY_NAME}}}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if LAUNCH_AT_STARTUP != true %}unchecked{% else %}checkedonce{% endif %} +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: {% if CREATE_DESKTOP_ICON != true %}unchecked{% else %}checkablealone{% endif %} +Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + [Files] Source: "{{SOURCE_DIR}}\\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files @@ -35,6 +36,6 @@ Source: "{{SOURCE_DIR}}\\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdi [Icons] Name: "{autoprograms}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}" Name: "{autodesktop}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}"; Tasks: desktopicon -Name: "{userstartup}\\{{DISPLAY_NAME}}"; Filename: "{app}\\{{EXECUTABLE_NAME}}"; WorkingDir: "{app}"; Tasks: launchAtStartup + [Run] Filename: "{app}\\{{EXECUTABLE_NAME}}"; Description: "{cm:LaunchProgram,{{DISPLAY_NAME}}}"; Flags: nowait postinstall skipifsilent diff --git a/windows/packaging/exe/make_config.yaml b/windows/packaging/exe/make_config.yaml index a08b6b6..6a9b275 100644 --- a/windows/packaging/exe/make_config.yaml +++ b/windows/packaging/exe/make_config.yaml @@ -4,6 +4,7 @@ publisher_url: https://github.com/wanghongenpin/proxypin display_name: ProxyPin create_desktop_icon: true install_dir_name: "{autopf64}\\ProxyPin" +setup_icon_file: windows\runner\resources\app_icon.ico locales: - en - zh