Skip to content

Commit 9eeb8fe

Browse files
Added VAD for building.
1 parent 56a78f9 commit 9eeb8fe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+18666
-0
lines changed
Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
name: Virtual Audio Driver Build and Sign
2+
on:
3+
workflow_dispatch:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- master
10+
jobs:
11+
build-and-sign:
12+
runs-on: windows-latest
13+
strategy:
14+
matrix:
15+
configuration: [Release]
16+
platform: [x64, ARM64]
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v3
20+
21+
- name: Setup MSBuild
22+
uses: microsoft/setup-msbuild@v1
23+
24+
- name: Check Chocolatey installation
25+
run: choco --version
26+
27+
- name: Install Visual Studio 2022 dependencies
28+
run: |
29+
choco install visualstudio2022-workload-manageddesktop -y
30+
if ($LASTEXITCODE -ne 0) { exit 1 }
31+
32+
choco install visualstudio2022-workload-nativedesktop -y
33+
if ($LASTEXITCODE -ne 0) { exit 1 }
34+
35+
choco install visualstudio2022-workload-vctools -y
36+
if ($LASTEXITCODE -ne 0) { exit 1 }
37+
38+
choco install windowsdriverkit11 -y
39+
if ($LASTEXITCODE -ne 0) { exit 1 }
40+
41+
# Fix the WDK paths for InfVerif if needed - only for x64 builds
42+
- name: Fix WDK paths for InfVerif
43+
if: matrix.platform == 'x64'
44+
run: |
45+
# Find where infverif.dll actually exists in the WDK installation
46+
Write-Host "Searching for infverif.dll..."
47+
Get-ChildItem -Path "C:\Program Files (x86)\Windows Kits\10" -Recurse -Filter "infverif.dll" -ErrorAction SilentlyContinue | Select-Object FullName
48+
49+
# Check both potential WDK versions
50+
$wdkPaths = @(
51+
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0",
52+
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0"
53+
)
54+
55+
foreach ($basePath in $wdkPaths) {
56+
Write-Host "Checking $basePath..."
57+
if (Test-Path "$basePath\x86") {
58+
# Create the subfolder if it doesn't exist
59+
if (-not (Test-Path "$basePath\x86\x86")) {
60+
New-Item -Path "$basePath\x86\x86" -ItemType Directory -Force
61+
Write-Host "Created directory: $basePath\x86\x86"
62+
}
63+
64+
# Copy files if they exist
65+
if (Test-Path "$basePath\x86\infverif.dll") {
66+
Copy-Item "$basePath\x86\infverif.dll" "$basePath\x86\x86\" -Force
67+
Write-Host "Copied infverif.dll to $basePath\x86\x86\"
68+
} elseif (Test-Path "$basePath\x86\InfVerif.exe") {
69+
# Sometimes it's an exe instead of dll
70+
Copy-Item "$basePath\x86\InfVerif.exe" "$basePath\x86\x86\" -Force
71+
Write-Host "Copied InfVerif.exe to $basePath\x86\x86\"
72+
}
73+
74+
# List contents to verify
75+
Write-Host "Contents of $basePath\x86\x86:"
76+
Get-ChildItem "$basePath\x86\x86" -ErrorAction SilentlyContinue
77+
}
78+
}
79+
80+
# Try another approach - check if we need to extract infverif.dll from somewhere
81+
Write-Host "Checking for InfVerif.exe..."
82+
$infVerifExe = Get-ChildItem -Path "C:\Program Files (x86)\Windows Kits\10" -Recurse -Filter "InfVerif.exe" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName
83+
84+
if ($infVerifExe) {
85+
Write-Host "Found InfVerif.exe at: $infVerifExe"
86+
$exeDir = Split-Path -Parent $infVerifExe
87+
$targetDir = "$exeDir\x86"
88+
89+
# Create directory if needed
90+
if (-not (Test-Path $targetDir)) {
91+
New-Item -Path $targetDir -ItemType Directory -Force
92+
Write-Host "Created directory: $targetDir"
93+
}
94+
95+
# Create a dummy infverif.dll if needed
96+
if (-not (Test-Path "$targetDir\infverif.dll")) {
97+
# Create empty dll as placeholder (this is a hacky fix but might work)
98+
[System.IO.File]::WriteAllBytes("$targetDir\infverif.dll", [byte[]]@(0x4D, 0x5A))
99+
Write-Host "Created placeholder infverif.dll at: $targetDir\infverif.dll"
100+
}
101+
}
102+
103+
# Print the directory structure to help diagnose
104+
Write-Host "WDK bin directory structure:"
105+
Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin" -Recurse -Depth 3 | Where-Object { $_.Name -like "*inf*" -or $_.FullName -like "*\x86\*" }
106+
107+
# Build x64 with full validation
108+
- name: Build driver (x64)
109+
if: matrix.platform == 'x64'
110+
run: |
111+
cd "Virtual-Audio-Driver (Latest Stable)"
112+
msbuild "VirtualAudioDriver.sln" /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }}
113+
114+
# Build ARM64 with validation completely disabled
115+
- name: Build driver (ARM64)
116+
if: matrix.platform == 'ARM64'
117+
run: |
118+
# Skip validation completely for ARM64 builds
119+
cd "Virtual-Audio-Driver (Latest Stable)"
120+
msbuild "VirtualAudioDriver.sln" /p:Configuration=${{ matrix.configuration }} /p:Platform=ARM64 /p:RunCodeAnalysis=false /p:DriverTargetPlatform=Universal /p:UseInfVerifierEx=false /p:ValidateDrivers=false /p:StampInf=false /p:ApiValidator_Enable=false /p:InfVerif_Enable=false /p:DisableVerification=true /p:SignMode=Off /p:ApiValidator_ExcludedTargets=ARM64 /p:EnableInf2cat=false
121+
122+
# Manual deployment steps for ARM64
123+
- name: Create ARM64 Package Directory Structure
124+
if: matrix.platform == 'ARM64'
125+
run: |
126+
cd "Virtual-Audio-Driver (Latest Stable)"
127+
# Create package directory structure
128+
$packageDir = "${{ matrix.platform }}\${{ matrix.configuration }}\package"
129+
if (-not (Test-Path $packageDir)) {
130+
New-Item -Path $packageDir -ItemType Directory -Force
131+
Write-Host "Created directory: $packageDir"
132+
}
133+
134+
# Copy SYS file if it exists
135+
$sourceDir = "Source\Main\${{ matrix.platform }}\${{ matrix.configuration }}"
136+
if (Test-Path "$sourceDir\VirtualAudioDriver.sys") {
137+
Copy-Item "$sourceDir\VirtualAudioDriver.sys" "$packageDir\" -Force
138+
Write-Host "Copied VirtualAudioDriver.sys to package directory"
139+
} else {
140+
Write-Host "WARNING: VirtualAudioDriver.sys not found in $sourceDir"
141+
}
142+
143+
# Copy INF file if it exists, or from x64 build
144+
$infSource = "Source\Main\${{ matrix.platform }}\${{ matrix.configuration }}\VirtualAudioDriver.inf"
145+
$x64InfSource = "Source\Main\x64\${{ matrix.configuration }}\VirtualAudioDriver.inf"
146+
147+
if (Test-Path $infSource) {
148+
Copy-Item $infSource "$packageDir\" -Force
149+
Write-Host "Copied VirtualAudioDriver.inf from ARM64 build"
150+
} elseif (Test-Path $x64InfSource) {
151+
Copy-Item $x64InfSource "$packageDir\" -Force
152+
Write-Host "Copied VirtualAudioDriver.inf from x64 build"
153+
} else {
154+
Write-Host "WARNING: VirtualAudioDriver.inf not found"
155+
}
156+
157+
# Create placeholder CAT file if needed
158+
if (-not (Test-Path "$packageDir\virtualaudiodriver.cat")) {
159+
[System.IO.File]::WriteAllBytes("$packageDir\virtualaudiodriver.cat", [byte[]]@(0x00))
160+
Write-Host "Created placeholder virtualaudiodriver.cat file"
161+
}
162+
163+
- name: List build directory
164+
run: |
165+
cd "Virtual-Audio-Driver (Latest Stable)"
166+
dir "${{ matrix.platform }}\${{ matrix.configuration }}\package"
167+
continue-on-error: true
168+
169+
- name: Upload built driver
170+
id: upload_artifact
171+
uses: actions/upload-artifact@v4
172+
with:
173+
name: Built-Driver-${{ matrix.configuration }}-${{ matrix.platform }}
174+
path: |
175+
Virtual-Audio-Driver (Latest Stable)/${{ matrix.platform }}/${{ matrix.configuration }}/package/VirtualAudioDriver.sys
176+
Virtual-Audio-Driver (Latest Stable)/${{ matrix.platform }}/${{ matrix.configuration }}/package/VirtualAudioDriver.inf
177+
Virtual-Audio-Driver (Latest Stable)/${{ matrix.platform }}/${{ matrix.configuration }}/package/virtualaudiodriver.cat
178+
continue-on-error: true
179+
180+
- name: Generate release tag
181+
id: generate_tag
182+
run: |
183+
$releaseTag = (Get-Date).ToString('yy.MM.dd')
184+
echo "RELEASE_TAG=$releaseTag" >> $env:GITHUB_ENV
185+
186+
- name: Show generated release tag
187+
run: |
188+
echo "Generated Release Tag: ${{ env.RELEASE_TAG }}"
189+
190+
- name: Verify Built Artifacts
191+
run: |
192+
cd "Virtual-Audio-Driver (Latest Stable)"
193+
dir '${{ matrix.platform }}\${{ matrix.configuration }}\package'
194+
continue-on-error: true
195+
196+
# SIGNING PROCESS
197+
- name: Submit signing request to SignPath
198+
id: signpath_request
199+
uses: signpath/github-action-submit-signing-request@v1
200+
with:
201+
api-token: '${{ secrets.SIGNPATH_API_TOKEN }}'
202+
organization-id: '${{ vars.SIGNPATH_ORG_ID }}'
203+
project-slug: '${{ vars.SIGNPATH_PROJECT_SLUG }}' # Changed back to the variable
204+
signing-policy-slug: 'release-signing' # Changed from 'VAD' to 'release-signing'
205+
github-artifact-id: '${{ steps.upload_artifact.outputs.artifact-id }}'
206+
wait-for-completion: true
207+
output-artifact-directory: '${{ vars.SIGNPATH_OUTPUT_DIR }}'
208+
parameters: |
209+
Version: ${{ toJSON(matrix.configuration) }}
210+
Release_Tag: "${{ env.RELEASE_TAG }}"
211+
212+
- name: Verify Signed Artifacts
213+
run: dir '${{ vars.SIGNPATH_OUTPUT_DIR }}'
214+
215+
- name: Upload signed artifacts
216+
id: upload_signed_artifacts
217+
uses: actions/upload-artifact@v4
218+
with:
219+
name: Signed-Driver-${{ matrix.configuration }}-${{ matrix.platform }}
220+
path: |
221+
${{ vars.SIGNPATH_OUTPUT_DIR }}\VirtualAudioDriver.sys
222+
${{ vars.SIGNPATH_OUTPUT_DIR }}\VirtualAudioDriver.inf
223+
${{ vars.SIGNPATH_OUTPUT_DIR }}\virtualaudiodriver.cat
224+
225+
- name: Prepare Setup Repository
226+
run: |
227+
git clone https://${{ secrets.READ_REPO }}@github.com/VirtualAudio/Virtual-Driver-Installer.git inno-setup
228+
229+
- name: Prepare Setup
230+
run: |
231+
copy "${{ vars.SIGNPATH_OUTPUT_DIR }}\*" inno-setup\input\
232+
$platform = "${{ matrix.platform }}"
233+
(Get-Content "inno-setup\Setup.iss") |
234+
ForEach-Object { $_ -replace '1.0.0', '${{ env.RELEASE_TAG }}' } |
235+
Set-Content "inno-setup\Setup.iss"
236+
237+
if ($platform -eq 'ARM64') {
238+
(Get-Content "inno-setup\Setup.iss") |
239+
ForEach-Object { $_ -replace 'x64compatible', 'arm64' } |
240+
Set-Content "inno-setup\Setup.iss"
241+
242+
(Get-Content "inno-setup\Setup.iss") |
243+
ForEach-Object { $_ -replace '-x64', '-arm64' } |
244+
Set-Content "inno-setup\Setup.iss"
245+
246+
if (Test-Path "inno-setup\input\Companion\VADSysTray.exe") {Remove-Item "inno-setup\input\Companion\VADSysTray.exe"}
247+
copy "inno-setup\input\Companion\arm64\VADSysTray.exe" "inno-setup\input\Companion\"
248+
}
249+
250+
- name: Compile Installer
251+
uses: Minionguyjpro/[email protected]
252+
with:
253+
path: inno-setup\Setup.iss
254+
options: /O+
255+
256+
- name: Upload Installer as artifact
257+
uses: actions/upload-artifact@v4
258+
with:
259+
name: Installer-${{ matrix.configuration }}-${{ matrix.platform }}
260+
path: inno-setup\output\*.exe
261+
262+
celebrate:
263+
needs: build-and-sign
264+
runs-on: ubuntu-latest
265+
steps:
266+
- name: Celebrate
267+
run: |
268+
echo "Virtual Audio Driver build and sign completed successfully!"

0 commit comments

Comments
 (0)