diff --git a/build/packages.config b/build/packages.config
index 189017052d..3717cf5b97 100644
--- a/build/packages.config
+++ b/build/packages.config
@@ -5,4 +5,6 @@
+
+
diff --git a/build/pipelines/release.yml b/build/pipelines/release.yml
index a8b9e612d1..600b4a95ea 100644
--- a/build/pipelines/release.yml
+++ b/build/pipelines/release.yml
@@ -134,8 +134,6 @@ jobs:
Write-Host "##vso[task.setvariable variable=RationalizedBuildPlatform]${Arch}"
- template: .\templates\restore-nuget-steps.yml
- # Pull the Windows SDK for the developer tools like the debuggers so we can index sources later
- - template: .\templates\install-winsdk-steps.yml
- task: UniversalPackages@0
displayName: Download terminal-internal Universal Package
inputs:
@@ -238,6 +236,7 @@ jobs:
filePath: build\scripts\Index-Pdbs.ps1
arguments: -SearchDir '$(Build.SourcesDirectory)' -SourceRoot '$(Build.SourcesDirectory)' -recursive -Verbose -CommitId $(Build.SourceVersion)
errorActionPreference: silentlyContinue
+ pwsh: true
- task: PowerShell@2
displayName: Run Unit Tests
condition: and(succeeded(), or(eq(variables['BuildPlatform'], 'x64'), eq(variables['BuildPlatform'], 'x86')))
@@ -608,6 +607,8 @@ jobs:
- task: PkgESSetupBuild@12
displayName: Package ES - Setup Build
+ - template: .\templates\restore-nuget-steps.yml
+
# Download the appx-PLATFORM-CONFIG-VERSION artifact for every platform/version combo
- ${{ each platform in parameters.buildPlatforms }}:
- ${{ each windowsVersion in parameters.buildWindowsVersions }}:
@@ -630,13 +631,12 @@ jobs:
}
displayName: Extract symbols for public consumption
- # Pull the Windows SDK for the developer tools like the debuggers so we can index sources later
- - template: .\templates\install-winsdk-steps.yml
- task: PowerShell@2
displayName: Source Index PDBs (the public ones)
inputs:
filePath: build\scripts\Index-Pdbs.ps1
arguments: -SearchDir '$(Build.SourcesDirectory)/appxsym-temp' -SourceRoot '$(Build.SourcesDirectory)' -recursive -Verbose -CommitId $(Build.SourceVersion)
+ pwsh: true
# Publish the app symbols to the public MSDL symbol server
# accessible via https://msdl.microsoft.com/download/symbols
diff --git a/build/pipelines/templates/install-winsdk-steps.yml b/build/pipelines/templates/install-winsdk-steps.yml
deleted file mode 100644
index 6607cfccdb..0000000000
--- a/build/pipelines/templates/install-winsdk-steps.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-parameters:
- sdkVersion: 18362
-steps:
- - task: powershell@2
- inputs:
- targetType: filePath
- filePath: build\scripts\Install-WindowsSdkISO.ps1
- arguments: ${{ parameters.sdkVersion }}
- displayName: 'Install Windows SDK (${{ parameters.sdkVersion }})'
\ No newline at end of file
diff --git a/build/scripts/Index-Pdbs.ps1 b/build/scripts/Index-Pdbs.ps1
index 61142cade3..d0a17d61fb 100644
--- a/build/scripts/Index-Pdbs.ps1
+++ b/build/scripts/Index-Pdbs.ps1
@@ -8,10 +8,11 @@ Param(
[switch]$recursive
)
-$debuggerPath = (Get-ItemProperty -path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots" -name WindowsDebuggersRoot10).WindowsDebuggersRoot10
-$srcsrvPath = Join-Path $debuggerPath "x64\srcsrv"
-$srctoolExe = Join-Path $srcsrvPath "srctool.exe"
-$pdbstrExe = Join-Path $srcsrvPath "pdbstr.exe"
+$pdbStrPackage = ([xml](Get-Content "$SourceRoot\build\packages.config")).packages.package | Where-Object id -like "*PdbStr*"
+# This assumes that we rev PdbStr and SrcTool at the same time.
+$debugPackageVersions = $pdbStrPackage.version
+$srctoolExe = Join-Path $SourceRoot "packages" "Microsoft.Debugging.Tools.SrcTool.$debugPackageVersions" "content" "amd64" "srctool.exe"
+$pdbstrExe = Join-Path $SourceRoot "packages" "Microsoft.Debugging.Tools.PdbStr.$debugPackageVersions" "content" "amd64" "pdbstr.exe"
$fileTable = @{}
foreach ($gitFile in & git ls-files)
diff --git a/build/scripts/Install-WindowsSdkISO.ps1 b/build/scripts/Install-WindowsSdkISO.ps1
deleted file mode 100644
index b61ce483d6..0000000000
--- a/build/scripts/Install-WindowsSdkISO.ps1
+++ /dev/null
@@ -1,346 +0,0 @@
-[CmdletBinding()]
-param([Parameter(Mandatory=$true, Position=0)]
- [string]$buildNumber)
-
-# Ensure the error action preference is set to the default for PowerShell3, 'Stop'
-$ErrorActionPreference = 'Stop'
-
-# Constants
-$WindowsSDKOptions = @("OptionId.UWPCpp", "OptionId.DesktopCPPx64", "OptionId.DesktopCPPx86", "OptionId.DesktopCPPARM64", "OptionId.DesktopCPPARM", "OptionId.WindowsDesktopDebuggers")
-$WindowsSDKRegPath = "HKLM:\Software\WOW6432Node\Microsoft\Windows Kits\Installed Roots"
-$WindowsSDKRegRootKey = "KitsRoot10"
-$WindowsSDKVersion = "10.0.$buildNumber.0"
-$WindowsSDKInstalledRegPath = "$WindowsSDKRegPath\$WindowsSDKVersion\Installed Options"
-$StrongNameRegPath = "HKLM:\SOFTWARE\Microsoft\StrongName\Verification"
-$PublicKeyTokens = @("31bf3856ad364e35")
-
-if ($buildNumber -notmatch "^\d{5,}$")
-{
- Write-Host "ERROR: '$buildNumber' doesn't look like a windows build number"
- Write-Host
- Exit 1
-}
-
-function Download-File
-{
- param ([string] $outDir,
- [string] $downloadUrl,
- [string] $downloadName)
-
- $downloadPath = Join-Path $outDir "$downloadName.download"
- $downloadDest = Join-Path $outDir $downloadName
- $downloadDestTemp = Join-Path $outDir "$downloadName.tmp"
-
- Write-Host -NoNewline "Downloading $downloadName..."
-
- $retries = 10
- $downloaded = $false
- while (-not $downloaded)
- {
- try
- {
- $webclient = new-object System.Net.WebClient
- $webclient.DownloadFile($downloadUrl, $downloadPath)
- $downloaded = $true
- }
- catch [System.Net.WebException]
- {
- Write-Host
- Write-Warning "Failed to fetch updated file from $downloadUrl : $($error[0])"
- if (!(Test-Path $downloadDest))
- {
- if ($retries -gt 0)
- {
- Write-Host "$retries retries left, trying download again"
- $retries--
- start-sleep -Seconds 10
- }
- else
- {
- throw "$downloadName was not found at $downloadDest"
- }
- }
- else
- {
- Write-Warning "$downloadName may be out of date"
- }
- }
- }
-
- Unblock-File $downloadPath
-
- $downloadDestTemp = $downloadPath;
-
- # Delete and rename to final dest
- Write-Host "testing $downloadDest"
- if (Test-Path $downloadDest)
- {
- Write-Host "Deleting: $downloadDest"
- Remove-Item $downloadDest -Force
- }
-
- Move-Item -Force $downloadDestTemp $downloadDest
- Write-Host "Done"
-
- return $downloadDest
-}
-
-function Get-ISODriveLetter
-{
- param ([string] $isoPath)
-
- $diskImage = Get-DiskImage -ImagePath $isoPath
- if ($diskImage)
- {
- $volume = Get-Volume -DiskImage $diskImage
-
- if ($volume)
- {
- $driveLetter = $volume.DriveLetter
- if ($driveLetter)
- {
- $driveLetter += ":"
- return $driveLetter
- }
- }
- }
-
- return $null
-}
-
-function Mount-ISO
-{
- param ([string] $isoPath)
-
- # Check if image is already mounted
- $isoDrive = Get-ISODriveLetter $isoPath
-
- if (!$isoDrive)
- {
- Mount-DiskImage -ImagePath $isoPath -StorageType ISO | Out-Null
- }
-
- $isoDrive = Get-ISODriveLetter $isoPath
- Write-Verbose "$isoPath mounted to ${isoDrive}:"
-}
-
-function Dismount-ISO
-{
- param ([string] $isoPath)
-
- $isoDrive = (Get-DiskImage -ImagePath $isoPath | Get-Volume).DriveLetter
-
- if ($isoDrive)
- {
- Write-Verbose "$isoPath dismounted"
- Dismount-DiskImage -ImagePath $isoPath | Out-Null
- }
-}
-
-function Disable-StrongName
-{
- param ([string] $publicKeyToken = "*")
-
- reg ADD "HKLM\SOFTWARE\Microsoft\StrongName\Verification\*,$publicKeyToken" /f | Out-Null
- if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64")
- {
- reg ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,$publicKeyToken" /f | Out-Null
- }
-}
-
-function Test-Admin
-{
- $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
- $principal = New-Object Security.Principal.WindowsPrincipal $identity
- $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
-}
-
-function Test-RegistryPathAndValue
-{
- param (
- [parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- [string] $path,
- [parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- [string] $value)
-
- try
- {
- if (Test-Path $path)
- {
- Get-ItemProperty -Path $path | Select-Object -ExpandProperty $value -ErrorAction Stop | Out-Null
- return $true
- }
- }
- catch
- {
- }
-
- return $false
-}
-
-function Test-InstallWindowsSDK
-{
- $retval = $true
-
- if (Test-RegistryPathAndValue -Path $WindowsSDKRegPath -Value $WindowsSDKRegRootKey)
- {
- # A Windows SDK is installed
- # Is an SDK of our version installed with the options we need?
- $allRequiredSdkOptionsInstalled = $true
- foreach($sdkOption in $WindowsSDKOptions)
- {
- if (!(Test-RegistryPathAndValue -Path $WindowsSDKInstalledRegPath -Value $sdkOption))
- {
- $allRequiredSdkOptionsInstalled = $false
- }
- }
-
- if($allRequiredSdkOptionsInstalled)
- {
- # It appears we have what we need. Double check the disk
- $sdkRoot = Get-ItemProperty -Path $WindowsSDKRegPath | Select-Object -ExpandProperty $WindowsSDKRegRootKey
- if ($sdkRoot)
- {
- if (Test-Path $sdkRoot)
- {
- $refPath = Join-Path $sdkRoot "References\$WindowsSDKVersion"
- if (Test-Path $refPath)
- {
- $umdPath = Join-Path $sdkRoot "UnionMetadata\$WindowsSDKVersion"
- if (Test-Path $umdPath)
- {
- # Pretty sure we have what we need
- $retval = $false
- }
- }
- }
- }
- }
- }
-
- return $retval
-}
-
-function Test-InstallStrongNameHijack
-{
- foreach($publicKeyToken in $PublicKeyTokens)
- {
- $key = "$StrongNameRegPath\*,$publicKeyToken"
- if (!(Test-Path $key))
- {
- return $true
- }
- }
-
- return $false
-}
-
-Write-Host -NoNewline "Checking for installed Windows SDK $WindowsSDKVersion..."
-$InstallWindowsSDK = Test-InstallWindowsSDK
-if ($InstallWindowsSDK)
-{
- Write-Host "Installation required"
-}
-else
-{
- Write-Host "INSTALLED"
-}
-
-$StrongNameHijack = Test-InstallStrongNameHijack
-Write-Host -NoNewline "Checking if StrongName bypass required..."
-
-if ($StrongNameHijack)
-{
- Write-Host "REQUIRED"
-}
-else
-{
- Write-Host "Done"
-}
-
-if ($StrongNameHijack -or $InstallWindowsSDK)
-{
- if (!(Test-Admin))
- {
- Write-Host
- throw "ERROR: Elevation required"
- }
-}
-
-if ($InstallWindowsSDK)
-{
- # Static(ish) link for Windows SDK
- # Note: there is a delay from Windows SDK announcements to availability via the static link
- $uri = "https://software-download.microsoft.com/download/sg/Windows_InsiderPreview_SDK_en-us_$($buildNumber)_1.iso";
-
- if ($env:TEMP -eq $null)
- {
- $env:TEMP = Join-Path $env:SystemDrive 'temp'
- }
-
- $winsdkTempDir = Join-Path (Join-Path $env:TEMP ([System.IO.Path]::GetRandomFileName())) "WindowsSDK"
-
- if (![System.IO.Directory]::Exists($winsdkTempDir))
- {
- [void][System.IO.Directory]::CreateDirectory($winsdkTempDir)
- }
-
- $file = "winsdk_$buildNumber.iso"
-
- Write-Verbose "Getting WinSDK from $uri"
- $downloadFile = Download-File $winsdkTempDir $uri $file
- Write-Verbose "File is at $downloadFile"
- $downloadFileItem = Get-Item $downloadFile
-
- # Check to make sure the file is at least 10 MB.
- if ($downloadFileItem.Length -lt 10*1024*1024)
- {
- Write-Host
- Write-Host "ERROR: Downloaded file doesn't look large enough to be an ISO. The requested version may not be on microsoft.com yet."
- Write-Host
- Exit 1
- }
-
- # TODO Check if zip, exe, iso, etc.
- try
- {
- Write-Host -NoNewline "Mounting ISO $file..."
- Mount-ISO $downloadFile
- Write-Host "Done"
-
- $isoDrive = Get-ISODriveLetter $downloadFile
-
- if (Test-Path $isoDrive)
- {
- Write-Host -NoNewLine "Installing WinSDK..."
-
- $setupPath = Join-Path "$isoDrive" "WinSDKSetup.exe"
- Start-Process -Wait $setupPath "/features $WindowsSDKOptions /q"
- Write-Host "Done"
- }
- else
- {
- throw "Could not find mounted ISO at ${isoDrive}"
- }
- }
- finally
- {
- Write-Host -NoNewline "Dismounting ISO $file..."
- Dismount-ISO $downloadFile
- Write-Host "Done"
- }
-}
-
-if ($StrongNameHijack)
-{
- Write-Host -NoNewline "Disabling StrongName for Windows SDK..."
-
- foreach($key in $PublicKeyTokens)
- {
- Disable-StrongName $key
- }
-
- Write-Host "Done"
-}
\ No newline at end of file