From 2afebcb3f512a1d86d9e21b37210c4d5fc306d74 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sat, 21 Sep 2024 13:37:32 -0500 Subject: [PATCH 01/14] try building for arm64 --- .../Properties/PublishProfiles/Net7.0-SelfContained.pubxml | 4 ++-- appveyor.yml | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher/Properties/PublishProfiles/Net7.0-SelfContained.pubxml b/Flow.Launcher/Properties/PublishProfiles/Net7.0-SelfContained.pubxml index 0e5cf4489b2..9ce1f958e85 100644 --- a/Flow.Launcher/Properties/PublishProfiles/Net7.0-SelfContained.pubxml +++ b/Flow.Launcher/Properties/PublishProfiles/Net7.0-SelfContained.pubxml @@ -6,10 +6,10 @@ https://go.microsoft.com/fwlink/?LinkID=208121. FileSystem Release - Any CPU + ARM64 net7.0-windows10.0.19041.0 ..\Output\Release\ - win-x64 + win-arm64 true False False diff --git a/appveyor.yml b/appveyor.yml index ab1803f6b34..55ed6e05453 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -23,13 +23,14 @@ assembly_info: assembly_informational_version: $(flowVersion) image: Visual Studio 2022 -platform: Any CPU +platform: ARM64 configuration: Release before_build: - ps: nuget restore build: project: Flow.Launcher.sln verbosity: minimal + test_script: - dotnet test --no-build -c Release after_test: From 6772f258fa4a3383df1ff76043e31dec80bd59a4 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sat, 21 Sep 2024 13:47:38 -0500 Subject: [PATCH 02/14] try arm 64 build - Specify ARM64 target - Everything Search will return an error --- Flow.Launcher/Flow.Launcher.csproj | 7 +++++ .../Languages/en.xaml | 1 + Plugins/Flow.Launcher.Plugin.Explorer/Main.cs | 6 +++-- .../Everything/EverythingSearchManager.cs | 27 ++++++++++++++----- .../Search/SearchManager.cs | 2 +- 5 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj index 575bbc10bf7..7e06e24be05 100644 --- a/Flow.Launcher/Flow.Launcher.csproj +++ b/Flow.Launcher/Flow.Launcher.csproj @@ -38,6 +38,13 @@ false + + ARM64;$(DefineConstants) + + + ARM64;$(DefineConstants) + + diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml index f7d5bdb18e4..87d03a3745d 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Languages/en.xaml @@ -127,6 +127,7 @@ Failed to load Everything SDK Warning: Everything service is not running + ARM64 is not supported for everything. Error while querying Everything Sort By Name diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index e4056131d4b..8a39c8665b8 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -42,11 +42,13 @@ public Task InitAsync(PluginInitContext context) contextMenu = new ContextMenu(Context, Settings, viewModel); searchManager = new SearchManager(Settings, Context); ResultManager.Init(Context, Settings); - + SortOptionTranslationHelper.API = context.API; +#if !ARM64 EverythingApiDllImport.Load(Path.Combine(Context.CurrentPluginMetadata.PluginDirectory, "EverythingSDK", Environment.Is64BitProcess ? "x64" : "x86")); +#endif return Task.CompletedTask; } @@ -75,7 +77,7 @@ public async Task> QueryAsync(Query query, CancellationToken token) IcoPath = e is EngineNotAvailableException { ErrorIcon: { } iconPath } ? iconPath : Constants.GeneralSearchErrorImagePath, - AsyncAction = e is EngineNotAvailableException {Action: { } action} + AsyncAction = e is EngineNotAvailableException { Action: { } action } ? action : _ => { diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs index 6c9155539fe..dac84eba4b1 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/Everything/EverythingSearchManager.cs @@ -20,6 +20,15 @@ public EverythingSearchManager(Settings settings) private async ValueTask ThrowIfEverythingNotAvailableAsync(CancellationToken token = default) { +#if ARM64 + throw new EngineNotAvailableException( + Enum.GetName(Settings.IndexSearchEngineOption.Everything)!, + "ARM64 is not supported", + Main.Context.API.GetTranslation("flowlauncher_plugin_everything_not_support_arm64"), + Constants.EverythingErrorImagePath, + _ => ValueTask.FromResult(false)); +#endif + try { if (!await EverythingApi.IsEverythingRunningAsync(token)) @@ -42,7 +51,9 @@ private async ValueTask ThrowIfEverythingNotAvailableAsync(CancellationToken tok private async ValueTask ClickToInstallEverythingAsync(ActionContext _) { - var installedPath = await EverythingDownloadHelper.PromptDownloadIfNotInstallAsync(Settings.EverythingInstalledPath, Main.Context.API); + var installedPath = + await EverythingDownloadHelper.PromptDownloadIfNotInstallAsync(Settings.EverythingInstalledPath, + Main.Context.API); if (installedPath == null) { @@ -57,17 +68,18 @@ private async ValueTask ClickToInstallEverythingAsync(ActionContext _) return true; } - public async IAsyncEnumerable SearchAsync(string search, [EnumeratorCancellation] CancellationToken token) + public async IAsyncEnumerable SearchAsync(string search, + [EnumeratorCancellation] CancellationToken token) { await ThrowIfEverythingNotAvailableAsync(token); if (token.IsCancellationRequested) yield break; - var option = new EverythingSearchOption(search, - Settings.SortOption, - MaxCount: Settings.MaxResult, - IsFullPathSearch: Settings.EverythingSearchFullPath, + var option = new EverythingSearchOption(search, + Settings.SortOption, + MaxCount: Settings.MaxResult, + IsFullPathSearch: Settings.EverythingSearchFullPath, IsRunCounterEnabled: Settings.EverythingEnableRunCount); await foreach (var result in EverythingApi.SearchAsync(option, token)) @@ -110,7 +122,8 @@ public async IAsyncEnumerable ContentSearchAsync(string plainSearc } } - public async IAsyncEnumerable EnumerateAsync(string path, string search, bool recursive, [EnumeratorCancellation] CancellationToken token) + public async IAsyncEnumerable EnumerateAsync(string path, string search, bool recursive, + [EnumeratorCancellation] CancellationToken token) { await ThrowIfEverythingNotAvailableAsync(token); diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 8fd1674765f..c6daafdd7b6 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -99,7 +99,7 @@ when ActionKeywordMatch(query, Settings.ActionKeyword.FileContentSearchActionKey case false when ActionKeywordMatch(query, Settings.ActionKeyword.IndexSearchActionKeyword) || ActionKeywordMatch(query, Settings.ActionKeyword.SearchActionKeyword): - + searchResults = Settings.IndexProvider.SearchAsync(query.Search, token); engineName = Enum.GetName(Settings.IndexSearchEngine); break; From 3ce55546533ca7a2114b426845b55bd382a1ba61 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sat, 21 Sep 2024 17:32:07 -0500 Subject: [PATCH 03/14] cherry-pick from #2616 to support GitHub action --- .github/workflows/dotnet.yml | 110 +++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 .github/workflows/dotnet.yml diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml new file mode 100644 index 00000000000..9ba4f20ac78 --- /dev/null +++ b/.github/workflows/dotnet.yml @@ -0,0 +1,110 @@ +# This workflow will build a .NET project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net + +name: .NET + +on: + workflow_dispatch: + push: + branches: + - dev + - master + pull_request: + branches: + - dev + - master + +jobs: + build: + + runs-on: windows-latest + env: + FlowVersion: 1.18.0 + NUGET_CERT_REVOCATION_MODE: offline + BUILD_NUMBER: ${{ github.run_number }} + steps: + - uses: actions/checkout@v4 + - name: Set Flow.Launcher.csproj version + id: update + uses: vers-one/dotnet-project-version-updater@v1.5 + with: + file: | + "**/SolutionAssemblyInfo.cs" + version: ${{ env.FlowVersion }}.${{ env.BUILD_NUMBER }} + - uses: actions/cache@v4 + name: Restore Nuget Cache + with: + path: | + ~/.nuget/packages + key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} + restore-keys: | + ${{ runner.os }}-nuget + - uses: actions/cache@v4 + name: Restore dotnet tool Cache + with: + path: | + ~/.dotnet/tools + key: ${{ runner.os }}-dotnet-tools-${{ hashFiles('~/.dotnet/tools/**') }} + restore-keys: | + ${{ runner.os }}-dotnet-tools + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 7.0.x + - name: Install vpk + Install vpk tool (dotnet tool install will not reinstall if already installed) + We will update the cli by removing cache + run: | + if (!(Get-Command vpk -ErrorAction SilentlyContinue)) { + dotnet tool install -g vpk + } + - name: Restore dependencies + run: dotnet restore + - name: Build + run: dotnet build --no-restore -c Release + - name: Initialize Service + run: | + sc config WSearch start= auto # Starts Windows Search service- Needed for running ExplorerTest + net start WSearch + - name: Test + run: dotnet test --no-build --verbosity normal -c Release + - name: Perform post_build tasks + shell: pwsh + run: .\Scripts\post_build.ps1 -flowversion "${env:FlowVersion}-build.${env:BUILD_NUMBER}" + - name: Upload Plugin Nupkg + uses: actions/upload-artifact@v4 + with: + name: Plugin nupkg + path: | + Output\Release\Flow.Launcher.Plugin.*.nupkg + compression-level: 0 + - name: Upload Setup + uses: actions/upload-artifact@v4 + with: + name: Flow Installer + path: | + Releases\FlowLauncher-*.exe + compression-level: 0 + - name: Upload Portable Version + uses: actions/upload-artifact@v4 + with: + name: Portable Version + path: | + Releases\FlowLauncher-*-Portable.zip + compression-level: 0 +# - name: Upload Full Nupkg +# uses: actions/upload-artifact@v4 +# with: +# name: Full nupkg +# path: | +# Releases\FlowLauncher-*-full.nupkg +# +# compression-level: 0 +# - name: Upload Release Information +# uses: actions/upload-artifact@v4 +# with: +# name: RELEASES +# path: | +# Releases\RELEASES* +# compression-level: 0 +# From cea6560fe2b26040637466c045a6bd8db01d6736 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sat, 21 Sep 2024 17:38:20 -0500 Subject: [PATCH 04/14] update path --- .github/workflows/dotnet.yml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 9ba4f20ac78..08763ccf2b1 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -83,28 +83,28 @@ jobs: with: name: Flow Installer path: | - Releases\FlowLauncher-*.exe + Output\Packages\Flow-Launcher-*.exe compression-level: 0 - name: Upload Portable Version uses: actions/upload-artifact@v4 with: name: Portable Version path: | - Releases\FlowLauncher-*-Portable.zip + Output\Packages\Flow-Launcher-Portable.zip compression-level: 0 -# - name: Upload Full Nupkg -# uses: actions/upload-artifact@v4 -# with: -# name: Full nupkg -# path: | -# Releases\FlowLauncher-*-full.nupkg -# -# compression-level: 0 -# - name: Upload Release Information -# uses: actions/upload-artifact@v4 -# with: -# name: RELEASES -# path: | -# Releases\RELEASES* -# compression-level: 0 -# + - name: Upload Full Nupkg + uses: actions/upload-artifact@v4 + with: + name: Full nupkg + path: | + Output\Packages\FlowLauncher-*-full.nupkg + + compression-level: 0 + - name: Upload Release Information + uses: actions/upload-artifact@v4 + with: + name: RELEASES + path: | + Output\Packages\RELEASES + compression-level: 0 + From e288be3ba4bf727bf1cfbaeef8262b4306cb5620 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sun, 22 Sep 2024 13:16:45 -0500 Subject: [PATCH 05/14] add arm64 for the first build --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 08763ccf2b1..d0188cce3d3 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -61,7 +61,7 @@ jobs: - name: Restore dependencies run: dotnet restore - name: Build - run: dotnet build --no-restore -c Release + run: dotnet build --no-restore -c Release -r win-arm64 - name: Initialize Service run: | sc config WSearch start= auto # Starts Windows Search service- Needed for running ExplorerTest From fd2eb287df03296779465314e2d612c4467d9b49 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sun, 22 Sep 2024 13:22:39 -0500 Subject: [PATCH 06/14] try using Directory.Build.props to specify runtime identifier --- Directory.Build.props | 1 + 1 file changed, 1 insertion(+) diff --git a/Directory.Build.props b/Directory.Build.props index fa499273c56..bf2e468197c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,6 @@ true + $(FlowRuntimeIdentifier) \ No newline at end of file From 4430fb594a77a25e8851929bb638e2d84d07893a Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Sun, 22 Sep 2024 13:25:10 -0500 Subject: [PATCH 07/14] update runtime identifier --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index d0188cce3d3..8808b0e255d 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -61,7 +61,7 @@ jobs: - name: Restore dependencies run: dotnet restore - name: Build - run: dotnet build --no-restore -c Release -r win-arm64 + run: dotnet build --no-restore -c Release -p:FlowRuntimeIdentifier=win-arm64 - name: Initialize Service run: | sc config WSearch start= auto # Starts Windows Search service- Needed for running ExplorerTest From cf10e9ee92404a265a5b5b5680e5c5b7afe91ed8 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Mon, 23 Sep 2024 12:52:44 -0500 Subject: [PATCH 08/14] add arm64 to restore --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 8808b0e255d..8aa14213ca0 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -59,7 +59,7 @@ jobs: dotnet tool install -g vpk } - name: Restore dependencies - run: dotnet restore + run: dotnet restore -r win-arm64 - name: Build run: dotnet build --no-restore -c Release -p:FlowRuntimeIdentifier=win-arm64 - name: Initialize Service From f4f5f40911b9ae924bfd859b210a9a04034fe348 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Mon, 23 Sep 2024 12:57:18 -0500 Subject: [PATCH 09/14] specify arm64 for test --- .github/workflows/dotnet.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 8aa14213ca0..fd55cf3fcf1 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -67,7 +67,7 @@ jobs: sc config WSearch start= auto # Starts Windows Search service- Needed for running ExplorerTest net start WSearch - name: Test - run: dotnet test --no-build --verbosity normal -c Release + run: dotnet test --no-build --verbosity normal -c Release -p:FlowRuntimeIdentifier=win-arm64 - name: Perform post_build tasks shell: pwsh run: .\Scripts\post_build.ps1 -flowversion "${env:FlowVersion}-build.${env:BUILD_NUMBER}" From 99f19b2e5730392a284a8a4d49d3c08733921c3a Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Mon, 23 Sep 2024 13:13:23 -0500 Subject: [PATCH 10/14] disable testing because don't know how to have a arm64 windows machine on github --- .github/workflows/dotnet.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index fd55cf3fcf1..ad663a1ffbf 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -66,8 +66,8 @@ jobs: run: | sc config WSearch start= auto # Starts Windows Search service- Needed for running ExplorerTest net start WSearch - - name: Test - run: dotnet test --no-build --verbosity normal -c Release -p:FlowRuntimeIdentifier=win-arm64 +# - name: Test +# run: dotnet test --no-build --verbosity normal -c Release -p:FlowRuntimeIdentifier=win-arm64 - name: Perform post_build tasks shell: pwsh run: .\Scripts\post_build.ps1 -flowversion "${env:FlowVersion}-build.${env:BUILD_NUMBER}" From 20561ab5745a219c44af36daa1fd9f67de853e15 Mon Sep 17 00:00:00 2001 From: Hongtao Zhang Date: Mon, 23 Sep 2024 13:24:45 -0500 Subject: [PATCH 11/14] disable publish portable for arm64 --- Scripts/post_build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/post_build.ps1 b/Scripts/post_build.ps1 index 1757ed99e22..63dab0ed8e3 100644 --- a/Scripts/post_build.ps1 +++ b/Scripts/post_build.ps1 @@ -130,7 +130,7 @@ function Main { Validate-Directory $o Pack-Squirrel-Installer $p $v $o - Publish-Portable $o $v +# Publish-Portable $o $v } } From 429e8d21abcf38b0d8ae21041a9a45a74d007fcf Mon Sep 17 00:00:00 2001 From: iKineticate <115683118+iKineticate@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:18:11 +0800 Subject: [PATCH 12/14] Create EverythingSDK arm64 --- .../EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt b/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt new file mode 100644 index 00000000000..92dbf04daa3 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt @@ -0,0 +1 @@ +299A475544173E6DAECFEF6ACC0D46C5 From 11f5249d61d4177742d89b0e1cf2348566ec2253 Mon Sep 17 00:00:00 2001 From: iKineticate <115683118+iKineticate@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:19:04 +0800 Subject: [PATCH 13/14] Add files via upload --- .../EverythingSDK/arm64/Everything.dll | Bin 0 -> 91696 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/Everything.dll diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/Everything.dll b/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/Everything.dll new file mode 100644 index 0000000000000000000000000000000000000000..49f487d469b9d9e1146202e3c219ce1a1ab5f762 GIT binary patch literal 91696 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

j1l&yOU_ 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 Ps>^)MulqC#Z|eOB0X5J! literal 0 HcmV?d00001 From 73570fd422cd24db1c40f9e701064247e8f60694 Mon Sep 17 00:00:00 2001 From: iKineticate <115683118+iKineticate@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:20:21 +0800 Subject: [PATCH 14/14] Delete Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt --- .../EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt b/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt deleted file mode 100644 index 92dbf04daa3..00000000000 --- a/Plugins/Flow.Launcher.Plugin.Explorer/EverythingSDK/arm64/MD5-299A475544173E6DAECFEF6ACC0D46C5.txt +++ /dev/null @@ -1 +0,0 @@ -299A475544173E6DAECFEF6ACC0D46C5