2016-09-19 11:50:08 +08:00
[ CmdletBinding ( ) ]
param (
2018-06-13 08:12:33 +08:00
$badParam ,
2018-06-14 02:21:12 +08:00
[ Parameter ( Mandatory = $False ) ] [ switch ] $win64 = $false ,
2018-06-09 04:31:57 +08:00
[ Parameter ( Mandatory = $False ) ] [ string ] $withVSPath = " " ,
2021-02-05 02:15:44 +08:00
[ Parameter ( Mandatory = $False ) ] [ string ] $withWinSDK = " " ,
[ Parameter ( Mandatory = $False ) ] [ switch ] $disableMetrics = $false
2016-09-19 11:50:08 +08:00
)
2018-03-01 10:44:57 +08:00
Set-StrictMode -Version Latest
2018-06-13 08:12:33 +08:00
# Powershell2-compatible way of forcing named-parameters
if ( $badParam )
{
if ( $disableMetrics -and $badParam -eq " 1 " )
{
2021-02-05 02:15:44 +08:00
Write-Warning " 'disableMetrics 1' is deprecated, please change to 'disableMetrics' (without '1'). "
2018-06-13 08:12:33 +08:00
}
else
{
2021-02-05 02:15:44 +08:00
throw " Only named parameters are allowed. "
2018-06-13 08:12:33 +08:00
}
}
2021-02-05 02:15:44 +08:00
if ( $win64 )
2018-05-20 08:54:50 +08:00
{
2021-02-05 02:15:44 +08:00
Write-Warning " -win64 no longer has any effect; ignored. "
2018-05-20 08:54:50 +08:00
}
2021-02-05 02:15:44 +08:00
if ( -Not [ string ] :: IsNullOrWhiteSpace ( $withVSPath ) )
2018-05-20 08:54:50 +08:00
{
2021-02-05 02:15:44 +08:00
Write-Warning " -withVSPath no longer has any effect; ignored. "
}
2018-05-20 08:54:50 +08:00
2021-02-05 02:15:44 +08:00
if ( -Not [ string ] :: IsNullOrWhiteSpace ( $withWinSDK ) )
{
Write-Warning " -withWinSDK no longer has any effect; ignored. "
2018-05-20 08:54:50 +08:00
}
2018-02-23 11:56:08 +08:00
2021-02-05 02:15:44 +08:00
$scriptsDir = split-path -parent $script:MyInvocation . MyCommand . Definition
2018-05-20 10:38:45 +08:00
$vcpkgRootDir = $scriptsDir
2018-05-05 19:23:19 +08:00
while ( ! ( $vcpkgRootDir -eq " " ) -and ! ( Test-Path " $vcpkgRootDir \.vcpkg-root " ) )
2017-08-26 14:25:41 +08:00
{
2018-05-05 19:23:19 +08:00
Write-Verbose " Examining $vcpkgRootDir for .vcpkg-root "
$vcpkgRootDir = Split-path $vcpkgRootDir -Parent
2017-08-26 14:25:41 +08:00
}
2018-05-20 08:50:51 +08:00
2021-02-05 02:15:44 +08:00
Write-Verbose " Examining $vcpkgRootDir for .vcpkg-root - Found "
2018-05-05 19:23:19 +08:00
2023-07-26 11:35:26 +08:00
# Read the vcpkg-tool config file to determine what release to download
$Config = ConvertFrom-StringData ( Get-Content " $PSScriptRoot \vcpkg-tool-metadata.txt " -Raw )
$versionDate = $Config . VCPKG_TOOL_RELEASE_TAG
2022-01-22 03:10:58 +08:00
if ( $env:PROCESSOR_ARCHITECTURE -eq 'ARM64' -or $env:PROCESSOR_IDENTIFIER -match " ARMv[8,9] \(64-bit\) " ) {
2022-11-12 04:53:43 +08:00
& " $scriptsDir /tls12-download-arm64.exe " github . com " /microsoft/vcpkg-tool/releases/download/ $versionDate /vcpkg-arm64.exe " " $vcpkgRootDir \vcpkg.exe "
2021-10-30 13:39:14 +08:00
} else {
& " $scriptsDir /tls12-download.exe " github . com " /microsoft/vcpkg-tool/releases/download/ $versionDate /vcpkg.exe " " $vcpkgRootDir \vcpkg.exe "
}
2021-02-05 02:15:44 +08:00
Write-Host " "
2016-09-19 11:50:08 +08:00
2021-02-05 02:15:44 +08:00
if ( $LASTEXITCODE -ne 0 )
2017-08-26 14:25:41 +08:00
{
2021-02-05 02:15:44 +08:00
Write-Error " Downloading vcpkg.exe failed. Please check your internet connection, or consider downloading a recent vcpkg.exe from https://github.com/microsoft/vcpkg-tool with a browser. "
2020-07-02 01:53:10 +08:00
throw
2016-09-19 11:50:08 +08:00
}
2020-07-02 01:53:10 +08:00
2023-08-25 07:20:42 +08:00
& " $vcpkgRootDir \vcpkg.exe " version - -disable -metrics
2023-07-26 11:35:26 +08:00
2021-01-14 06:06:06 +08:00
if ( $disableMetrics )
{
Set-Content -Value " " -Path " $vcpkgRootDir \vcpkg.disable-metrics " -Force
}
elseif ( -Not ( Test-Path " $vcpkgRootDir \vcpkg.disable-metrics " ) )
2020-02-14 10:12:12 +08:00
{
2021-01-14 06:06:06 +08:00
# Note that we intentionally leave any existing vcpkg.disable-metrics; once a user has
# opted out they should stay opted out.
2020-02-14 10:12:12 +08:00
Write-Host @"
2019-11-15 05:12:36 +08:00
Telemetry
- - - - - - - - -
2020-05-30 05:09:03 +08:00
vcpkg collects usage data in order to help us improve your experience .
The data collected by Microsoft is anonymous .
You can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics ,
passing - -disable -metrics to vcpkg on the command line ,
or by setting the VCPKG_DISABLE_METRICS environment variable .
2019-11-15 05:12:36 +08:00
2020-05-30 05:09:03 +08:00
Read more about vcpkg telemetry at docs / about / privacy . md
2019-11-15 05:12:36 +08:00
" @
2020-02-14 10:12:12 +08:00
}