From 3e0f39c7b3cb19cf85709d7b3c89a06ae59d107f Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 2 Apr 2026 12:59:48 +0100 Subject: [PATCH 1/5] fix(ci): correct OffsetFinder exe path and remove workflow path filters - build-and-release.yml: \ now points to SolutionDir//Release/ (the .sln build outputs there, not //Release/) - build-offsetfinder.yml: build via RDPWrapOffsetFinder.sln /t:RDPWrapOffsetFinder so \ resolves to the submodule root where zydis/ lives; fix matching \ output path - Remove pull_request paths: filters from all four PR check workflows so required status checks always run on every PR and never block merges --- .github/workflows/build-and-release.yml | 3 ++- .github/workflows/build-cpp.yml | 2 -- .github/workflows/build-csharp.yml | 2 -- .github/workflows/build-msi-check.yml | 3 --- .github/workflows/build-offsetfinder.yml | 11 ++++++----- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 3c00149..adeb166 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -131,7 +131,8 @@ jobs: /v:minimal $arch = $cfg.Arch - $exeSrc = "src-csharp/RDPOffsetFinder/RDPWrapOffsetFinder/$($cfg.Platform)/Release/RDPWrapOffsetFinder.exe" + # .sln build outputs to SolutionDir//Release/ (not //Release/) + $exeSrc = "src-csharp/RDPOffsetFinder/$($cfg.Platform)/Release/RDPWrapOffsetFinder.exe" $dllSrc = "src-csharp/RDPOffsetFinder/zydis/msvc/bin/$($cfg.ZydisBin)/Zydis.dll" Copy-Item $exeSrc ".\RDPWrapOffsetFinder_$arch.exe" Copy-Item $dllSrc ".\Zydis_$arch.dll" diff --git a/.github/workflows/build-cpp.yml b/.github/workflows/build-cpp.yml index 0aab122..e0c2d36 100644 --- a/.github/workflows/build-cpp.yml +++ b/.github/workflows/build-cpp.yml @@ -7,8 +7,6 @@ on: pull_request: branches: [main, master] - paths: - - 'src-x86-x64-Fusix/**' push: tags: - 'v*' diff --git a/.github/workflows/build-csharp.yml b/.github/workflows/build-csharp.yml index 468eae5..1d0d5e4 100644 --- a/.github/workflows/build-csharp.yml +++ b/.github/workflows/build-csharp.yml @@ -9,8 +9,6 @@ name: Build C# Tools on: pull_request: branches: [main, master] - paths: - - 'src-csharp/**' push: tags: - 'v*' diff --git a/.github/workflows/build-msi-check.yml b/.github/workflows/build-msi-check.yml index cb7e01a..1fd943a 100644 --- a/.github/workflows/build-msi-check.yml +++ b/.github/workflows/build-msi-check.yml @@ -7,9 +7,6 @@ name: Build MSI Check on: pull_request: branches: [main, master] - paths: - - 'msi/**' - - '.github/workflows/build-msi-check.yml' workflow_dispatch: env: diff --git a/.github/workflows/build-offsetfinder.yml b/.github/workflows/build-offsetfinder.yml index 858ef16..7328070 100644 --- a/.github/workflows/build-offsetfinder.yml +++ b/.github/workflows/build-offsetfinder.yml @@ -7,8 +7,6 @@ on: pull_request: branches: [main, master] - paths: - - 'src-csharp/RDPOffsetFinder/**' push: tags: - 'v*' @@ -55,11 +53,13 @@ jobs: /p:PlatformToolset=v143 ` /v:minimal - # Build the offset finder (links against the Zydis import lib just produced) + # Build via .sln so $(SolutionDir) resolves to the submodule root where + # AdditionalIncludeDirectories and AdditionalDependencies reference zydis/ - name: Build RDPWrapOffsetFinder (${{ matrix.platform }}) working-directory: src-csharp/RDPOffsetFinder run: | - msbuild RDPWrapOffsetFinder\RDPWrapOffsetFinder.vcxproj ` + msbuild RDPWrapOffsetFinder.sln ` + /t:RDPWrapOffsetFinder ` /p:Configuration=Release ` /p:Platform="${{ matrix.platform }}" ` /p:PlatformToolset=v143 ` @@ -70,7 +70,8 @@ jobs: run: | $arch = if ("${{ matrix.platform }}" -eq "Win32") { "x86" } else { "x64" } $root = "src-csharp/RDPOffsetFinder" - $exe = "$root/RDPWrapOffsetFinder/${{ matrix.finder_plat }}/Release/RDPWrapOffsetFinder.exe" + # .sln build outputs to SolutionDir//Release/ (not //Release/) + $exe = "$root/${{ matrix.finder_plat }}/Release/RDPWrapOffsetFinder.exe" $dll = "$root/zydis/msvc/bin/${{ matrix.zydis_bin }}/Zydis.dll" Write-Host "Exe: $(Get-Item $exe | Select-Object -Exp Length) bytes" From 32c9200216a51b5fcb4d850e037ddd5994570bd6 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 2 Apr 2026 13:38:33 +0100 Subject: [PATCH 2/5] fix(ci): use x86/x64 solution platform names for RDPWrapOffsetFinder.sln The solution GlobalSection only declares Release|x86 and Release|x64. Passing Platform=Win32 to msbuild with a .sln target is invalid and causes: MSB4126: The specified solution configuration 'Release|Win32' is invalid. Add sln_platform (x86/x64) used only for the .sln invocation; keep Platform=Win32 for the Zydis vcxproj build and the output path lookup (vcxproj maps x86->Win32 for its OutDir so finder_plat=Win32 stays correct). Affects both build-offsetfinder.yml and build-and-release.yml. --- .github/workflows/build-and-release.yml | 7 ++++--- .github/workflows/build-offsetfinder.yml | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index adeb166..a4d7c9f 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -109,8 +109,8 @@ jobs: Write-Host "Submodule version: $version" foreach ($cfg in @( - @{ Platform = 'x64'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX64'; Arch = 'x64' } - @{ Platform = 'Win32'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX86'; Arch = 'x86' } + @{ Platform = 'x64'; SlnPlatform = 'x64'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX64'; Arch = 'x64' } + @{ Platform = 'Win32'; SlnPlatform = 'x86'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX86'; Arch = 'x86' } )) { # Build Zydis DLL msbuild src-csharp/RDPOffsetFinder/zydis/msvc/zydis/Zydis.vcxproj ` @@ -123,10 +123,11 @@ jobs: # where zydis/ lives - vcxproj AdditionalIncludeDirectories and # AdditionalDependencies both use $(SolutionDir)\zydis\... and # fail with C1083 when the vcxproj is targeted directly. + # NB: the solution uses x86/x64 platform names (not Win32) - use SlnPlatform. msbuild src-csharp/RDPOffsetFinder/RDPWrapOffsetFinder.sln ` /t:RDPWrapOffsetFinder ` /p:Configuration=Release ` - /p:Platform="$($cfg.Platform)" ` + /p:Platform="$($cfg.SlnPlatform)" ` /p:PlatformToolset=v143 ` /v:minimal diff --git a/.github/workflows/build-offsetfinder.yml b/.github/workflows/build-offsetfinder.yml index 7328070..fd02364 100644 --- a/.github/workflows/build-offsetfinder.yml +++ b/.github/workflows/build-offsetfinder.yml @@ -26,10 +26,12 @@ jobs: matrix: include: - platform: x64 + sln_platform: x64 zydis_cfg: "Release MD DLL" zydis_bin: ReleaseX64 finder_plat: x64 - platform: Win32 + sln_platform: x86 zydis_cfg: "Release MD DLL" zydis_bin: ReleaseX86 finder_plat: Win32 @@ -55,13 +57,14 @@ jobs: # Build via .sln so $(SolutionDir) resolves to the submodule root where # AdditionalIncludeDirectories and AdditionalDependencies reference zydis/ + # NB: the solution uses x86/x64 platform names (not Win32) - use sln_platform. - name: Build RDPWrapOffsetFinder (${{ matrix.platform }}) working-directory: src-csharp/RDPOffsetFinder run: | msbuild RDPWrapOffsetFinder.sln ` /t:RDPWrapOffsetFinder ` /p:Configuration=Release ` - /p:Platform="${{ matrix.platform }}" ` + /p:Platform="${{ matrix.sln_platform }}" ` /p:PlatformToolset=v143 ` /v:minimal From 2ab48681364fcec2d8ff0f6d0909beae676773b9 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 2 Apr 2026 15:04:48 +0100 Subject: [PATCH 3/5] fix(ci): use sln_platform (x86/x64) for OffsetFinder exe output path The vcxproj has no custom OutDir so MSBuild uses the default: Platform\Config\. When building via .sln with /p:Platform=x86 the platform value propagated to the vcxproj is 'x86' (the CLI override wins over the solution's Win32 mapping), so the exe lands in x86\Release\, not Win32\Release\. - build-offsetfinder.yml: finder_plat: Win32 -> x86 - build-and-release.yml: exeSrc path uses SlnPlatform (x86) not Platform (Win32) Zydis.vcxproj is still invoked directly with Platform=Win32 - unchanged. --- .github/workflows/build-and-release.yml | 5 +++-- .github/workflows/build-offsetfinder.yml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index a4d7c9f..adfd873 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -132,8 +132,9 @@ jobs: /v:minimal $arch = $cfg.Arch - # .sln build outputs to SolutionDir//Release/ (not //Release/) - $exeSrc = "src-csharp/RDPOffsetFinder/$($cfg.Platform)/Release/RDPWrapOffsetFinder.exe" + # .sln build outputs to SolutionDir//Release/ where SlnPlatform is x86/x64 + # (solution GlobalSection maps x86->Win32 internally, but $(Platform) seen by vcxproj is x86) + $exeSrc = "src-csharp/RDPOffsetFinder/$($cfg.SlnPlatform)/Release/RDPWrapOffsetFinder.exe" $dllSrc = "src-csharp/RDPOffsetFinder/zydis/msvc/bin/$($cfg.ZydisBin)/Zydis.dll" Copy-Item $exeSrc ".\RDPWrapOffsetFinder_$arch.exe" Copy-Item $dllSrc ".\Zydis_$arch.dll" diff --git a/.github/workflows/build-offsetfinder.yml b/.github/workflows/build-offsetfinder.yml index fd02364..036adaf 100644 --- a/.github/workflows/build-offsetfinder.yml +++ b/.github/workflows/build-offsetfinder.yml @@ -34,7 +34,7 @@ jobs: sln_platform: x86 zydis_cfg: "Release MD DLL" zydis_bin: ReleaseX86 - finder_plat: Win32 + finder_plat: x86 steps: - name: Checkout repository (with submodules) From 76a4101abe90fb4b87f2e476faa9492d4ed2a701 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 2 Apr 2026 15:20:59 +0100 Subject: [PATCH 4/5] ci: add diagnostic step to locate RDPWrapOffsetFinder.exe after build --- .github/workflows/build-offsetfinder.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/build-offsetfinder.yml b/.github/workflows/build-offsetfinder.yml index 036adaf..3f4f785 100644 --- a/.github/workflows/build-offsetfinder.yml +++ b/.github/workflows/build-offsetfinder.yml @@ -68,6 +68,16 @@ jobs: /p:PlatformToolset=v143 ` /v:minimal + - name: Locate build outputs (diagnostic) + shell: pwsh + run: | + Write-Host "=== RDPWrapOffsetFinder.exe candidates ===" + Get-ChildItem -Recurse -Filter "RDPWrapOffsetFinder.exe" -Path "src-csharp/RDPOffsetFinder" -ErrorAction SilentlyContinue | + Select-Object FullName, Length | Format-Table -AutoSize + Write-Host "=== Directory tree (Release folders only) ===" + Get-ChildItem -Recurse -Directory -Filter "Release" -Path "src-csharp/RDPOffsetFinder" -ErrorAction SilentlyContinue | + Select-Object FullName | Format-Table -AutoSize + - name: Collect outputs shell: pwsh run: | From 2e1add7f30a871d2a6bb3c8bd72d6881c2aa8999 Mon Sep 17 00:00:00 2001 From: Simon Jackson Date: Thu, 2 Apr 2026 20:17:28 +0100 Subject: [PATCH 5/5] fix(ci): use correct OutDir for OffsetFinder exe path Confirmed by local build (linker /OUT: argument): - Win32: OutDir = Release\ (no platform prefix - MSVC default for Win32) - x64: OutDir = x64\Release\ Replace finder_plat/SlnPlatform guesses with explicit out_dir field: Win32 -> out_dir: Release x64 -> out_dir: x64/Release Also remove the temporary diagnostic step. --- .github/workflows/build-and-release.yml | 9 ++++----- .github/workflows/build-offsetfinder.yml | 18 ++++-------------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index adfd873..253c358 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -109,8 +109,8 @@ jobs: Write-Host "Submodule version: $version" foreach ($cfg in @( - @{ Platform = 'x64'; SlnPlatform = 'x64'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX64'; Arch = 'x64' } - @{ Platform = 'Win32'; SlnPlatform = 'x86'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX86'; Arch = 'x86' } + @{ Platform = 'x64'; SlnPlatform = 'x64'; OutDir = 'x64/Release'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX64'; Arch = 'x64' } + @{ Platform = 'Win32'; SlnPlatform = 'x86'; OutDir = 'Release'; ZydisCfg = 'Release MD DLL'; ZydisBin = 'ReleaseX86'; Arch = 'x86' } )) { # Build Zydis DLL msbuild src-csharp/RDPOffsetFinder/zydis/msvc/zydis/Zydis.vcxproj ` @@ -132,9 +132,8 @@ jobs: /v:minimal $arch = $cfg.Arch - # .sln build outputs to SolutionDir//Release/ where SlnPlatform is x86/x64 - # (solution GlobalSection maps x86->Win32 internally, but $(Platform) seen by vcxproj is x86) - $exeSrc = "src-csharp/RDPOffsetFinder/$($cfg.SlnPlatform)/Release/RDPWrapOffsetFinder.exe" + # Win32 OutDir = Release\ (no platform prefix); x64 OutDir = x64\Release\ + $exeSrc = "src-csharp/RDPOffsetFinder/$($cfg.OutDir)/RDPWrapOffsetFinder.exe" $dllSrc = "src-csharp/RDPOffsetFinder/zydis/msvc/bin/$($cfg.ZydisBin)/Zydis.dll" Copy-Item $exeSrc ".\RDPWrapOffsetFinder_$arch.exe" Copy-Item $dllSrc ".\Zydis_$arch.dll" diff --git a/.github/workflows/build-offsetfinder.yml b/.github/workflows/build-offsetfinder.yml index 3f4f785..6dbd10c 100644 --- a/.github/workflows/build-offsetfinder.yml +++ b/.github/workflows/build-offsetfinder.yml @@ -29,12 +29,12 @@ jobs: sln_platform: x64 zydis_cfg: "Release MD DLL" zydis_bin: ReleaseX64 - finder_plat: x64 + out_dir: x64/Release - platform: Win32 sln_platform: x86 zydis_cfg: "Release MD DLL" zydis_bin: ReleaseX86 - finder_plat: x86 + out_dir: Release steps: - name: Checkout repository (with submodules) @@ -68,23 +68,13 @@ jobs: /p:PlatformToolset=v143 ` /v:minimal - - name: Locate build outputs (diagnostic) - shell: pwsh - run: | - Write-Host "=== RDPWrapOffsetFinder.exe candidates ===" - Get-ChildItem -Recurse -Filter "RDPWrapOffsetFinder.exe" -Path "src-csharp/RDPOffsetFinder" -ErrorAction SilentlyContinue | - Select-Object FullName, Length | Format-Table -AutoSize - Write-Host "=== Directory tree (Release folders only) ===" - Get-ChildItem -Recurse -Directory -Filter "Release" -Path "src-csharp/RDPOffsetFinder" -ErrorAction SilentlyContinue | - Select-Object FullName | Format-Table -AutoSize - - name: Collect outputs shell: pwsh run: | $arch = if ("${{ matrix.platform }}" -eq "Win32") { "x86" } else { "x64" } $root = "src-csharp/RDPOffsetFinder" - # .sln build outputs to SolutionDir//Release/ (not //Release/) - $exe = "$root/${{ matrix.finder_plat }}/Release/RDPWrapOffsetFinder.exe" + # Win32 OutDir = Release\ (no platform prefix); x64 OutDir = x64\Release\ + $exe = "$root/${{ matrix.out_dir }}/RDPWrapOffsetFinder.exe" $dll = "$root/zydis/msvc/bin/${{ matrix.zydis_bin }}/Zydis.dll" Write-Host "Exe: $(Get-Item $exe | Select-Object -Exp Length) bytes"