From 16f6912f370f47c8ecb000226c66c941e092fea3 Mon Sep 17 00:00:00 2001 From: Aleksandr Chebotov <47745270+al-cheb@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:13:31 +0200 Subject: [PATCH] Add WDK on Windows Server 2022 (#5652) --- images/win/scripts/Installers/Install-WDK.ps1 | 12 ++++++-- .../SoftwareReport.VisualStudio.psm1 | 29 +++++++++---------- images/win/scripts/Tests/WDK.Tests.ps1 | 6 ++-- images/win/toolsets/toolset-2022.json | 5 ++++ images/win/windows2022.json | 1 + 5 files changed, 33 insertions(+), 20 deletions(-) diff --git a/images/win/scripts/Installers/Install-WDK.ps1 b/images/win/scripts/Installers/Install-WDK.ps1 index 139f50c13..1a6a32346 100644 --- a/images/win/scripts/Installers/Install-WDK.ps1 +++ b/images/win/scripts/Installers/Install-WDK.ps1 @@ -4,7 +4,14 @@ ################################################################################ # Requires Windows SDK with the same version number as the WDK -if (Test-IsWin19) +if (Test-IsWin22) +{ + $winSdkUrl = "https://go.microsoft.com/fwlink/p/?linkid=2196241" + $wdkUrl = "https://go.microsoft.com/fwlink/?linkid=2196230" + $FilePath = "C:\Program Files (x86)\Windows Kits\10\Vsix\VS2022\*\WDK.vsix" + $VSver = "2022" +} +elseif (Test-IsWin19) { $winSdkUrl = "https://go.microsoft.com/fwlink/?linkid=2173743" $wdkUrl = "https://go.microsoft.com/fwlink/?linkid=2166289" @@ -20,7 +27,7 @@ elseif (Test-IsWin16) } else { - throw "Invalid version of Visual Studio is found. Either 2017 or 2019 are required" + throw "Invalid version of Visual Studio is found. Either 2017,2019 or 2022 are required" } $argumentList = ("/features", "+", "/quiet") @@ -32,6 +39,7 @@ Install-Binary -Url $winSdkUrl -Name "winsdksetup.exe" -ArgumentList $argumentLi Install-Binary -Url $wdkUrl -Name "wdksetup.exe" -ArgumentList $argumentList # Need to install the VSIX to get the build targets when running VSBuild +$FilePath = Resolve-Path -Path $FilePath Install-VsixExtension -FilePath $FilePath -Name "WDK.vsix" -VSversion $VSver -InstallOnly Invoke-PesterTests -TestFile "WDK" diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 index b085433c3..f02e4ef84 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.VisualStudio.psm1 @@ -53,29 +53,26 @@ function Get-VisualStudioExtensions { } # SDK - if (Test-IsWin19) { + if ((Test-IsWin19) -or (Test-IsWin22)) { $sdkPackageVersion = Get-SDKVersion $sdkPackages = @( @{Package = 'Windows Software Development Kit Extension'; Version = $sdkPackageVersion} ) } - if ((Test-IsWin16) -or (Test-IsWin19)) { - # Wix - $wixExtensionVersion = ($vsPackages | Where-Object {$_.Id -match 'WixToolset.VisualStudioExtension.Dev' -and $_.type -eq 'vsix'}).Version - $wixPackages = @( - @{Package = "WIX Toolset Studio $vs Extension"; Version = $wixExtensionVersion} - ) + # Wix + $wixExtensionVersion = ($vsPackages | Where-Object {$_.Id -match 'WixToolset.VisualStudioExtension.Dev' -and $_.type -eq 'vsix'}).Version + $wixPackages = @( + @{Package = "WIX Toolset Studio $vs Extension"; Version = $wixExtensionVersion} + ) - # WDK - $wdkPackageVersion = Get-VSExtensionVersion -packageName 'Microsoft.Windows.DriverKit' - $wdkExtensionVersion = Get-WDKVersion - $wdkPackages = @( - @{Package = 'Windows Driver Kit'; Version = $wdkPackageVersion} - @{Package = 'Windows Driver Kit Visual Studio Extension'; Version = $wdkExtensionVersion} - ) - } - + # WDK + $wdkPackageVersion = Get-VSExtensionVersion -packageName 'Microsoft.Windows.DriverKit' + $wdkExtensionVersion = Get-WDKVersion + $wdkPackages = @( + @{Package = 'Windows Driver Kit'; Version = $wdkPackageVersion} + @{Package = 'Windows Driver Kit Visual Studio Extension'; Version = $wdkExtensionVersion} + ) $extensions = @( $vsixs diff --git a/images/win/scripts/Tests/WDK.Tests.ps1 b/images/win/scripts/Tests/WDK.Tests.ps1 index 6c5dc3295..b12005dae 100644 --- a/images/win/scripts/Tests/WDK.Tests.ps1 +++ b/images/win/scripts/Tests/WDK.Tests.ps1 @@ -1,6 +1,8 @@ -Describe "WDK" -Skip:(Test-IsWin22) { +Describe "WDK" { It "WDK exists" { - $WDKVersion = (Get-CimInstance -ClassName Win32_Product -Filter "Name = 'Windows Driver Kit'").Version + $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" + $installedApplications = Get-ItemProperty -Path $regKey + $WDKVersion = $installedApplications | Where-Object DisplayName -eq 'Windows Driver Kit' | Select-Object -First 1 -ExpandProperty DisplayVersion $WDKVersion| Should -Not -BeNullOrEmpty } diff --git a/images/win/toolsets/toolset-2022.json b/images/win/toolsets/toolset-2022.json index 8a7e0bcf9..a9a7127eb 100644 --- a/images/win/toolsets/toolset-2022.json +++ b/images/win/toolsets/toolset-2022.json @@ -196,6 +196,7 @@ "Microsoft.VisualStudio.Component.TestTools.CodedUITest", "Microsoft.VisualStudio.Component.TestTools.WebLoadTest", "Microsoft.VisualStudio.Component.UWP.VC.ARM64", + "Microsoft.VisualStudio.Component.UWP.VC.ARM64EC", "Microsoft.VisualStudio.Component.VC.CLI.Support", "Microsoft.VisualStudio.Component.VC.CMake.Project", "Microsoft.VisualStudio.Component.VC.DiagnosticTools", @@ -211,9 +212,13 @@ "Microsoft.VisualStudio.Component.VC.MFC.ARM", "Microsoft.VisualStudio.Component.VC.MFC.ARM.Spectre", "Microsoft.VisualStudio.Component.VC.ATL.ARM64", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64EC", + "Microsoft.VisualStudio.Component.VC.ATL.ARM64EC.Spectre", "Microsoft.VisualStudio.Component.VC.MFC.ARM64", "Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre", "Microsoft.VisualStudio.Component.VC.MFC.ARM64EC", + "Microsoft.VisualStudio.Component.VC.MFC.ARM64EC.Spectre", "Microsoft.VisualStudio.Component.VC.Modules.x86.x64", "Microsoft.VisualStudio.Component.VC.Tools.ARM64", "Microsoft.VisualStudio.Component.VC.Tools.ARM64EC", diff --git a/images/win/windows2022.json b/images/win/windows2022.json index a427e2399..703e4a1c9 100644 --- a/images/win/windows2022.json +++ b/images/win/windows2022.json @@ -174,6 +174,7 @@ "type": "powershell", "scripts": [ "{{ template_dir }}/scripts/Installers/Install-Wix.ps1", + "{{ template_dir }}/scripts/Installers/Install-WDK.ps1", "{{ template_dir }}/scripts/Installers/Install-Vsix.ps1", "{{ template_dir }}/scripts/Installers/Install-AzureCli.ps1", "{{ template_dir }}/scripts/Installers/Install-AzureDevOpsCli.ps1",