From ebedfbc739019e8942be5003fad3f7d0a3de340c Mon Sep 17 00:00:00 2001 From: Maksim Shilov <89912354+shilovmaksim@users.noreply.github.com> Date: Mon, 20 Sep 2021 13:06:52 +0300 Subject: [PATCH] [Windows OS] Include Microsoft Game Development Kit (GDK) to image (#4097) --- images/win/scripts/Installers/Install-GDK.ps1 | 19 +++++++++++++++++++ .../SoftwareReport/SoftwareReport.Common.psm1 | 7 +++++++ .../SoftwareReport.Generator.ps1 | 5 +++++ images/win/scripts/Tests/Tools.Tests.ps1 | 6 ++++++ images/win/windows2019.json | 1 + 5 files changed, 38 insertions(+) create mode 100644 images/win/scripts/Installers/Install-GDK.ps1 diff --git a/images/win/scripts/Installers/Install-GDK.ps1 b/images/win/scripts/Installers/Install-GDK.ps1 new file mode 100644 index 000000000..6283167d5 --- /dev/null +++ b/images/win/scripts/Installers/Install-GDK.ps1 @@ -0,0 +1,19 @@ +################################################################################ +## File: Install-GDK.ps1 +## Desc: Install Microsoft Game Developement Kit +################################################################################ + +# Preparation +$tempFolder = Join-Path $env:Tmp "GDK" + +# Fetching Microsoft GDK release version +$GDKReleaseVersion = (Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/GDK/releases/latest").tag_name + +# Cloning GDK repo and checking out to release +git clone --depth 1 --branch $GDKReleaseVersion "https://github.com/microsoft/GDK.git" $tempFolder + +# Installing GDK +$GDKInstaller = Join-Path $tempFolder "pgdk.exe" +Install-Binary -FilePath $GDKInstaller -ArgumentList ("/quiet", "/norestart") + +Invoke-PesterTests -Testfile "Tools" -TestName "Microsoft GDK" \ No newline at end of file diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 index 51e8e7708..4bcf722b0 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Common.psm1 @@ -324,6 +324,13 @@ function Get-PipxVersion { return "Pipx $pipxVersion" } +function Get-GDKVersion { + $regKey = "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" + $installedApplications = Get-ItemProperty -Path $regKey + $GDKRelease = $installedApplications | Where-Object DisplayName -match "Microsoft Game Development Kit" + return "$($GDKRelease.DisplayName) $($GDKRelease.DisplayVersion)" +} + function Build-PackageManagementEnvironmentTable { $envVariables = @( @{ diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index c2ee6301b..167de2ce4 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -123,6 +123,11 @@ $toolsList = @( (Get-ZstdVersion), (Get-YAMLLintVersion) ) +if (Test-IsWin19) { + $toolsList += @( + (Get-GDKVersion) + ) +} if ((Test-IsWin16) -or (Test-IsWin19)) { $toolsList += @( (Get-NSISVersion), diff --git a/images/win/scripts/Tests/Tools.Tests.ps1 b/images/win/scripts/Tests/Tools.Tests.ps1 index cb72bbd3a..8f18ecce3 100644 --- a/images/win/scripts/Tests/Tools.Tests.ps1 +++ b/images/win/scripts/Tests/Tools.Tests.ps1 @@ -91,6 +91,12 @@ Describe "Mingw64" { } } +Describe "Microsoft GDK" -Skip:(-not (Test-IsWin19)) { + It "GDK" { + "$($env:GRDKLatest)grdk.ini" | Should -Exist + } +} + Describe "GoogleCloudSDK" -Skip:(Test-IsWin22) { It "" -TestCases @( @{ ToolName = "bq" } diff --git a/images/win/windows2019.json b/images/win/windows2019.json index af3c1ea91..1bc66248a 100644 --- a/images/win/windows2019.json +++ b/images/win/windows2019.json @@ -252,6 +252,7 @@ "{{ template_dir }}/scripts/Installers/Install-GoogleCloudSDK.ps1", "{{ template_dir }}/scripts/Installers/Install-CodeQLBundle.ps1", "{{ template_dir }}/scripts/Installers/Install-BizTalkBuildComponent.ps1", + "{{ template_dir }}/scripts/Installers/Install-GDK.ps1", "{{ template_dir }}/scripts/Installers/Disable-JITDebugger.ps1", "{{ template_dir }}/scripts/Installers/Configure-DynamicPort.ps1", "{{ template_dir }}/scripts/Installers/Configure-GDIProcessHandleQuota.ps1",