diff --git a/app/lib/provider/selection/selected_sending_files_provider.dart b/app/lib/provider/selection/selected_sending_files_provider.dart index fd02f975..4cba19a2 100644 --- a/app/lib/provider/selection/selected_sending_files_provider.dart +++ b/app/lib/provider/selection/selected_sending_files_provider.dart @@ -1,4 +1,4 @@ -import 'dart:convert' show utf8; +import 'dart:convert' show jsonDecode, utf8; import 'dart:io'; import 'dart:typed_data'; @@ -13,6 +13,7 @@ import 'package:localsend_app/util/send_ignore.dart'; import 'package:logging/logging.dart'; import 'package:path/path.dart' as p; import 'package:refena_flutter/refena_flutter.dart'; +import 'package:share_handler/share_handler.dart'; import 'package:uuid/uuid.dart'; final _logger = Logger('SelectedSendingFiles'); @@ -287,7 +288,27 @@ class LoadSelectionFromArgsAction extends AsyncReduxActionWithResult, bool)> reduce() async { bool filesAdded = false; + bool nextShare = false; for (final arg in args) { + if (arg == '--share') { + nextShare = true; + continue; + } + if (nextShare) { + nextShare = false; + final json = jsonDecode(arg); + final SharedMedia payload = SharedMedia.decode(json); + final message = payload.content; + if (message != null && message.trim().isNotEmpty) { + dispatch(AddMessageAction(message: message)); + } + await dispatchAsync(AddFilesAction( + files: payload.attachments?.where((a) => a != null).cast() ?? [], + converter: CrossFileConverters.convertSharedAttachment, + )); + filesAdded = true; + continue; + } if (arg.startsWith('-')) { continue; } diff --git a/app/windows/.gitignore b/app/windows/.gitignore index d492d0d9..17825c45 100644 --- a/app/windows/.gitignore +++ b/app/windows/.gitignore @@ -15,3 +15,5 @@ x86/ *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ + +localsend_msix_helper.msix diff --git a/app/windows/CMakeLists.txt b/app/windows/CMakeLists.txt index 334b5519..48eb14a8 100644 --- a/app/windows/CMakeLists.txt +++ b/app/windows/CMakeLists.txt @@ -74,6 +74,13 @@ set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT Runtime) +install(FILES + "${BINARY_NAME}.exe.manifest" + "localsend_msix_helper.msix" + "install_msix_helper.ps1" + DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) diff --git a/app/windows/install_msix_helper.ps1 b/app/windows/install_msix_helper.ps1 new file mode 100644 index 00000000..50b146d1 --- /dev/null +++ b/app/windows/install_msix_helper.ps1 @@ -0,0 +1 @@ +Add-AppxPackage .\localsend_msix_helper.msix -ExternalLocation $(Get-Location) \ No newline at end of file diff --git a/app/windows/localsend_app.exe.manifest b/app/windows/localsend_app.exe.manifest new file mode 100644 index 00000000..9463a005 --- /dev/null +++ b/app/windows/localsend_app.exe.manifest @@ -0,0 +1,9 @@ + + + + + diff --git a/app/windows/runner/CMakeLists.txt b/app/windows/runner/CMakeLists.txt index 394917c0..4734da91 100644 --- a/app/windows/runner/CMakeLists.txt +++ b/app/windows/runner/CMakeLists.txt @@ -11,6 +11,7 @@ add_executable(${BINARY_NAME} WIN32 "main.cpp" "utils.cpp" "win32_window.cpp" + "winrt_ext.cpp" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" "Runner.rc" "runner.exe.manifest" diff --git a/app/windows/runner/main.cpp b/app/windows/runner/main.cpp index 370d8895..5d62d2e7 100644 --- a/app/windows/runner/main.cpp +++ b/app/windows/runner/main.cpp @@ -4,6 +4,7 @@ #include "flutter_window.h" #include "utils.h" +#include "winrt_ext.h" int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, _In_ wchar_t *command_line, _In_ int show_command) { @@ -22,6 +23,15 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, std::vector command_line_arguments = GetCommandLineArguments(); + if (IsRunningWithIdentity()) { + winrt::hstring share_arg = GetSharedMedia(); + if (!share_arg.empty()) { + printf("share: %ls\n", share_arg.c_str()); + command_line_arguments.push_back("--share"); + command_line_arguments.push_back(Utf8FromUtf16(share_arg.c_str())); + } + } + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); FlutterWindow window(project); diff --git a/app/windows/runner/winrt_ext.cpp b/app/windows/runner/winrt_ext.cpp new file mode 100644 index 00000000..3be8e2fb --- /dev/null +++ b/app/windows/runner/winrt_ext.cpp @@ -0,0 +1,69 @@ +#include "winrt_ext.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using winrt::Windows::ApplicationModel::AppInstance; +using winrt::Windows::ApplicationModel::Activation::ActivationKind; +using winrt::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs; +using winrt::Windows::ApplicationModel::DataTransfer::DataPackageView; +using winrt::Windows::ApplicationModel::DataTransfer::StandardDataFormats; +using winrt::Windows::Data::Json::JsonArray; +using winrt::Windows::Data::Json::JsonObject; +using winrt::Windows::Data::Json::JsonValue; + +enum class SharedAttachmentType { + IMAGE, + VIDEO, + AUDIO, + FILE, +}; + +bool IsRunningWithIdentity() { + constexpr SIZE_T kPackageNameMaxLength = 1024; + UINT32 length = kPackageNameMaxLength; + wchar_t packageName[kPackageNameMaxLength]; + LONG result = GetCurrentPackageFullName(&length, packageName); + + return (result == ERROR_SUCCESS); +} + +winrt::hstring GetSharedMedia() { + auto args = AppInstance::GetActivatedEventArgs(); + if (args == nullptr) + return winrt::hstring(); + if (args.Kind() != ActivationKind::ShareTarget) + return winrt::hstring(); + auto share_target_args = args.as(); + auto op = share_target_args.ShareOperation(); + auto data = op.Data(); + JsonObject json; + if (data.Contains(StandardDataFormats::Text())) { + auto text = data.GetTextAsync().get(); + json.SetNamedValue(L"content", JsonValue::CreateStringValue(text)); + } + if (data.Contains(StandardDataFormats::Uri())) { + auto uri = data.GetUriAsync().get(); + json.SetNamedValue(L"content", JsonValue::CreateStringValue(uri.ToString())); + } + if (data.Contains(StandardDataFormats::StorageItems())) { + JsonArray attachments; + auto storage_items = data.GetStorageItemsAsync().get(); + for (const auto& item : storage_items) { + JsonObject attachment; + attachment.SetNamedValue(L"type", JsonValue::CreateNumberValue(double(SharedAttachmentType::FILE))); + attachment.SetNamedValue(L"path", JsonValue::CreateStringValue(item.Path())); + attachments.Append(attachment); + } + json.SetNamedValue(L"attachments", attachments); + } + return json.Stringify(); +} \ No newline at end of file diff --git a/app/windows/runner/winrt_ext.h b/app/windows/runner/winrt_ext.h new file mode 100644 index 00000000..d37b5a04 --- /dev/null +++ b/app/windows/runner/winrt_ext.h @@ -0,0 +1,9 @@ +#ifndef RUNNER_WINRT_EXT_H_ +#define RUNNER_WINRT_EXT_H_ + +#include + +bool IsRunningWithIdentity(); +winrt::hstring GetSharedMedia(); + +#endif // RUNNER_WINRT_EXT_H_ diff --git a/msix/AppxManifest.xml b/msix/AppxManifest.xml new file mode 100644 index 00000000..d8849cef --- /dev/null +++ b/msix/AppxManifest.xml @@ -0,0 +1,75 @@ + + + + + LocalSend MSIX Helper + Tien Do Nam + Images\StoreLogo.png + An open source cross-platform alternative to AirDrop + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text + Uri + StorageItems + + + + + + \ No newline at end of file diff --git a/msix/Images/BadgeLogo.scale-100.png b/msix/Images/BadgeLogo.scale-100.png new file mode 100644 index 00000000..ec54700c Binary files /dev/null and b/msix/Images/BadgeLogo.scale-100.png differ diff --git a/msix/Images/BadgeLogo.scale-125.png b/msix/Images/BadgeLogo.scale-125.png new file mode 100644 index 00000000..4058b451 Binary files /dev/null and b/msix/Images/BadgeLogo.scale-125.png differ diff --git a/msix/Images/BadgeLogo.scale-150.png b/msix/Images/BadgeLogo.scale-150.png new file mode 100644 index 00000000..6573b6c8 Binary files /dev/null and b/msix/Images/BadgeLogo.scale-150.png differ diff --git a/msix/Images/BadgeLogo.scale-200.png b/msix/Images/BadgeLogo.scale-200.png new file mode 100644 index 00000000..c563c442 Binary files /dev/null and b/msix/Images/BadgeLogo.scale-200.png differ diff --git a/msix/Images/BadgeLogo.scale-400.png b/msix/Images/BadgeLogo.scale-400.png new file mode 100644 index 00000000..71384150 Binary files /dev/null and b/msix/Images/BadgeLogo.scale-400.png differ diff --git a/msix/Images/LargeTile.scale-100.png b/msix/Images/LargeTile.scale-100.png new file mode 100644 index 00000000..7239c96c Binary files /dev/null and b/msix/Images/LargeTile.scale-100.png differ diff --git a/msix/Images/LargeTile.scale-125.png b/msix/Images/LargeTile.scale-125.png new file mode 100644 index 00000000..0da1cfee Binary files /dev/null and b/msix/Images/LargeTile.scale-125.png differ diff --git a/msix/Images/LargeTile.scale-150.png b/msix/Images/LargeTile.scale-150.png new file mode 100644 index 00000000..1aa784f0 Binary files /dev/null and b/msix/Images/LargeTile.scale-150.png differ diff --git a/msix/Images/LargeTile.scale-200.png b/msix/Images/LargeTile.scale-200.png new file mode 100644 index 00000000..b72d5259 Binary files /dev/null and b/msix/Images/LargeTile.scale-200.png differ diff --git a/msix/Images/LargeTile.scale-400.png b/msix/Images/LargeTile.scale-400.png new file mode 100644 index 00000000..0e2a374e Binary files /dev/null and b/msix/Images/LargeTile.scale-400.png differ diff --git a/msix/Images/SmallTile.scale-100.png b/msix/Images/SmallTile.scale-100.png new file mode 100644 index 00000000..4366da51 Binary files /dev/null and b/msix/Images/SmallTile.scale-100.png differ diff --git a/msix/Images/SmallTile.scale-125.png b/msix/Images/SmallTile.scale-125.png new file mode 100644 index 00000000..b8e140a1 Binary files /dev/null and b/msix/Images/SmallTile.scale-125.png differ diff --git a/msix/Images/SmallTile.scale-150.png b/msix/Images/SmallTile.scale-150.png new file mode 100644 index 00000000..3876ab2b Binary files /dev/null and b/msix/Images/SmallTile.scale-150.png differ diff --git a/msix/Images/SmallTile.scale-200.png b/msix/Images/SmallTile.scale-200.png new file mode 100644 index 00000000..3244b3c3 Binary files /dev/null and b/msix/Images/SmallTile.scale-200.png differ diff --git a/msix/Images/SmallTile.scale-400.png b/msix/Images/SmallTile.scale-400.png new file mode 100644 index 00000000..796ee477 Binary files /dev/null and b/msix/Images/SmallTile.scale-400.png differ diff --git a/msix/Images/SplashScreen.scale-100.png b/msix/Images/SplashScreen.scale-100.png new file mode 100644 index 00000000..8225797b Binary files /dev/null and b/msix/Images/SplashScreen.scale-100.png differ diff --git a/msix/Images/SplashScreen.scale-125.png b/msix/Images/SplashScreen.scale-125.png new file mode 100644 index 00000000..bbfe6d11 Binary files /dev/null and b/msix/Images/SplashScreen.scale-125.png differ diff --git a/msix/Images/SplashScreen.scale-150.png b/msix/Images/SplashScreen.scale-150.png new file mode 100644 index 00000000..753e6796 Binary files /dev/null and b/msix/Images/SplashScreen.scale-150.png differ diff --git a/msix/Images/SplashScreen.scale-200.png b/msix/Images/SplashScreen.scale-200.png new file mode 100644 index 00000000..545e9beb Binary files /dev/null and b/msix/Images/SplashScreen.scale-200.png differ diff --git a/msix/Images/SplashScreen.scale-400.png b/msix/Images/SplashScreen.scale-400.png new file mode 100644 index 00000000..0df77ee9 Binary files /dev/null and b/msix/Images/SplashScreen.scale-400.png differ diff --git a/msix/Images/Square150x150Logo.scale-100.png b/msix/Images/Square150x150Logo.scale-100.png new file mode 100644 index 00000000..eb5f8f06 Binary files /dev/null and b/msix/Images/Square150x150Logo.scale-100.png differ diff --git a/msix/Images/Square150x150Logo.scale-125.png b/msix/Images/Square150x150Logo.scale-125.png new file mode 100644 index 00000000..62d390ef Binary files /dev/null and b/msix/Images/Square150x150Logo.scale-125.png differ diff --git a/msix/Images/Square150x150Logo.scale-150.png b/msix/Images/Square150x150Logo.scale-150.png new file mode 100644 index 00000000..db8c94fa Binary files /dev/null and b/msix/Images/Square150x150Logo.scale-150.png differ diff --git a/msix/Images/Square150x150Logo.scale-200.png b/msix/Images/Square150x150Logo.scale-200.png new file mode 100644 index 00000000..c9a0113b Binary files /dev/null and b/msix/Images/Square150x150Logo.scale-200.png differ diff --git a/msix/Images/Square150x150Logo.scale-400.png b/msix/Images/Square150x150Logo.scale-400.png new file mode 100644 index 00000000..4ba11ce3 Binary files /dev/null and b/msix/Images/Square150x150Logo.scale-400.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png new file mode 100644 index 00000000..87b19c8e Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-16.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-20.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-20.png new file mode 100644 index 00000000..fdc29157 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-20.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png new file mode 100644 index 00000000..ec54700c Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-24.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png new file mode 100644 index 00000000..19229e88 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-256.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-30.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-30.png new file mode 100644 index 00000000..4058b451 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-30.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png new file mode 100644 index 00000000..b520525e Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-32.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-36.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-36.png new file mode 100644 index 00000000..6573b6c8 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-36.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-40.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-40.png new file mode 100644 index 00000000..d6398058 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-40.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png new file mode 100644 index 00000000..c563c442 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-48.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-60.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-60.png new file mode 100644 index 00000000..970bbfd2 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-60.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-64.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-64.png new file mode 100644 index 00000000..88d18d66 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-64.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-72.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-72.png new file mode 100644 index 00000000..1d3ca02d Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-72.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-80.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-80.png new file mode 100644 index 00000000..74737c80 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-80.png differ diff --git a/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-96.png b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-96.png new file mode 100644 index 00000000..71384150 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-lightunplated_targetsize-96.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-16.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-16.png new file mode 100644 index 00000000..87b19c8e Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-16.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-20.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-20.png new file mode 100644 index 00000000..fdc29157 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-20.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-24.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-24.png new file mode 100644 index 00000000..ec54700c Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-24.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-256.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-256.png new file mode 100644 index 00000000..19229e88 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-256.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-30.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-30.png new file mode 100644 index 00000000..4058b451 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-30.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-32.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-32.png new file mode 100644 index 00000000..b520525e Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-32.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-36.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-36.png new file mode 100644 index 00000000..6573b6c8 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-36.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-40.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-40.png new file mode 100644 index 00000000..d6398058 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-40.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-48.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-48.png new file mode 100644 index 00000000..c563c442 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-48.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-60.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-60.png new file mode 100644 index 00000000..970bbfd2 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-60.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-64.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-64.png new file mode 100644 index 00000000..88d18d66 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-64.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-72.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-72.png new file mode 100644 index 00000000..1d3ca02d Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-72.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-80.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-80.png new file mode 100644 index 00000000..74737c80 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-80.png differ diff --git a/msix/Images/Square44x44Logo.altform-unplated_targetsize-96.png b/msix/Images/Square44x44Logo.altform-unplated_targetsize-96.png new file mode 100644 index 00000000..71384150 Binary files /dev/null and b/msix/Images/Square44x44Logo.altform-unplated_targetsize-96.png differ diff --git a/msix/Images/Square44x44Logo.scale-100.png b/msix/Images/Square44x44Logo.scale-100.png new file mode 100644 index 00000000..02be4b3e Binary files /dev/null and b/msix/Images/Square44x44Logo.scale-100.png differ diff --git a/msix/Images/Square44x44Logo.scale-125.png b/msix/Images/Square44x44Logo.scale-125.png new file mode 100644 index 00000000..110f91ae Binary files /dev/null and b/msix/Images/Square44x44Logo.scale-125.png differ diff --git a/msix/Images/Square44x44Logo.scale-150.png b/msix/Images/Square44x44Logo.scale-150.png new file mode 100644 index 00000000..47277284 Binary files /dev/null and b/msix/Images/Square44x44Logo.scale-150.png differ diff --git a/msix/Images/Square44x44Logo.scale-200.png b/msix/Images/Square44x44Logo.scale-200.png new file mode 100644 index 00000000..11734c82 Binary files /dev/null and b/msix/Images/Square44x44Logo.scale-200.png differ diff --git a/msix/Images/Square44x44Logo.scale-400.png b/msix/Images/Square44x44Logo.scale-400.png new file mode 100644 index 00000000..fccb5da3 Binary files /dev/null and b/msix/Images/Square44x44Logo.scale-400.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-16.png b/msix/Images/Square44x44Logo.targetsize-16.png new file mode 100644 index 00000000..87b19c8e Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-16.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-20.png b/msix/Images/Square44x44Logo.targetsize-20.png new file mode 100644 index 00000000..fdc29157 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-20.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-24.png b/msix/Images/Square44x44Logo.targetsize-24.png new file mode 100644 index 00000000..ec54700c Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-24.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-256.png b/msix/Images/Square44x44Logo.targetsize-256.png new file mode 100644 index 00000000..19229e88 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-256.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-30.png b/msix/Images/Square44x44Logo.targetsize-30.png new file mode 100644 index 00000000..4058b451 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-30.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-32.png b/msix/Images/Square44x44Logo.targetsize-32.png new file mode 100644 index 00000000..b520525e Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-32.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-36.png b/msix/Images/Square44x44Logo.targetsize-36.png new file mode 100644 index 00000000..6573b6c8 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-36.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-40.png b/msix/Images/Square44x44Logo.targetsize-40.png new file mode 100644 index 00000000..d6398058 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-40.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-48.png b/msix/Images/Square44x44Logo.targetsize-48.png new file mode 100644 index 00000000..c563c442 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-48.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-60.png b/msix/Images/Square44x44Logo.targetsize-60.png new file mode 100644 index 00000000..970bbfd2 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-60.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-64.png b/msix/Images/Square44x44Logo.targetsize-64.png new file mode 100644 index 00000000..88d18d66 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-64.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-72.png b/msix/Images/Square44x44Logo.targetsize-72.png new file mode 100644 index 00000000..1d3ca02d Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-72.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-80.png b/msix/Images/Square44x44Logo.targetsize-80.png new file mode 100644 index 00000000..74737c80 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-80.png differ diff --git a/msix/Images/Square44x44Logo.targetsize-96.png b/msix/Images/Square44x44Logo.targetsize-96.png new file mode 100644 index 00000000..71384150 Binary files /dev/null and b/msix/Images/Square44x44Logo.targetsize-96.png differ diff --git a/msix/Images/StoreLogo.scale-100.png b/msix/Images/StoreLogo.scale-100.png new file mode 100644 index 00000000..7d7a22e7 Binary files /dev/null and b/msix/Images/StoreLogo.scale-100.png differ diff --git a/msix/Images/StoreLogo.scale-125.png b/msix/Images/StoreLogo.scale-125.png new file mode 100644 index 00000000..65ba6f3b Binary files /dev/null and b/msix/Images/StoreLogo.scale-125.png differ diff --git a/msix/Images/StoreLogo.scale-150.png b/msix/Images/StoreLogo.scale-150.png new file mode 100644 index 00000000..7afcf53f Binary files /dev/null and b/msix/Images/StoreLogo.scale-150.png differ diff --git a/msix/Images/StoreLogo.scale-200.png b/msix/Images/StoreLogo.scale-200.png new file mode 100644 index 00000000..1d6492cd Binary files /dev/null and b/msix/Images/StoreLogo.scale-200.png differ diff --git a/msix/Images/StoreLogo.scale-400.png b/msix/Images/StoreLogo.scale-400.png new file mode 100644 index 00000000..66730089 Binary files /dev/null and b/msix/Images/StoreLogo.scale-400.png differ diff --git a/msix/Images/Wide310x150Logo.scale-100.png b/msix/Images/Wide310x150Logo.scale-100.png new file mode 100644 index 00000000..3327c1c8 Binary files /dev/null and b/msix/Images/Wide310x150Logo.scale-100.png differ diff --git a/msix/Images/Wide310x150Logo.scale-125.png b/msix/Images/Wide310x150Logo.scale-125.png new file mode 100644 index 00000000..6cbb207d Binary files /dev/null and b/msix/Images/Wide310x150Logo.scale-125.png differ diff --git a/msix/Images/Wide310x150Logo.scale-150.png b/msix/Images/Wide310x150Logo.scale-150.png new file mode 100644 index 00000000..8c2cbc8d Binary files /dev/null and b/msix/Images/Wide310x150Logo.scale-150.png differ diff --git a/msix/Images/Wide310x150Logo.scale-200.png b/msix/Images/Wide310x150Logo.scale-200.png new file mode 100644 index 00000000..8225797b Binary files /dev/null and b/msix/Images/Wide310x150Logo.scale-200.png differ diff --git a/msix/Images/Wide310x150Logo.scale-400.png b/msix/Images/Wide310x150Logo.scale-400.png new file mode 100644 index 00000000..545e9beb Binary files /dev/null and b/msix/Images/Wide310x150Logo.scale-400.png differ diff --git a/msix/resources.pri b/msix/resources.pri new file mode 100644 index 00000000..e553f03e Binary files /dev/null and b/msix/resources.pri differ diff --git a/msix/resources.scale-125.pri b/msix/resources.scale-125.pri new file mode 100644 index 00000000..5ef0e7dc Binary files /dev/null and b/msix/resources.scale-125.pri differ diff --git a/msix/resources.scale-150.pri b/msix/resources.scale-150.pri new file mode 100644 index 00000000..91454b6c Binary files /dev/null and b/msix/resources.scale-150.pri differ diff --git a/msix/resources.scale-200.pri b/msix/resources.scale-200.pri new file mode 100644 index 00000000..e7ded803 Binary files /dev/null and b/msix/resources.scale-200.pri differ diff --git a/msix/resources.scale-400.pri b/msix/resources.scale-400.pri new file mode 100644 index 00000000..03a202db Binary files /dev/null and b/msix/resources.scale-400.pri differ diff --git a/scripts/compile_windows_exe-inno.iss b/scripts/compile_windows_exe-inno.iss index 0ddaf458..4004a494 100644 --- a/scripts/compile_windows_exe-inno.iss +++ b/scripts/compile_windows_exe-inno.iss @@ -8,6 +8,7 @@ #define MyAppPublisher "Tien Do Nam" #define MyAppURL "https://localsend.org" #define MyAppExeName "localsend_app.exe" +#define MyAppMsixHelper "localsend_msix_helper.msix" [Setup] ; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications. @@ -70,8 +71,10 @@ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{ [Files] Source: "D:\inno\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "D:\inno\{#MyAppExeName}.manifest"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\inno\*.dll"; DestDir: "{app}"; Flags: ignoreversion Source: "D:\inno\data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "D:\inno\{#MyAppMsixHelper}"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] @@ -80,4 +83,7 @@ Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: de [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent +Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -Command Add-AppxPackage .\localsend_msix_helper.msix -ExternalLocation $(Get-Location)"; WorkingDir: {app}; Flags: nowait postinstall +[UninstallRun] +Filename: "powershell.exe"; Parameters: "-ExecutionPolicy Bypass -Command Remove-AppxPackage $(Get-AppxPackage com.flutter.localsendapp)"; WorkingDir: {app}; Flags: nowait diff --git a/scripts/compile_windows_msix_helper.ps1 b/scripts/compile_windows_msix_helper.ps1 new file mode 100644 index 00000000..4db49905 --- /dev/null +++ b/scripts/compile_windows_msix_helper.ps1 @@ -0,0 +1,4 @@ +# Using Visual Studio 2022 Developer PowerShell +# or using e.g. "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\makeappx.exe" + +MakeAppx.exe pack /o /d .\msix /nv /p .\app\windows\localsend_msix_helper.msix