Simon Jackson
|
31fe90223d
|
ci: comprehensive CI/CD overhaul and project refactoring
Workflow changes:
- Rename publish-ini.yml -> build-and-release.yml; all refs updated
- Split build-and-release.yml into 6 parallel jobs:
build-dll / build-offsetfinder / download-sergiye (parallel),
build-csharp (needs build-dll), build-msi (needs build-csharp),
release (needs all) with environment gate
- Add build-csharp.yml, build-cpp.yml, build-offsetfinder.yml PR checks
- Add build-msi-check.yml: WiX syntax check on msi/** PRs
- Add actions/cache@v4 NuGet step to all workflows using dotnet
- Pin softprops/action-gh-release to SHA 153bb8e (v2)
- Add concurrency guard, msi/** path filter, source path triggers
- Extended INI validation: check LocalOnlyPatch+SLInitHook per section
- Delete update-finder-tools.yml (superseded)
Automation & tooling:
- Add .github/CODEOWNERS (maintainer review on all PRs)
- Add .github/dependabot.yml (github-actions, nuget, gitsubmodule)
- Add tools/build-local.ps1, make-icons.ps1, sergiye-hashes.json,
update-sergiye-hashes.ps1
- Add docs/BUILDING.md, CODE-SIGNING.md, SUBMODULE-UPDATE.md
- Add msi/ WiX v5 project (RDPWInst.wxs, RDPWInst.wixproj, global.json)
C# source:
- Migrate all projects from RDPWrap.Common -> RDPWrap library
- Add RDPCheck, RDPConf, RDPOffsetFinder C# projects
- Dynamic version via Directory.Build.props MSBuild expression
- Enable RestorePackagesWithLockFile; generate packages.lock.json for all 4 projects
- Dynamic banner version read from assembly at runtime
- .gitignore: ignore staged resources and msi build artifacts
Legacy cleanup:
- Remove Delphi source (src-installer, src-rdpcheck, src-rdpconfig,
src-x86-binarymaster), old res/ directory, bin/*.bat, technical.txt,
tools/RDPWrapOffsetFinder/ prebuilt binaries (now built from submodule)
|
1 month ago |
Simon Jackson
|
666d8cec15
|
feat: Phase 2 - RDPWInst C# console installer
Complete translation of src-installer/RDPWInst.dpr (1,464 lines) to C#:
Program.cs — entry point
- Banner + usage text matching Delphi originals
- Arg parsing: -l / -i [-s] [-o] / -u [-k] / -w / -r
- OS version and architecture guards
- Dispatches to InstallerEngine
InstallerEngine.cs — all installer logic
- CheckInstall() registry TermService validation
- CheckTermsrvProcess() EnumServicesStatusEx loop + auto-start
- CheckTermsrvDependencies() CertPropSvc / SessionEnv enable
- CheckTermsrvVersion() file version + support-level classification
- TSConfigRegistry() fDenyTSConnections, EnableConcurrentSessions,
AllowMultipleTSSessions, AddIns sub-keys
- TSConfigFirewall() netsh advfirewall add / delete rule
- ExtractFiles() install-dir creation, ACLs, INI, rdpw32/64,
rdpclip, rfxvmt optional helpers
- SetWrapperDll() REG_EXPAND_SZ write + Vista reg.exe workaround
- ResetServiceDll() restore termsrv.dll on uninstall
- DeleteFiles() remove rdpwrap.ini + DLL + folder
- TryAutoGenerateOffsets() download OffsetFinder + Zydis, run, clean up
- CheckUpdate() date-compare INI, kill/restart svc, write new INI
- Install() / Uninstall() / Update() / Restart() orchestration
app.manifest — requireAdministrator UAC elevation
RDPWInst.csproj — ApplicationManifest + conditional EmbeddedResource items
Resources/README.md — documents expected binary payload placement
|
1 month ago |