diff --git a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 index b3453926..f979659d 100644 --- a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 +++ b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 @@ -13,8 +13,7 @@ Export-ModuleMember -Function @( 'Add-MachinePathItem' 'Get-SystemVariable' 'Set-SystemVariable' - 'Install-MSI' - 'Install-EXE' + 'Install-Binary' 'Get-ToolcachePackages' 'Get-ToolsByName' 'Add-ContentToMarkdown' diff --git a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 index 13f2fbf9..ee528780 100644 --- a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 +++ b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 @@ -1,163 +1,151 @@ -function Install-MSI +function Install-Binary { - Param - ( - [String]$MsiUrl, - [String]$MsiName, - [int]$retries = 5 + <# + .SYNOPSIS + A helper function to install executables. + + .DESCRIPTION + Download and install .exe or .msi binaries from specified URL. + + .PARAMETER Url + The URL from which the binary will be downloaded. Required parameter. + + .PARAMETER Name + The Name with which binary will be downloaded. Required parameter. + + .PARAMETER ArgumentList + The list of arguments that will be passed to the installer. Required for .exe binaries. + + .EXAMPLE + Install-Binary -Url "https://go.microsoft.com/fwlink/p/?linkid=2083338" -Name "winsdksetup.exe" -ArgumentList ("/features", "+", "/quiet") + #> + + Param ( + [Parameter(Mandatory)] + [String] $Url, + [Parameter(Mandatory)] + [String] $Name, + [String[]] $ArgumentList ) - $exitCode = -1 + Write-Host "Downloading $Name..." + $filePath = Start-DownloadWithRetry -Url $Url -Name $Name + + # MSI binaries should be installed via msiexec.exe + $fileExtension = ([System.IO.Path]::GetExtension($Name)).Replace(".", "") + if ($fileExtension -eq "msi") + { + $ArgumentList = ('/i', $filePath, '/QN', '/norestart') + $filePath = "msiexec.exe" + } try { - Write-Host "Downloading $MsiName..." - $FilePath = "${env:Temp}\$MsiName" + Write-Host "Starting Install $Name..." + $process = Start-Process -FilePath $filePath -ArgumentList $ArgumentList -Wait -PassThru - Invoke-WebRequest -Uri $MsiUrl -OutFile $FilePath - - $Arguments = ('/i', $FilePath, '/QN', '/norestart' ) - - Write-Host "Starting Install $MsiName..." - $process = Start-Process -FilePath msiexec.exe -ArgumentList $Arguments -Wait -PassThru $exitCode = $process.ExitCode - if ($exitCode -eq 0 -or $exitCode -eq 3010) { - Write-Host -Object 'Installation successful' - return $exitCode + Write-Host "Installation successful" } else { - Write-Host -Object "Non zero exit code returned by the installation process : $exitCode." + Write-Host "Non zero exit code returned by the installation process: $exitCode" exit $exitCode } } catch { - Write-Host -Object "Failed to install the MSI $MsiName" - Write-Host -Object $_.Exception.Message - exit -1 - } -} - - -function Install-EXE -{ - Param - ( - [String]$Url, - [String]$Name, - [String[]]$ArgumentList - ) - - $exitCode = -1 - - try - { - Write-Host "Downloading $Name..." - $FilePath = "${env:Temp}\$Name" - - Invoke-WebRequest -Uri $Url -OutFile $FilePath - - Write-Host "Starting Install $Name..." - $process = Start-Process -FilePath $FilePath -ArgumentList $ArgumentList -Wait -PassThru - $exitCode = $process.ExitCode - - if ($exitCode -eq 0 -or $exitCode -eq 3010) - { - Write-Host -Object 'Installation successful' - return $exitCode - } - else - { - Write-Host -Object "Non zero exit code returned by the installation process : $exitCode." - return $exitCode - } - } - catch - { - Write-Host -Object "Failed to install the Executable $Name" - Write-Host -Object $_.Exception.Message - return -1 + Write-Host "Failed to install the $fileExtension ${Name}: $($_.Exception.Message)" + exit 1 } } function Stop-SvcWithErrHandling -<# -.DESCRIPTION -Function for stopping the Windows Service with error handling - -.AUTHOR -Andrey Mishechkin v-andmis@microsoft.com - -.PARAMETER -ServiceName -The name of stopping service - -.PARAMETER -StopOnError -Switch for stopping the script and exit from PowerShell if one service is absent -#> { + <# + .DESCRIPTION + Function for stopping the Windows Service with error handling + + .PARAMETER ServiceName + The name of stopping service + + .PARAMETER StopOnError + Switch for stopping the script and exit from PowerShell if one service is absent + #> param ( - [Parameter(Mandatory, ValueFromPipeLine = $true)] [string] $ServiceName, - [Parameter()] [switch] $StopOnError + [Parameter(Mandatory, ValueFromPipeLine = $true)] + [string] $ServiceName, + [switch] $StopOnError ) - Process { - $Service = Get-Service $ServiceName -ErrorAction SilentlyContinue - if (-not $Service) { - Write-Warning "[!] Service [$ServiceName] is not found"; - if ($StopOnError) { - exit 1; + Process + { + $service = Get-Service $ServiceName -ErrorAction SilentlyContinue + if (-not $service) + { + Write-Warning "[!] Service [$ServiceName] is not found" + if ($StopOnError) + { + exit 1 } + } - else { - Write-Host "Try to stop service [$ServiceName]"; - try { - Stop-Service -Name $ServiceName -Force; - $Service.WaitForStatus("Stopped", "00:01:00"); - Write-Host "Service [$ServiceName] has been stopped successfuly"; + else + { + Write-Host "Try to stop service [$ServiceName]" + try + { + Stop-Service -Name $ServiceName -Force + $service.WaitForStatus("Stopped", "00:01:00") + Write-Host "Service [$ServiceName] has been stopped successfuly" } - catch { + catch + { Write-Error "[!] Failed to stop service [$ServiceName] with error:" - $_ | Out-String | Write-Error; + $_ | Out-String | Write-Error } } } } function Set-SvcWithErrHandling -<# -.DESCRIPTION -Function for setting the Windows Service parameter with error handling - -.AUTHOR -Andrey Mishechkin v-andmis@microsoft.com - -.PARAMETER -ServiceName -The name of stopping service - -.PARAMETER -Arguments -Hashtable for service arguments -#> { + <# + .DESCRIPTION + Function for setting the Windows Service parameter with error handling + + .PARAMETER ServiceName + The name of stopping service + + .PARAMETER Arguments + Hashtable for service arguments + #> param ( - [Parameter(Mandatory, ValueFromPipeLine = $true)] [string] $ServiceName, - [Parameter(Mandatory)] [hashtable] $Arguments + [Parameter(Mandatory, ValueFromPipeLine = $true)] + [string] $ServiceName, + [Parameter(Mandatory)] + [hashtable] $Arguments ) - Process { - $Service = Get-Service $ServiceName -ErrorAction SilentlyContinue - if (-not $Service) { - Write-Warning "[!] Service [$ServiceName] is not found"; + Process + { + $service = Get-Service $ServiceName -ErrorAction SilentlyContinue + if (-not $service) + { + Write-Warning "[!] Service [$ServiceName] is not found" + } + + try + { + Set-Service $serviceName @Arguments } - try { - Set-Service $ServiceName @Arguments; - } - catch { + catch + { Write-Error "[!] Failed to set service [$ServiceName] arguments with error:" - $_ | Out-String | Write-Error; + $_ | Out-String | Write-Error } } } @@ -173,36 +161,36 @@ function Start-DownloadWithRetry [int] $Retries = 20 ) - $FilePath = Join-Path -Path $DownloadPath -ChildPath $Name + $filePath = Join-Path -Path $DownloadPath -ChildPath $Name + #Default retry logic for the package. - while ($retries -gt 0) + while ($Retries -gt 0) { try { - Write-Host "Downloading package from: $Url to path $FilePath ." - (New-Object System.Net.WebClient).DownloadFile($Url, $FilePath) + Write-Host "Downloading package from: $Url to path $filePath ." + (New-Object System.Net.WebClient).DownloadFile($Url, $filePath) break } catch { Write-Host "There is an error during package downloading:`n $_" - $retries-- + $Retries-- - if ($retries -eq 0) + if ($Retries -eq 0) { Write-Host "File can't be downloaded. Please try later or check that file exists by url: $Url" exit 1 } - Write-Host "Waiting 30 seconds before retrying. Retries left: $retries" + Write-Host "Waiting 30 seconds before retrying. Retries left: $Retries" Start-Sleep -Seconds 30 } } - return $FilePath + return $filePath } - function Install-VsixExtension { Param @@ -217,12 +205,12 @@ function Install-VsixExtension [switch] $InstallOnly ) - if (!$InstallOnly) - { - $FilePath = Start-DownloadWithRetry -Url $Url -Name $Name - } + if (-not $InstallOnly) + { + $FilePath = Start-DownloadWithRetry -Url $Url -Name $Name + } - $ArgumentList = ('/quiet', "`"$FilePath`"") + $argumentList = ('/quiet', "`"$FilePath`"") Write-Host "Starting Install $Name..." try @@ -230,7 +218,7 @@ function Install-VsixExtension #There are 2 types of packages at the moment - exe and vsix if ($Name -match "vsix") { - $process = Start-Process -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\$VSversion\Enterprise\Common7\IDE\VSIXInstaller.exe" -ArgumentList $ArgumentList -Wait -PassThru + $process = Start-Process -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\$VSversion\Enterprise\Common7\IDE\VSIXInstaller.exe" -ArgumentList $argumentList -Wait -PassThru } else { @@ -257,20 +245,20 @@ function Install-VsixExtension } #Cleanup downloaded installation files - if (!$InstallOnly) - { - Remove-Item -Force -Confirm:$false $FilePath - } + if (-not $InstallOnly) + { + Remove-Item -Force -Confirm:$false $FilePath + } } function Get-VSExtensionVersion { param ( - [string] [Parameter(Mandatory=$true)] $packageName + [Parameter(Mandatory=$true)] + [string] $packageName ) $instanceFolders = Get-ChildItem -Path "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances" - if ($instanceFolders -is [array]) { Write-Host "More than one instance installed" @@ -281,7 +269,7 @@ function Get-VSExtensionVersion $state = $stateContent | ConvertFrom-Json $packageVersion = ($state.packages | Where-Object { $_.id -eq $packageName }).version - if (!$packageVersion) + if (-not $packageVersion) { Write-Host "installed package $packageName for Visual Studio 2019 was not found" exit 1 @@ -290,7 +278,6 @@ function Get-VSExtensionVersion return $packageVersion } - function Get-ToolcachePackages { $toolcachePath = Join-Path $env:ROOT_FOLDER "toolcache.json" Get-Content -Raw $toolcachePath | ConvertFrom-Json diff --git a/images/win/scripts/Installers/Install-AzureCosmosDbEmulator.ps1 b/images/win/scripts/Installers/Install-AzureCosmosDbEmulator.ps1 index c94e6485..b1614932 100644 --- a/images/win/scripts/Installers/Install-AzureCosmosDbEmulator.ps1 +++ b/images/win/scripts/Installers/Install-AzureCosmosDbEmulator.ps1 @@ -5,4 +5,7 @@ Import-Module -Name ImageHelpers -Force -Install-MSI -MsiUrl "https://aka.ms/cosmosdb-emulator" -MsiName "AzureCosmosDBEmulator.msi" +$InstallerName = "AzureCosmosDBEmulator.msi" +$InstallerUrl = "https://aka.ms/cosmosdb-emulator" + +Install-Binary -Url $InstallerUrl -Name $InstallerName \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Chrome.ps1 b/images/win/scripts/Installers/Install-Chrome.ps1 index 44b58abb..c94641f1 100644 --- a/images/win/scripts/Installers/Install-Chrome.ps1 +++ b/images/win/scripts/Installers/Install-Chrome.ps1 @@ -6,8 +6,8 @@ Import-Module -Name ImageHelpers -Force; $ChromeInstallerFile = "chrome_installer.exe"; -$ChromeInstallerUri = "https://dl.google.com/chrome/install/375.126/${ChromeInstallerFile}"; -Install-Exe -Url $ChromeInstallerUri -Name $ChromeInstallerFile -ArgumentList ("/silent", "/install") +$ChromeInstallerUrl = "https://dl.google.com/chrome/install/375.126/${ChromeInstallerFile}"; +Install-Binary -Url $ChromeInstallerUrl -Name $ChromeInstallerFile -ArgumentList ("/silent", "/install") Write-Host "Adding the firewall rule for Google update blocking"; New-NetFirewallRule -DisplayName "BlockGoogleUpdate" -Direction Outbound -Action Block -Program "C:\Program Files (x86)\Google\Update\GoogleUpdate.exe"; diff --git a/images/win/scripts/Installers/Install-DACFx.ps1 b/images/win/scripts/Installers/Install-DACFx.ps1 index 7060aa25..aa3deff7 100644 --- a/images/win/scripts/Installers/Install-DACFx.ps1 +++ b/images/win/scripts/Installers/Install-DACFx.ps1 @@ -5,6 +5,7 @@ Import-Module -Name ImageHelpers -Force -$exitcode = Install-MSI -MsiUrl "https://download.microsoft.com/download/f/1/9/f19eaee6-0728-4a0b-9755-9808acc8af0b/EN/x64/DacFramework.msi" -MsiName "DacFramework.msi" +$InstallerName = "DacFramework.msi" +$InstallerUrl = "https://download.microsoft.com/download/f/1/9/f19eaee6-0728-4a0b-9755-9808acc8af0b/EN/x64/${InstallerName}" -exit $exitcode +Install-Binary -Url $InstallerUrl -Name $InstallerName \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Firefox.ps1 b/images/win/scripts/Installers/Install-Firefox.ps1 index 6f1dc218..2f919baa 100644 --- a/images/win/scripts/Installers/Install-Firefox.ps1 +++ b/images/win/scripts/Installers/Install-Firefox.ps1 @@ -14,7 +14,7 @@ Write-Host "Firefox latest version: $latestVersion" # url for latest version of firefox $urlLatestVersion = "https://download.mozilla.org/?product=firefox-${latestVersion}&os=win64&lang=en-US" -Install-EXE -Url $urlLatestVersion -Name "Firefox Setup $latestVersion.exe" -ArgumentList ("/silent", "/install") +Install-Binary -Url $urlLatestVersion -Name "Firefox Setup $latestVersion.exe" -ArgumentList ("/silent", "/install") # Disable autoupdate $firefoxDirectoryPath = Join-Path $env:ProgramFiles "Mozilla Firefox" diff --git a/images/win/scripts/Installers/Install-Git.ps1 b/images/win/scripts/Installers/Install-Git.ps1 index 5270675a..c1ec4360 100644 --- a/images/win/scripts/Installers/Install-Git.ps1 +++ b/images/win/scripts/Installers/Install-Git.ps1 @@ -19,18 +19,18 @@ $gitVersion = getSimpleValue -url "https://gitforwindows.org/latest-version.txt" $installerFile = "Git-$gitVersion-64-bit.exe"; $downloadUrl = "https://github.com/git-for-windows/git/releases/download/$gitTag/$installerFile"; -Install-Exe -Url $downloadUrl ` - -Name $installerFile ` - -ArgumentList ( - "/VERYSILENT", ` - "/NORESTART", ` - "/NOCANCEL", ` - "/SP-", ` - "/CLOSEAPPLICATIONS", ` - "/RESTARTAPPLICATIONS", ` - "/o:PathOption=CmdTools", ` - "/o:BashTerminalOption=ConHost", ` - "/COMPONENTS=gitlfs") +Install-Binary -Url $downloadUrl ` + -Name $installerFile ` + -ArgumentList ( + "/VERYSILENT", ` + "/NORESTART", ` + "/NOCANCEL", ` + "/SP-", ` + "/CLOSEAPPLICATIONS", ` + "/RESTARTAPPLICATIONS", ` + "/o:PathOption=CmdTools", ` + "/o:BashTerminalOption=ConHost", ` + "/COMPONENTS=gitlfs") Choco-Install -PackageName hub diff --git a/images/win/scripts/Installers/Install-Miniconda.ps1 b/images/win/scripts/Installers/Install-Miniconda.ps1 index 55e9f483..7c32f53d 100644 --- a/images/win/scripts/Installers/Install-Miniconda.ps1 +++ b/images/win/scripts/Installers/Install-Miniconda.ps1 @@ -5,12 +5,14 @@ Import-Module -Name ImageHelpers -Force +$CondaDestination = "C:\Miniconda" + # Lock to Miniconda 4.6 until we do the work to run `conda init` for the vsts user # Then we can go back to installing the latest Miniconda # $url = "https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe" -$url = "https://repo.continuum.io/miniconda/Miniconda3-4.6.14-Windows-x86_64.exe" -$name = $Url.Split('/')[-1] -$destination = "C:\Miniconda" +$InstallerName = "Miniconda3-4.6.14-Windows-x86_64.exe" +$InstallerUrl = "https://repo.continuum.io/miniconda/${InstallerName}" +$ArgumentList = ("/S", "/AddToPath=0", "/RegisterPython=0", "/D=$CondaDestination") -Install-EXE -Url $url -Name $name -ArgumentList "/S /AddToPath=0 /RegisterPython=0 /D=$destination" -Set-SystemVariable -SystemVariable "CONDA" -Value $destination +Install-Binary -Url $InstallerUrl -Name $InstallerName -ArgumentList $ArgumentList +Set-SystemVariable -SystemVariable "CONDA" -Value $CondaDestination diff --git a/images/win/scripts/Installers/Install-MysqlCli.ps1 b/images/win/scripts/Installers/Install-MysqlCli.ps1 index 76930d6e..348657d7 100644 --- a/images/win/scripts/Installers/Install-MysqlCli.ps1 +++ b/images/win/scripts/Installers/Install-MysqlCli.ps1 @@ -9,31 +9,23 @@ $uri = 'https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-winx64.zip' $mysqlPath = 'C:\mysql-5.7.21-winx64\bin' # Installing visual c++ redistibutable package. -$InstallerURI = 'https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe' -$InstallerName = 'vcredist_x64.exe' -$ArgumentList = ('/install', '/quiet', '/norestart' ) +$InstallerName = "vcredist_x64.exe" +$InstallerURI = "https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/${InstallerName}" +$ArgumentList = ("/install", "/quiet", "/norestart") -$exitCode = Install-EXE -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList -if ($exitCode -eq 0 -or $exitCode -eq 3010) -{ - # MySQL disabled TLS 1.0 support on or about Jul-14-2018. Need to make sure TLS 1.2 is enabled. - [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor "Tls12" +Install-Binary -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList - # Get the latest mysql command line tools . - Invoke-WebRequest -UseBasicParsing -Uri $uri -OutFile mysql.zip +# MySQL disabled TLS 1.0 support on or about Jul-14-2018. Need to make sure TLS 1.2 is enabled. +[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor "Tls12" - # Expand the zip - Expand-Archive -Path mysql.zip -DestinationPath "C:\" -Force +# Get the latest mysql command line tools . +Invoke-WebRequest -UseBasicParsing -Uri $uri -OutFile mysql.zip - # Deleting zip folder - Remove-Item -Recurse -Force mysql.zip +# Expand the zip +Expand-Archive -Path mysql.zip -DestinationPath "C:\" -Force - # Adding mysql in system environment path - Add-MachinePathItem $mysqlPath +# Deleting zip folder +Remove-Item -Recurse -Force mysql.zip - return 0; -} -else -{ - return $exitCode; -} +# Adding mysql in system environment path +Add-MachinePathItem $mysqlPath \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-NET472.ps1 b/images/win/scripts/Installers/Install-NET472.ps1 index 3cdb1fa1..e558c5c5 100644 --- a/images/win/scripts/Installers/Install-NET472.ps1 +++ b/images/win/scripts/Installers/Install-NET472.ps1 @@ -6,8 +6,8 @@ Import-Module -Name ImageHelpers -Force # .NET 4.7.2 Dev pack -$InstallerURI = "https://download.microsoft.com/download/3/B/F/3BFB9C35-405D-45DF-BDAF-0EB57D047888/NDP472-DevPack-ENU.exe" $InstallerName = "NDP472-DevPack-ENU.exe" +$InstallerUrl = "https://download.microsoft.com/download/3/B/F/3BFB9C35-405D-45DF-BDAF-0EB57D047888/${InstallerName}" $ArgumentList = ('Setup', '/passive', '/norestart' ) -Install-EXE -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList +Install-Binary -Url $InstallerUrl -Name $InstallerName -ArgumentList $ArgumentList diff --git a/images/win/scripts/Installers/Install-NET48.ps1 b/images/win/scripts/Installers/Install-NET48.ps1 index 2603ab05..ab746ca0 100644 --- a/images/win/scripts/Installers/Install-NET48.ps1 +++ b/images/win/scripts/Installers/Install-NET48.ps1 @@ -6,8 +6,8 @@ Import-Module -Name ImageHelpers -Force # .NET 4.8 Dev pack -$InstallerURI = "https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0307177e14752e359fde5423ab583e43/ndp48-devpack-enu.exe" -$InstallerName = "NDP48-DevPack-ENU.exe" -$ArgumentList = ('Setup', '/passive', '/norestart' ) +$InstallerName = "ndp48-devpack-enu.exe" +$InstallerUrl = "https://download.visualstudio.microsoft.com/download/pr/014120d7-d689-4305-befd-3cb711108212/0307177e14752e359fde5423ab583e43/${InstallerName}" +$ArgumentList = ("Setup", "/passive", "/norestart") -Install-EXE -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList +Install-Binary -Url $InstallerUrl -Name $InstallerName -ArgumentList $ArgumentList diff --git a/images/win/scripts/Installers/Install-WDK.ps1 b/images/win/scripts/Installers/Install-WDK.ps1 index 9df64d91..557152cf 100644 --- a/images/win/scripts/Installers/Install-WDK.ps1 +++ b/images/win/scripts/Installers/Install-WDK.ps1 @@ -7,7 +7,7 @@ Import-Module -Name ImageHelpers -Force -if(Test-IsWin19) +if (Test-IsWin19) { $winSdkUrl = "https://go.microsoft.com/fwlink/p/?linkid=2083338" $wdkUrl = "https://go.microsoft.com/fwlink/?linkid=2085767" @@ -22,24 +22,13 @@ else $VSver = "2017" } +$argumentList = ("/features", "+", "/quiet") # `winsdksetup.exe /features + /quiet` installs all features without showing the GUI -$sdkExitCode = Install-EXE -Url $winSdkUrl -Name "winsdksetup.exe" -ArgumentList ("/features", "+", "/quiet") - -if ($sdkExitCode -ne 0) -{ - Write-Host "Failed to install the Windows SDK." - exit $sdkExitCode -} +Install-Binary -Url $winSdkUrl -Name "winsdksetup.exe" -ArgumentList $argumentList # `wdksetup.exe /features + /quiet` installs all features without showing the GUI -$wdkExitCode = Install-EXE -Url $wdkUrl -Name "wdksetup.exe" -ArgumentList ("/features", "+", "/quiet") - -if ($wdkExitCode -ne 0) -{ - Write-Host "Failed to install the Windows Driver Kit." - exit $wdkExitCode -} +Install-Binary -Url $wdkUrl -Name "wdksetup.exe" -ArgumentList $argumentList # Need to install the VSIX to get the build targets when running VSBuild Install-VsixExtension -FilePath $FilePath -Name "WDK.vsix" -VSversion $VSver -InstallOnly diff --git a/images/win/scripts/Installers/Install-WinAppDriver.ps1 b/images/win/scripts/Installers/Install-WinAppDriver.ps1 index 106b3332..92f95750 100644 --- a/images/win/scripts/Installers/Install-WinAppDriver.ps1 +++ b/images/win/scripts/Installers/Install-WinAppDriver.ps1 @@ -4,5 +4,9 @@ #################################################################################### Import-Module -Name ImageHelpers -Force + +$InstallerName = "WindowsApplicationDriver.msi" +$InstallerUrl = "https://github.com/Microsoft/WinAppDriver/releases/download/v1.1/${InstallerName}" + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -Install-MSI -MsiUrl "https://github.com/Microsoft/WinAppDriver/releases/download/v1.1/WindowsApplicationDriver.msi" -MsiName "WindowsApplicationDriver.msi" +Install-Binary -Url $InstallerUrl -Name $InstallerName diff --git a/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 b/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 index 132734c8..9d22e86d 100644 --- a/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 +++ b/images/win/scripts/Installers/Windows2016/Install-SSDT.ps1 @@ -7,18 +7,13 @@ Import-Module -Name ImageHelpers -Force #SSDT for Visual Studio 2017 #The link down below points to the latest version of SSDT for Visual Studio 2017 -$InstallerURI = 'https://go.microsoft.com/fwlink/?linkid=2124518' -$InstallerName = 'SSDT-Setup-ENU.exe' +$InstallerName = "SSDT-Setup-ENU.exe" +$InstallerUrl = "https://go.microsoft.com/fwlink/?linkid=2124518" $logFilePath = "$env:TEMP\ssdtlog.txt" -$ArgumentList = ('/install', 'INSTALLALL', '/passive', '/norestart', "/log `"$logFilePath`"") +$ArgumentList = ("/install", "INSTALLALL", "/passive", "/norestart", "/log `"$logFilePath`"") -$exitCode = Install-EXE -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList +Install-Binary -Url $InstallerUrl -Name $InstallerName -ArgumentList $ArgumentList -if($exitCode -ne 0 -and $exitCode -ne 3010) -{ - Write-Host "******** SSDT SETUP LOG START ********" - Write-Host $(Get-Content $logFilePath | Out-String) - Write-Host "******** SSDT SETUP LOG END ********" -} - -exit $exitCode +Write-Host "******** SSDT SETUP LOG START ********" +Write-Host $(Get-Content $logFilePath | Out-String) +Write-Host "******** SSDT SETUP LOG END ********" \ No newline at end of file diff --git a/images/win/scripts/Installers/Windows2016/Install-Win81SDK.ps1 b/images/win/scripts/Installers/Windows2016/Install-Win81SDK.ps1 index 992f6a9e..d89f468f 100644 --- a/images/win/scripts/Installers/Windows2016/Install-Win81SDK.ps1 +++ b/images/win/scripts/Installers/Windows2016/Install-Win81SDK.ps1 @@ -5,10 +5,8 @@ Import-Module -Name ImageHelpers -Force -$InstallerURI = 'http://download.microsoft.com/download/B/0/C/B0C80BA3-8AD6-4958-810B-6882485230B5/standalonesdk/sdksetup.exe' -$InstallerName = 'sdksetup.exe' -$ArgumentList = ('/quiet', '/norestart') +$InstallerName = "sdksetup.exe" +$InstallerUrl = "http://download.microsoft.com/download/B/0/C/B0C80BA3-8AD6-4958-810B-6882485230B5/standalonesdk/${InstallerName}" +$ArgumentList = ("/quiet", "/norestart") -$exitCode = Install-EXE -Url $InstallerURI -Name $InstallerName -ArgumentList $ArgumentList - -exit $exitCode +Install-Binary -Url $InstallerUrl -Name $InstallerName -ArgumentList $ArgumentList