@@ -156,41 +156,77 @@ jobs:
156156 restore-keys : |
157157 ${{ runner.os }}-nuget-
158158
159+ - uses : actions/cache@v5
160+ if : steps.nightly_release_kill_switch.outputs.enabled == 'true' && steps.check_changes.outputs.has_changes == 'true'
161+ with :
162+ path : ${{ runner.temp }}/webview2
163+ key : webview2-${{ runner.os }}
164+
159165 - name : Populate WebView2 (Preview)
160166 if : steps.nightly_release_kill_switch.outputs.enabled == 'true' && steps.check_changes.outputs.has_changes == 'true'
161167 shell : pwsh
162168 run : |
169+ $ErrorActionPreference = "Stop"
170+
163171 $root = $env:GITHUB_WORKSPACE
164172 if (-not $root) { $root = (Get-Location).Path }
165- $utilProj = Join-Path $root "Source\Krypton Components\Krypton.Utilities\Krypton.Utilities.csproj"
173+
166174 $libDir = Join-Path $root "Source\Krypton Components\Krypton.Utilities\Lib\WebView2"
167- if (-not (Test-Path $utilProj)) { Write-Error "Project not found: $utilProj"; exit 1 }
168- if (-not (Test-Path $libDir)) { New-Item -ItemType Directory -Path $libDir -Force }
175+ $tempDir = Join-Path $env:RUNNER_TEMP "webview2"
176+
177+ New-Item -ItemType Directory -Force -Path $libDir | Out-Null
178+ New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
179+
169180 $packageId = "Microsoft.Web.WebView2"
170- # Use prerelease versions for alpha/nightly builds to avoid .NET 11.0 requirement
171- Write-Host "Using prerelease=true for WebView2 SDK lookup (nightly build) "
172- $latestVersion = $null
181+
182+ Write-Host "Querying NuGet for latest WebView2 prerelease... "
183+
173184 try {
174- $searchResponse = Invoke-RestMethod -Uri "https://azuresearch-usnc.nuget.org/query?q=$packageId&prerelease=true&semVerLevel=2.0.0&take=1" -Method Get
175- if ($searchResponse.data -and $searchResponse.data.Count -gt 0) { $latestVersion = $searchResponse.data[0].version }
176- } catch {
177- try {
178- $response = Invoke-RestMethod -Uri "https://api.nuget.org/v3-flatcontainer/$packageId/index.json" -Method Get
179- # Include prerelease versions
180- $allVersions = $response.versions | Where-Object { $_ -match '^\d+\.\d+\.\d+' }
181- if ($allVersions) { $latestVersion = $allVersions | Sort-Object { [System.Version]($_ -replace '-.*', '') } -Descending | Select-Object -First 1 }
182- } catch {}
185+ $search = Invoke-RestMethod `
186+ -Uri "https://azuresearch-usnc.nuget.org/query?q=$packageId&prerelease=true&semVerLevel=2.0.0&take=1"
187+
188+ $latestVersion = $search.data[0].version
183189 }
184- if (-not $latestVersion) { $latestVersion = "1.0.3595.46" }
185- Write-Host "Using WebView2 (Preview): $latestVersion"
186- dotnet add $utilProj package $packageId --version $latestVersion
187- dotnet restore $utilProj
188- $nugetBase = Join-Path $env:USERPROFILE ".nuget\packages\microsoft.web.webview2\$latestVersion"
189- @("Microsoft.Web.WebView2.Core.dll","Microsoft.Web.WebView2.WinForms.dll","WebView2Loader.dll") | ForEach-Object {
190- $f = Get-ChildItem -Path $nugetBase -Recurse -Name $_ -ErrorAction SilentlyContinue | Select-Object -First 1
191- if ($f) { Copy-Item (Join-Path $nugetBase $f) $libDir -Force; Write-Host "Copied $_" }
190+ catch {
191+ Write-Warning "NuGet search failed, using fallback version"
192+ $latestVersion = "1.0.3595.46"
192193 }
193- dotnet remove package $packageId --project $utilProj
194+
195+ Write-Host "Using WebView2 version: $latestVersion"
196+
197+ $nupkg = Join-Path $tempDir "$packageId.$latestVersion.nupkg"
198+ $extractDir = Join-Path $tempDir "extract"
199+
200+ Write-Host "Downloading package..."
201+
202+ Invoke-WebRequest `
203+ -Uri "https://www.nuget.org/api/v2/package/$packageId/$latestVersion" `
204+ -OutFile $nupkg
205+
206+ Write-Host "Extracting package..."
207+
208+ Expand-Archive $nupkg $extractDir -Force
209+
210+ Write-Host "Copying required DLLs..."
211+
212+ $files = @(
213+ "Microsoft.Web.WebView2.Core.dll"
214+ "Microsoft.Web.WebView2.WinForms.dll"
215+ "WebView2Loader.dll"
216+ )
217+
218+ foreach ($file in $files) {
219+ $found = Get-ChildItem $extractDir -Recurse -Filter $file | Select-Object -First 1
220+ if ($found) {
221+ Copy-Item $found.FullName $libDir -Force
222+ Write-Host "Copied $file"
223+ }
224+ else {
225+ Write-Warning "$file not found in package"
226+ }
227+ }
228+
229+ Write-Host "WebView2 population complete."
194230
195231 - name : Restore
196232 if : steps.nightly_release_kill_switch.outputs.enabled == 'true' && steps.check_changes.outputs.has_changes == 'true'
0 commit comments