2323env :
2424 BUILD_CONFIGURATION : Release
2525
26+ permissions :
27+ contents : read
28+ actions : write
29+
2630jobs :
2731 # Single Sequential Job - Build everything in specified order
2832 build-sequential :
@@ -34,101 +38,15 @@ jobs:
3438
3539 # Setup build environment
3640 - name : Setup MSBuild
37- uses : microsoft/setup-msbuild@v1
41+ uses : microsoft/setup-msbuild@v2
3842
39- - name : Install Visual Studio 2022 dependencies
40- run : |
41- Write-Output "Installing Visual Studio 2022 dependencies..."
42- choco install visualstudio2022-workload-manageddesktop -y
43- if ($LASTEXITCODE -ne 0) { exit 1 }
44-
45- choco install visualstudio2022-workload-nativedesktop -y
46- if ($LASTEXITCODE -ne 0) { exit 1 }
47-
48- choco install visualstudio2022-workload-vctools -y
49- if ($LASTEXITCODE -ne 0) { exit 1 }
50-
51- choco install innosetup -y
52- if ($LASTEXITCODE -ne 0) { exit 1 }
53-
54- - name : Install Windows SDK + WDK (required for WDF/UMDF headers)
43+ - name : Install Windows Driver Kit (WDK) for WDF/UMDF headers
5544 shell : pwsh
5645 run : |
5746 $ErrorActionPreference = "Stop"
58-
59- function Ensure-WingetPackage([string]$Id) {
60- Write-Output "Checking $Id..."
61- $listed = (winget list --id $Id -e | Out-String)
62- if ($listed -match [regex]::Escape($Id)) {
63- Write-Output "✅ $Id already installed"
64- return
65- }
66-
67- Write-Output "Installing $Id via winget..."
68- winget install --source winget --exact --id $Id --accept-package-agreements --accept-source-agreements --silent
69- if ($LASTEXITCODE -ne 0) {
70- Write-Error "❌ winget install failed for $Id (exit code $LASTEXITCODE)"
71- exit $LASTEXITCODE
72- }
73- Write-Output "✅ Installed $Id"
74- }
75-
76- winget --version
77-
78- # Install matching SDK + WDK (per Microsoft guidance).
79- # Update these IDs if you intentionally move to another kit version.
80- Ensure-WingetPackage "Microsoft.WindowsSDK.10.0.26100"
81- Ensure-WingetPackage "Microsoft.WindowsWDK.10.0.26100"
82-
83- - name : Detect Windows Kits version (WDF/UMDF headers)
84- shell : pwsh
85- run : |
86- $kitsRoot = $null
87- try {
88- $kitsRoot = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -Name "KitsRoot10" -ErrorAction Stop).KitsRoot10
89- } catch {
90- $kitsRoot = Join-Path ${env:ProgramFiles(x86)} "Windows Kits\10\"
91- }
92-
93- if (-not $kitsRoot -or -not (Test-Path $kitsRoot)) {
94- Write-Error "Windows Kits root not found: $kitsRoot"
95- exit 1
96- }
97-
98- $includeRoots =
99- @((Join-Path $kitsRoot "Include")) | Where-Object { Test-Path $_ }
100-
101- if (-not $includeRoots -or $includeRoots.Count -eq 0) {
102- Write-Error "No Windows Kits Include directories found under: $kitsRoot"
103- exit 1
104- }
105-
106- $candidates = foreach ($includeRoot in $includeRoots) {
107- Get-ChildItem -Path $includeRoot -Directory -ErrorAction SilentlyContinue |
108- Where-Object { Test-Path (Join-Path $_.FullName "wdf\umdf\wudfwdm.h") } |
109- ForEach-Object {
110- [PSCustomObject]@{
111- Version = $_.Name
112- IncludeRoot = $includeRoot
113- }
114- }
115- }
116-
117- $best = $candidates | Sort-Object -Property Version -Descending | Select-Object -First 1
118- $kitVersion = $best.Version
119-
120- if (-not $kitVersion) {
121- Write-Error "Could not find any Windows Kits version containing wdf\umdf\wudfwdm.h under: $kitsRoot"
122- Write-Output "Discovered Include roots:"
123- $includeRoots | ForEach-Object { Write-Output ("- " + $_) }
124- exit 1
125- }
126-
127- $windowsSdkDir = (Split-Path $best.IncludeRoot -Parent) + "\"
128- Write-Output "Using WindowsTargetPlatformVersion: $kitVersion"
129- Write-Output "Using WindowsSdkDir: $windowsSdkDir"
130- "WINDOWS_TARGET_PLATFORM_VERSION=$kitVersion" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
131- "WINDOWS_SDK_DIR=$windowsSdkDir" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
47+ Write-Output "Ensuring Windows Driver Kit is installed (Chocolatey: windowsdriverkit11)..."
48+ choco install windowsdriverkit11 -y --no-progress
49+ if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
13250
13351 - name : Setup .NET
13452 uses : actions/setup-dotnet@v4
14765 $vddSln = "Virtual Display Driver (HDR)/MTTVDD.sln"
14866 if (Test-Path $vddSln) {
14967 Write-Output "Found VDD solution: $vddSln"
150- msbuild $vddSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=ARM64 /p:WindowsSdkDir=$env:WINDOWS_SDK_DIR /p:WindowsTargetPlatformVersion=$env:WINDOWS_TARGET_PLATFORM_VERSION / verbosity:minimal
68+ msbuild $vddSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=ARM64 /verbosity:minimal
15169 if ($LASTEXITCODE -eq 0) {
15270 Write-Output "✅ ARM64 VDD build completed successfully"
15371
18199 Write-Output "Building ARM64 VAD with validation disabled..."
182100
183101 # Build with validation disabled to avoid x86 tool conflicts with ARM64 outputs
184- msbuild $vadSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=ARM64 /p:WindowsSdkDir=$env:WINDOWS_SDK_DIR /p:WindowsTargetPlatformVersion=$env:WINDOWS_TARGET_PLATFORM_VERSION /p: EnableInfVerif=false /p:RunApiValidator=false /verbosity:minimal
102+ msbuild $vadSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=ARM64 /p:EnableInfVerif=false /p:RunApiValidator=false /verbosity:minimal
185103
186104 if ($LASTEXITCODE -eq 0) {
187105 Write-Output "✅ ARM64 VAD build completed successfully!"
@@ -209,7 +127,7 @@ jobs:
209127 $vddSln = "Virtual Display Driver (HDR)/MTTVDD.sln"
210128 if (Test-Path $vddSln) {
211129 Write-Output "Found VDD solution: $vddSln"
212- msbuild $vddSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /p:WindowsSdkDir=$env:WINDOWS_SDK_DIR /p:WindowsTargetPlatformVersion=$env:WINDOWS_TARGET_PLATFORM_VERSION / verbosity:minimal
130+ msbuild $vddSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /verbosity:minimal
213131 if ($LASTEXITCODE -eq 0) {
214132 Write-Output "✅ x64 VDD build completed successfully"
215133
@@ -238,7 +156,7 @@ jobs:
238156 $vadSln = "Virtual-Audio-Driver (Latest Stable)/VirtualAudioDriver.sln"
239157 if (Test-Path $vadSln) {
240158 Write-Output "Found VAD solution: $vadSln"
241- msbuild $vadSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /p:WindowsSdkDir=$env:WINDOWS_SDK_DIR /p:WindowsTargetPlatformVersion=$env:WINDOWS_TARGET_PLATFORM_VERSION / verbosity:minimal
159+ msbuild $vadSln /p:Configuration=$env:BUILD_CONFIGURATION /p:Platform=x64 /verbosity:minimal
242160 if ($LASTEXITCODE -eq 0) {
243161 Write-Output "✅ x64 VAD build completed successfully"
244162
@@ -266,6 +184,7 @@ jobs:
266184 New-Item -ItemType Directory -Path "final-build\ARM64" -Force
267185 New-Item -ItemType Directory -Path "final-build\x64" -Force
268186 New-Item -ItemType Directory -Path "final-build\ControlApp" -Force
187+ New-Item -ItemType Directory -Path "final-build\ControlApp-ARM64" -Force
269188
270189 # Checkout Virtual Driver Control Repository
271190 - name : Checkout Virtual Driver Control Repository
@@ -390,6 +309,13 @@ jobs:
390309 $installerPath = "installer-repo"
391310 if (Test-Path $installerPath) {
392311 Push-Location $installerPath
312+
313+ # Ensure Inno Setup is available for iscc
314+ if (-not (Get-Command iscc -ErrorAction SilentlyContinue)) {
315+ Write-Output "Installing Inno Setup..."
316+ choco install innosetup -y --no-progress
317+ if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
318+ }
393319
394320 # Generate release tag
395321 $releaseTag = (Get-Date).ToString('yy.MM.dd')
@@ -510,7 +436,7 @@ jobs:
510436
511437 # STEP 8: Submit to SignPath
512438 - name : " Step 8: Submit to SignPath"
513- if : github.event.inputs.skip_signing != 'true' && steps.upload_for_signpath.outputs.artifact-id != ''
439+ if : github.event.inputs.skip_signing != 'true' && secrets.SIGNPATH_API_TOKEN != '' && vars.SIGNPATH_ORG_ID != '' && vars.SIGNPATH_PROJECT_SLUG != '' && vars.SIGNPATH_POLICY_SLUG != '' && steps.upload_for_signpath.outputs.artifact-id != ''
514440 id : signpath_request
515441 uses : signpath/github-action-submit-signing-request@v1
516442 with :
0 commit comments