diff --git a/images/win/Windows2016-Azure.json b/images/win/Windows2016-Azure.json index 97a06702f..8732a9fb1 100644 --- a/images/win/Windows2016-Azure.json +++ b/images/win/Windows2016-Azure.json @@ -175,10 +175,6 @@ "{{ template_dir }}/scripts/Installers/Windows2016/Update-DockerImages.ps1" ] }, - { - "type": "powershell", - "inline": ["choco install vcredist140 -y"] - }, { "type": "powershell", "valid_exit_codes": [ diff --git a/images/win/scripts/ImageHelpers/ChocoHelpers.ps1 b/images/win/scripts/ImageHelpers/ChocoHelpers.ps1 index f81ad0a1f..ee1f39128 100644 --- a/images/win/scripts/ImageHelpers/ChocoHelpers.ps1 +++ b/images/win/scripts/ImageHelpers/ChocoHelpers.ps1 @@ -1,33 +1,32 @@ -function Install-Choco { +function Choco-Install { [CmdletBinding()] param( [Parameter(Mandatory)] - [string]$install, - [int]$retries = 5 + [string] $PackageName, + [string[]] $ArgumentList, + [int] $RetryCount = 5 ) - begin { } process { - $condition = $false - $count = 0 - do { - Write-Output "running: powershell choco install $install -y" - powershell choco install $install -y + $count = 1 + while($true) + { + Write-Host "Running [#$count]: choco install $packageName -y $argumentList" + choco install $packageName -y @argumentList - $installed = powershell choco list -lo $install --all - $match = (($installed -match "^$install.*").Length -ne 0) - if ($match) { - Write-Output "package installed: $install" - $condition = $true + $pkg = choco list --localonly $packageName --exact --all --limitoutput + if ($pkg) { + Write-Host "Package installed: $pkg" + break } else { $count++ - if ($count -eq $retries) { - Write-Error "Could not install $install after $count attempts" + if ($count -ge $retryCount) { + Write-Host "Could not install $packageName after $count attempts" exit 1 } + Start-Sleep -Seconds 30 } - } while ($condition -eq $false) + } } - end { } } \ No newline at end of file diff --git a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 index 9e750b8db..b34539265 100644 --- a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 +++ b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 @@ -27,5 +27,5 @@ Export-ModuleMember -Function @( 'Get-WinVersion' 'Test-IsWin19' 'Test-IsWin16' - 'Install-Choco' + 'Choco-Install' ) diff --git a/images/win/scripts/Installers/Install-7zip.ps1 b/images/win/scripts/Installers/Install-7zip.ps1 index 4e86ad3c6..419c81782 100644 --- a/images/win/scripts/Installers/Install-7zip.ps1 +++ b/images/win/scripts/Installers/Install-7zip.ps1 @@ -3,4 +3,4 @@ ## Desc: Install 7zip ################################################################################ -choco install 7zip.install -y +Choco-Install -PackageName 7zip.install diff --git a/images/win/scripts/Installers/Install-AWS.ps1 b/images/win/scripts/Installers/Install-AWS.ps1 index 124f32d20..b5ad9a6d2 100644 --- a/images/win/scripts/Installers/Install-AWS.ps1 +++ b/images/win/scripts/Installers/Install-AWS.ps1 @@ -3,7 +3,7 @@ ## Desc: Install awscli ################################################################################ -choco install awscli -y +Choco-Install -PackageName awscli $env:PATH =$env:PATH + ";$Env:Programfiles\Amazon\AWSCLIV2" diff --git a/images/win/scripts/Installers/Install-AliyunCli.ps1 b/images/win/scripts/Installers/Install-AliyunCli.ps1 index 95b462b61..b46eb8a60 100644 --- a/images/win/scripts/Installers/Install-AliyunCli.ps1 +++ b/images/win/scripts/Installers/Install-AliyunCli.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Alibaba Cloud CLI ################################################################################ -choco install aliyun-cli -y \ No newline at end of file +Choco-Install -PackageName aliyun-cli \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-AzureCli.ps1 b/images/win/scripts/Installers/Install-AzureCli.ps1 index ca96558a5..4b5d7dae1 100644 --- a/images/win/scripts/Installers/Install-AzureCli.ps1 +++ b/images/win/scripts/Installers/Install-AzureCli.ps1 @@ -3,7 +3,7 @@ ## Desc: Install Azure CLI ################################################################################ -Install-Choco "azure-cli" +Choco-Install -PackageName azure-cli $AzureCliExtensionPath = Join-Path $Env:CommonProgramFiles 'AzureCliExtensionDirectory' New-Item -ItemType "directory" -Path $AzureCliExtensionPath diff --git a/images/win/scripts/Installers/Install-Bazel.ps1 b/images/win/scripts/Installers/Install-Bazel.ps1 index fb14a856b..fabbecd01 100644 --- a/images/win/scripts/Installers/Install-Bazel.ps1 +++ b/images/win/scripts/Installers/Install-Bazel.ps1 @@ -3,6 +3,6 @@ ## Desc: Install Bazel and Bazelisk (A user-friendly launcher for Bazel) ################################################################################ -choco install bazel -y +Choco-Install -PackageName bazel npm install -g @bazel/bazelisk \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Cmake.ps1 b/images/win/scripts/Installers/Install-Cmake.ps1 index b0ba514ee..37183d5e6 100644 --- a/images/win/scripts/Installers/Install-Cmake.ps1 +++ b/images/win/scripts/Installers/Install-Cmake.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Cmake ################################################################################ -choco install cmake.install -y --installargs 'ADD_CMAKE_TO_PATH=""System""' +Choco-Install -PackageName cmake.install -ArgumentList "--installargs",'ADD_CMAKE_TO_PATH=""System""' diff --git a/images/win/scripts/Installers/Install-Docker.ps1 b/images/win/scripts/Installers/Install-Docker.ps1 index ec4f0d895..35e988ada 100644 --- a/images/win/scripts/Installers/Install-Docker.ps1 +++ b/images/win/scripts/Installers/Install-Docker.ps1 @@ -13,8 +13,8 @@ Write-Host "Install-Package Docker" Install-Package -Name docker -ProviderName DockerMsftProvider -Force Start-Service docker -choco install docker-compose -y +Write-Host "Install-Package Docker-Compose" +Choco-Install -PackageName docker-compose -# Install helm Write-Host "Install Helm" -choco install kubernetes-helm \ No newline at end of file +Choco-Install -PackageName kubernetes-helm \ No newline at end of file diff --git a/images/win/scripts/Installers/Install-Edge.ps1 b/images/win/scripts/Installers/Install-Edge.ps1 index b84f0fc14..430e8bbb9 100644 --- a/images/win/scripts/Installers/Install-Edge.ps1 +++ b/images/win/scripts/Installers/Install-Edge.ps1 @@ -3,7 +3,7 @@ ## Desc: Install latest stable version of Microsoft Edge browser ################################################################################ -choco install microsoft-edge -y +Choco-Install -PackageName microsoft-edge # Install Microsoft Edge Web Driver Write-Host "Install Edge WebDriver" diff --git a/images/win/scripts/Installers/Install-Git.ps1 b/images/win/scripts/Installers/Install-Git.ps1 index 0466fcd1c..5270675af 100644 --- a/images/win/scripts/Installers/Install-Git.ps1 +++ b/images/win/scripts/Installers/Install-Git.ps1 @@ -32,7 +32,7 @@ Install-Exe -Url $downloadUrl ` "/o:BashTerminalOption=ConHost", ` "/COMPONENTS=gitlfs") -choco install hub +Choco-Install -PackageName hub # Disable GCM machine-wide [Environment]::SetEnvironmentVariable("GCM_INTERACTIVE", "Never", [System.EnvironmentVariableTarget]::Machine) diff --git a/images/win/scripts/Installers/Install-GitVersion.ps1 b/images/win/scripts/Installers/Install-GitVersion.ps1 index b97358e0c..1e27e49f9 100644 --- a/images/win/scripts/Installers/Install-GitVersion.ps1 +++ b/images/win/scripts/Installers/Install-GitVersion.ps1 @@ -3,4 +3,4 @@ ## Desc: Install GitVersion ################################################################################ -choco install gitversion.portable -y +Choco-Install -PackageName gitversion.portable diff --git a/images/win/scripts/Installers/Install-InnoSetup.ps1 b/images/win/scripts/Installers/Install-InnoSetup.ps1 index 8020120d1..17f26962e 100644 --- a/images/win/scripts/Installers/Install-InnoSetup.ps1 +++ b/images/win/scripts/Installers/Install-InnoSetup.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Inno Setup ################################################################################ -choco install innosetup -y +Choco-Install -PackageName innosetup diff --git a/images/win/scripts/Installers/Install-JavaTools.ps1 b/images/win/scripts/Installers/Install-JavaTools.ps1 index 68c0209fd..e88fc7453 100644 --- a/images/win/scripts/Installers/Install-JavaTools.ps1 +++ b/images/win/scripts/Installers/Install-JavaTools.ps1 @@ -61,9 +61,9 @@ setx JAVA_HOME_11_X64 $latestJava11Install /M # Install Java tools # Force chocolatey to ignore dependencies on Ant and Maven or else they will download the Oracle JDK -choco install ant -y -i -choco install maven -y -i --version=3.6.3 -choco install gradle -y +Choco-Install -PackageName ant -ArgumentList "-i" +Choco-Install -PackageName maven -ArgumentList "-i", "--version=3.6.3" +Choco-Install -PackageName gradle # Move maven variables to Machine. They may not be in the environment for this script so we need to read them from the registry. $userSid = (Get-WmiObject win32_useraccount -Filter "name = '$env:USERNAME' AND domain = '$env:USERDOMAIN'").SID diff --git a/images/win/scripts/Installers/Install-Jq.ps1 b/images/win/scripts/Installers/Install-Jq.ps1 index 1ccb42da8..5a383d797 100644 --- a/images/win/scripts/Installers/Install-Jq.ps1 +++ b/images/win/scripts/Installers/Install-Jq.ps1 @@ -3,4 +3,4 @@ ## Desc: Install jq ################################################################################ -choco install jq -y +Choco-Install -PackageName jq diff --git a/images/win/scripts/Installers/Install-Julia.ps1 b/images/win/scripts/Installers/Install-Julia.ps1 index f1f421168..6677b5d1d 100644 --- a/images/win/scripts/Installers/Install-Julia.ps1 +++ b/images/win/scripts/Installers/Install-Julia.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Julia ################################################################################ -choco install julia -y --ia "/DIR=C:\Julia" +Choco-Install -PackageName julia -ArgumentList "--ia","/DIR=C:\Julia" diff --git a/images/win/scripts/Installers/Install-KubernetesCli.ps1 b/images/win/scripts/Installers/Install-KubernetesCli.ps1 index 8c7350c0f..c6ad04bc7 100644 --- a/images/win/scripts/Installers/Install-KubernetesCli.ps1 +++ b/images/win/scripts/Installers/Install-KubernetesCli.ps1 @@ -3,4 +3,4 @@ ## Desc: Install KubernetesCli ################################################################################ -choco install kubernetes-cli -y +Choco-Install -PackageName kubernetes-cli diff --git a/images/win/scripts/Installers/Install-Mercurial.ps1 b/images/win/scripts/Installers/Install-Mercurial.ps1 index 65a5cdefa..da820d1b3 100644 --- a/images/win/scripts/Installers/Install-Mercurial.ps1 +++ b/images/win/scripts/Installers/Install-Mercurial.ps1 @@ -3,7 +3,7 @@ ## Desc: Install Mercurial ################################################################################ -choco install hg -y --version 5.0.0 +Choco-Install -PackageName hg -ArgumentList "--version", "5.0.0" $hgPath = "${env:ProgramFiles}\Mercurial\" Add-MachinePathItem $hgPath diff --git a/images/win/scripts/Installers/Install-MinGW.ps1 b/images/win/scripts/Installers/Install-MinGW.ps1 index c2aa0f52c..ac585b9d8 100644 --- a/images/win/scripts/Installers/Install-MinGW.ps1 +++ b/images/win/scripts/Installers/Install-MinGW.ps1 @@ -5,7 +5,7 @@ Import-Module -Name ImageHelpers -Force -Install-Choco "mingw" +Choco-Install -PackageName mingw # Make a copy of mingw32-make.exe to make.exe, which is a more discoverable name # and so the same command line can be used on Windows as on macOS and Linux diff --git a/images/win/scripts/Installers/Install-NSIS.ps1 b/images/win/scripts/Installers/Install-NSIS.ps1 index c8c5e370e..71ceb70d7 100644 --- a/images/win/scripts/Installers/Install-NSIS.ps1 +++ b/images/win/scripts/Installers/Install-NSIS.ps1 @@ -3,7 +3,7 @@ ## Desc: Install NSIS ################################################################################ -choco install nsis -y +Choco-Install -PackageName nsis $NsisPath = "${env:ProgramFiles(x86)}\NSIS\" Add-MachinePathItem $NsisPath diff --git a/images/win/scripts/Installers/Install-NodeLts.ps1 b/images/win/scripts/Installers/Install-NodeLts.ps1 index e1ec5f0fb..c1ee0579a 100644 --- a/images/win/scripts/Installers/Install-NodeLts.ps1 +++ b/images/win/scripts/Installers/Install-NodeLts.ps1 @@ -12,7 +12,7 @@ $CachePath = 'C:\npm\cache' New-Item -Path $PrefixPath -Force -ItemType Directory New-Item -Path $CachePath -Force -ItemType Directory -choco install nodejs-lts -y --force +Choco-Install -PackageName nodejs-lts -ArgumentList "--force" Add-MachinePathItem $PrefixPath $env:Path = Get-MachinePath diff --git a/images/win/scripts/Installers/Install-OpenSSL.ps1 b/images/win/scripts/Installers/Install-OpenSSL.ps1 index 5ff783398..4f43ad435 100644 --- a/images/win/scripts/Installers/Install-OpenSSL.ps1 +++ b/images/win/scripts/Installers/Install-OpenSSL.ps1 @@ -3,4 +3,4 @@ ## Desc: Install OpenSSL ################################################################################ -choco install openssl.light -y +Choco-Install -PackageName openssl.light diff --git a/images/win/scripts/Installers/Install-PHP.ps1 b/images/win/scripts/Installers/Install-PHP.ps1 index 72db2ee27..f4fc4f1d1 100644 --- a/images/win/scripts/Installers/Install-PHP.ps1 +++ b/images/win/scripts/Installers/Install-PHP.ps1 @@ -8,10 +8,10 @@ Import-Module -Name ImageHelpers # Install latest PHP in chocolatey $installDir = "c:\tools\php" -choco install php -y --force --params "/InstallDir:$installDir" +Choco-Install -PackageName php -ArgumentList "--force", "--params", "/InstallDir:$installDir" # Install latest Composer in chocolatey -choco install composer --ia "/DEV=$installDir /PHP=$installDir" +Choco-Install -PackageName composer -ArgumentList "--ia", "/DEV=$installDir /PHP=$installDir" # update path to extensions and enable curl and mbstring extensions, and enable php openssl extensions. ((Get-Content -path $installDir\php.ini -Raw) -replace ';extension=curl','extension=curl' -replace ';extension=mbstring','extension=mbstring' -replace ';extension_dir = "ext"','extension_dir = "ext"' -replace 'extension=";php_openssl.dll"','extension_dir = "php_openssl.dll"') | Set-Content -Path $installDir\php.ini diff --git a/images/win/scripts/Installers/Install-Packer.ps1 b/images/win/scripts/Installers/Install-Packer.ps1 index 4374175d1..6d74fbf77 100644 --- a/images/win/scripts/Installers/Install-Packer.ps1 +++ b/images/win/scripts/Installers/Install-Packer.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Packer ################################################################################ -choco install packer -y +Choco-Install -PackageName packer diff --git a/images/win/scripts/Installers/Install-Perl.ps1 b/images/win/scripts/Installers/Install-Perl.ps1 index 59b1e11a0..350e6c676 100644 --- a/images/win/scripts/Installers/Install-Perl.ps1 +++ b/images/win/scripts/Installers/Install-Perl.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Perl ################################################################################ -choco install strawberryperl -y +Choco-Install -PackageName strawberryperl diff --git a/images/win/scripts/Installers/Install-Sbt.ps1 b/images/win/scripts/Installers/Install-Sbt.ps1 index b96ed5ac8..bc0e95a20 100644 --- a/images/win/scripts/Installers/Install-Sbt.ps1 +++ b/images/win/scripts/Installers/Install-Sbt.ps1 @@ -8,7 +8,7 @@ Import-Module -Name ImageHelpers # Install the latest version of sbt. # See https://chocolatey.org/packages/sbt -choco install sbt -y +Choco-Install -PackageName sbt $env:SBT_HOME="${env:ProgramFiles(x86)}\sbt" diff --git a/images/win/scripts/Installers/Install-Svn.ps1 b/images/win/scripts/Installers/Install-Svn.ps1 index 45dd52319..315c4ef8a 100644 --- a/images/win/scripts/Installers/Install-Svn.ps1 +++ b/images/win/scripts/Installers/Install-Svn.ps1 @@ -3,4 +3,4 @@ ## Desc: Install Subversion ################################################################################ -choco install svn -y +Choco-Install -PackageName svn diff --git a/images/win/scripts/Installers/Install-VSWhere.ps1 b/images/win/scripts/Installers/Install-VSWhere.ps1 index d60986540..5c623c936 100644 --- a/images/win/scripts/Installers/Install-VSWhere.ps1 +++ b/images/win/scripts/Installers/Install-VSWhere.ps1 @@ -3,4 +3,4 @@ ## Desc: Install latest stable version of VSWhere ################################################################################ -choco install vswhere -y +Choco-Install -PackageName vswhere diff --git a/images/win/scripts/Installers/Install-Wix.ps1 b/images/win/scripts/Installers/Install-Wix.ps1 index 076be86c9..25469dab8 100644 --- a/images/win/scripts/Installers/Install-Wix.ps1 +++ b/images/win/scripts/Installers/Install-Wix.ps1 @@ -3,9 +3,9 @@ ## Desc: Install WIX. ################################################################################ -Import-Module -Name ImageHelpers -Force; +Import-Module -Name ImageHelpers -Force -choco install wixtoolset -y --force +Choco-Install -PackageName wixtoolset -ArgumentList "--force" if(Test-IsWin19) { diff --git a/images/win/scripts/Installers/Install-Zstd.ps1 b/images/win/scripts/Installers/Install-Zstd.ps1 index 098334ebe..2251143bc 100644 --- a/images/win/scripts/Installers/Install-Zstd.ps1 +++ b/images/win/scripts/Installers/Install-Zstd.ps1 @@ -3,4 +3,4 @@ ## Desc: Install zstd ################################################################################ -choco install zstandard -y +Choco-Install -PackageName zstandard diff --git a/images/win/scripts/Installers/Windows2016/Initialize-VM.ps1 b/images/win/scripts/Installers/Windows2016/Initialize-VM.ps1 index 6f7dd13e8..d8fa7a059 100644 --- a/images/win/scripts/Installers/Windows2016/Initialize-VM.ps1 +++ b/images/win/scripts/Installers/Windows2016/Initialize-VM.ps1 @@ -111,7 +111,10 @@ choco feature enable -n allowGlobalConfirmation Remove-Item -Path $env:ChocolateyInstall\bin\cpack.exe -Force # Install webpi -choco install webpicmd -y +Choco-Install -PackageName webpicmd + +# Install vcredist140 +Choco-Install -PackageName vcredist140 # Expand disk size of OS drive diff --git a/images/win/scripts/Installers/Windows2019/Initialize-VM.ps1 b/images/win/scripts/Installers/Windows2019/Initialize-VM.ps1 index 4f05935c9..92e153d73 100644 --- a/images/win/scripts/Installers/Windows2019/Initialize-VM.ps1 +++ b/images/win/scripts/Installers/Windows2019/Initialize-VM.ps1 @@ -109,7 +109,7 @@ choco feature enable -n allowGlobalConfirmation Remove-Item -Path $env:ChocolateyInstall\bin\cpack.exe -Force # Install webpi -choco install webpicmd -y +Choco-Install -PackageName webpicmd # Expand disk size of OS drive