From e50f11697f748012c705b4f37288b5284ef3bebd Mon Sep 17 00:00:00 2001 From: Mugu~~ Date: Sun, 17 Aug 2025 19:16:30 +0530 Subject: [PATCH] Add support for building mRemoteNG on Windows ARM64 --- .github/workflows/Build_mR-NB.yml | 22 +++++-- ExternalConnectors/ExternalConnectors.csproj | 7 ++- ObjectListView/ObjectListView.NetCore.csproj | 9 ++- mRemoteNG.sln | 29 +++++++++ mRemoteNG/mRemoteNG.csproj | 64 ++++++++++++++++++-- mRemoteNGTests/mRemoteNGTests.csproj | 4 +- 6 files changed, 118 insertions(+), 17 deletions(-) diff --git a/.github/workflows/Build_mR-NB.yml b/.github/workflows/Build_mR-NB.yml index 4b1be8773..b622f8e6e 100644 --- a/.github/workflows/Build_mR-NB.yml +++ b/.github/workflows/Build_mR-NB.yml @@ -9,7 +9,16 @@ permissions: jobs: NB-Build-and-Release: - runs-on: windows-latest + strategy: + matrix: + include: + - runner: windows-latest + platform: x64 + arch: x64 + - runner: windows-11-arm + platform: ARM64 + arch: arm64 + runs-on: ${{ matrix.runner }} steps: - name: (01) Checkout Repository uses: actions/checkout@v4 @@ -30,9 +39,9 @@ jobs: uses: actions/cache@v3 with: path: ~/.nuget/packages - key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }} + key: ${{ runner.os }}-${{ matrix.arch }}-nuget-${{ hashFiles('**/*.csproj') }} restore-keys: | - ${{ runner.os }}-nuget- + ${{ runner.os }}-${{ matrix.arch }}-nuget- - name: (05) Restore NuGet Packages shell: pwsh @@ -40,7 +49,8 @@ jobs: - name: (06) Build Release shell: pwsh - run: msbuild "$Env:GITHUB_WORKSPACE\mRemoteNG.sln" -p:Configuration="Release" -p:Platform=x64 /verbosity:minimal + run: | + msbuild "$Env:GITHUB_WORKSPACE\mRemoteNG.sln" -p:Configuration="Release" -p:Platform=${{ matrix.platform }} /verbosity:minimal - name: (07) Release Information id: version @@ -55,7 +65,7 @@ jobs: throw "Could not extract version and build number" } $date = Get-Date -Format "yyyyMMdd" - $zipName = "mRemoteNG-$date-v$version-NB-$build.zip" + $zipName = "mRemoteNG-$date-v$version-NB-$build-${{ matrix.arch }}.zip" $tag = "$date-v$version-NB-($build)" $message = git log -1 --pretty=%B echo "message=$message" >> $env:GITHUB_OUTPUT @@ -102,7 +112,7 @@ jobs: - name: (09) Create Zip File shell: pwsh run: | - $sourceDir = "$Env:GITHUB_WORKSPACE\mRemoteNG\bin\x64\Release\win-x64" + $sourceDir = "$Env:GITHUB_WORKSPACE\mRemoteNG\bin\${{ matrix.platform }}\Release" Compress-Archive -Path "$sourceDir\*" -DestinationPath ${{ steps.version.outputs.zipname }} echo "File: ${{ steps.version.outputs.zipname }}" diff --git a/ExternalConnectors/ExternalConnectors.csproj b/ExternalConnectors/ExternalConnectors.csproj index 8006af767..d401f2062 100644 --- a/ExternalConnectors/ExternalConnectors.csproj +++ b/ExternalConnectors/ExternalConnectors.csproj @@ -5,13 +5,16 @@ enable Library True - x64 + x64;arm64 Debug;Release;Debug Portable;Release Portable;Deploy to github 10.0.26100.0 True + + True + @@ -23,4 +26,4 @@ - \ No newline at end of file + diff --git a/ObjectListView/ObjectListView.NetCore.csproj b/ObjectListView/ObjectListView.NetCore.csproj index a8cab3c9c..d9d87a33d 100644 --- a/ObjectListView/ObjectListView.NetCore.csproj +++ b/ObjectListView/ObjectListView.NetCore.csproj @@ -7,10 +7,15 @@ false true true - x64 $(NoWarn);WFO1000 false + + x64 + + + arm64 + @@ -34,4 +39,4 @@ - \ No newline at end of file + diff --git a/mRemoteNG.sln b/mRemoteNG.sln index acff3684b..26b33453d 100644 --- a/mRemoteNG.sln +++ b/mRemoteNG.sln @@ -12,28 +12,57 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 + Debug|arm64 = Debug|arm64 Release Installer and Portable|x64 = Release Installer and Portable|x64 + Release Installer and Portable|arm64 = Release Installer and Portable|arm64 Release|x64 = Release|x64 + Release|arm64 = Release|arm64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x64.ActiveCfg = Debug|x64 {4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x64.Build.0 = Debug|x64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|arm64.ActiveCfg = Debug|arm64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|arm64.Build.0 = Debug|arm64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer and Portable|x64.ActiveCfg = Release Portable|x64 {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer and Portable|x64.Build.0 = Release Portable|x64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer and Portable|arm64.ActiveCfg = Release Portable|arm64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Installer and Portable|arm64.Build.0 = Release Portable|arm64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x64.ActiveCfg = Release|x64 {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x64.Build.0 = Release|x64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|arm64.ActiveCfg = Release|arm64 + {4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|arm64.Build.0 = Release|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Debug|x64.ActiveCfg = Debug|x64 {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Debug|x64.Build.0 = Debug|x64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Debug|arm64.ActiveCfg = Debug|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Debug|arm64.Build.0 = Debug|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release Installer and Portable|x64.ActiveCfg = Release Portable|x64 {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release Installer and Portable|x64.Build.0 = Release Portable|x64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release Installer and Portable|arm64.ActiveCfg = Release Portable|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release Installer and Portable|arm64.Build.0 = Release Portable|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release|x64.ActiveCfg = Release|x64 {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release|x64.Build.0 = Release|x64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release|arm64.ActiveCfg = Release|arm64 + {A56A2029-79B8-492A-ABE5-D2BFE05801BD}.Release|arm64.Build.0 = Release|arm64 + {5718734C-03AC-4954-89B1-1723CF03AF10}.Debug|x64.ActiveCfg = Debug|Any CPU {5718734C-03AC-4954-89B1-1723CF03AF10}.Debug|x64.Build.0 = Debug|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Debug|arm64.ActiveCfg = Debug|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Debug|arm64.Build.0 = Debug|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release Installer and Portable|x64.ActiveCfg = Release|Any CPU {5718734C-03AC-4954-89B1-1723CF03AF10}.Release Installer and Portable|x64.Build.0 = Release|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release Installer and Portable|arm64.ActiveCfg = Release|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release Installer and Portable|arm64.Build.0 = Release|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release|x64.ActiveCfg = Release|Any CPU {5718734C-03AC-4954-89B1-1723CF03AF10}.Release|x64.Build.0 = Release|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release|arm64.ActiveCfg = Release|Any CPU + {5718734C-03AC-4954-89B1-1723CF03AF10}.Release|arm64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/mRemoteNG/mRemoteNG.csproj b/mRemoteNG/mRemoteNG.csproj index 41124aacd..297683ef6 100644 --- a/mRemoteNG/mRemoteNG.csproj +++ b/mRemoteNG/mRemoteNG.csproj @@ -1,9 +1,8 @@  - - x64 - win-x64 + x64;arm64 + win-x64;win-arm64 WinExe @@ -15,7 +14,7 @@ $([System.DateTime]::Now.Year) mRemoteNG Dev Team, 2010-2013 Riley McArdle, 2007-2009 Felix Deimel COPYING.TXT https://mremoteng.org/ - x64 + x64;arm64 Debug;Release;Debug Portable;Release Portable;Release Installer;Deploy to github false latest @@ -41,6 +40,15 @@ False 8 + + DEBUG + false + + bin\arm64\Debug\ + False + False + 8 + True @@ -51,6 +59,16 @@ 8 True + + + True + bin\arm64\Release\ + false + + False + 8 + True + DEBUG;PORTABLE False @@ -60,6 +78,15 @@ False 8 + + DEBUG;PORTABLE + False + bin\arm64\Debug Portable\ + false + + False + 8 + PORTABLE True @@ -70,12 +97,28 @@ 8 True + + PORTABLE + True + bin\arm64\Release Portable\ + false + + False + 8 + True + False True 8 True + + False + True + 8 + True + @@ -556,6 +599,9 @@ + + +