Added choco
This commit is contained in:
parent
aa3e4fb9fc
commit
ae1674cb09
@ -13,4 +13,4 @@ steps:
|
|||||||
|
|
||||||
- name: install choco
|
- name: install choco
|
||||||
commands:
|
commands:
|
||||||
- '@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString(\'https://community.chocolatey.org/install.ps1\'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"'
|
- 'powershell choco-install.ps1'
|
698
choco-install.ps1
Normal file
698
choco-install.ps1
Normal file
@ -0,0 +1,698 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Downloads and installs Chocolatey on the local machine.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Retrieves the Chocolatey nupkg for the latest or a specified version, and
|
||||||
|
downloads and installs the application to the local machine.
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
=====================================================================
|
||||||
|
Copyright 2017 - 2020 Chocolatey Software, Inc, and the
|
||||||
|
original authors/contributors from ChocolateyGallery
|
||||||
|
Copyright 2011 - 2017 RealDimensions Software, LLC, and the
|
||||||
|
original authors/contributors from ChocolateyGallery
|
||||||
|
at https://github.com/chocolatey/chocolatey.org
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
=====================================================================
|
||||||
|
|
||||||
|
Environment Variables, specified as $env:NAME in PowerShell.exe and %NAME% in cmd.exe.
|
||||||
|
For explicit proxy, please set $env:chocolateyProxyLocation and optionally $env:chocolateyProxyUser and $env:chocolateyProxyPassword
|
||||||
|
For an explicit version of Chocolatey, please set $env:chocolateyVersion = 'versionnumber'
|
||||||
|
To target a different url for chocolatey.nupkg, please set $env:chocolateyDownloadUrl = 'full url to nupkg file'
|
||||||
|
NOTE: $env:chocolateyDownloadUrl does not work with $env:chocolateyVersion.
|
||||||
|
To use built-in compression instead of 7zip (requires additional download), please set $env:chocolateyUseWindowsCompression = 'true'
|
||||||
|
To bypass the use of any proxy, please set $env:chocolateyIgnoreProxy = 'true'
|
||||||
|
|
||||||
|
.LINK
|
||||||
|
For organizational deployments of Chocolatey, please see https://docs.chocolatey.org/en-us/guides/organizations/organizational-deployment-guide
|
||||||
|
|
||||||
|
#>
|
||||||
|
[CmdletBinding(DefaultParameterSetName = 'Default')]
|
||||||
|
param(
|
||||||
|
# The URL to download Chocolatey from. This defaults to the value of
|
||||||
|
# $env:chocolateyDownloadUrl, if it is set, and otherwise falls back to the
|
||||||
|
# official Chocolatey community repository to download the Chocolatey package.
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$ChocolateyDownloadUrl = $env:chocolateyDownloadUrl,
|
||||||
|
|
||||||
|
# Specifies a target version of Chocolatey to install. By default, the latest
|
||||||
|
# stable version is installed. This will use the value in
|
||||||
|
# $env:chocolateyVersion by default, if that environment variable is present.
|
||||||
|
# This parameter is ignored if -ChocolateyDownloadUrl is set.
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$ChocolateyVersion = $env:chocolateyVersion,
|
||||||
|
|
||||||
|
# If set, uses built-in Windows decompression tools instead of 7zip when
|
||||||
|
# unpacking the downloaded nupkg. This will be set by default if
|
||||||
|
# $env:chocolateyUseWindowsCompression is set to a value other than 'false' or '0'.
|
||||||
|
#
|
||||||
|
# This parameter will be ignored in PS 5+ in favour of using the
|
||||||
|
# Expand-Archive built in PowerShell cmdlet directly.
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[switch]
|
||||||
|
$UseNativeUnzip = $(
|
||||||
|
$envVar = "$env:chocolateyUseWindowsCompression".Trim()
|
||||||
|
$value = $null
|
||||||
|
if ([bool]::TryParse($envVar, [ref] $value)) {
|
||||||
|
$value
|
||||||
|
} elseif ([int]::TryParse($envVar, [ref] $value)) {
|
||||||
|
[bool]$value
|
||||||
|
} else {
|
||||||
|
[bool]$envVar
|
||||||
|
}
|
||||||
|
),
|
||||||
|
|
||||||
|
# If set, ignores any configured proxy. This will override any proxy
|
||||||
|
# environment variables or parameters. This will be set by default if
|
||||||
|
# $env:chocolateyIgnoreProxy is set to a value other than 'false' or '0'.
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[switch]
|
||||||
|
$IgnoreProxy = $(
|
||||||
|
$envVar = "$env:chocolateyIgnoreProxy".Trim()
|
||||||
|
$value = $null
|
||||||
|
if ([bool]::TryParse($envVar, [ref] $value)) {
|
||||||
|
$value
|
||||||
|
}
|
||||||
|
elseif ([int]::TryParse($envVar, [ref] $value)) {
|
||||||
|
[bool]$value
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[bool]$envVar
|
||||||
|
}
|
||||||
|
),
|
||||||
|
|
||||||
|
# Specifies the proxy URL to use during the download. This will default to
|
||||||
|
# the value of $env:chocolateyProxyLocation, if any is set.
|
||||||
|
[Parameter(ParameterSetName = 'Proxy', Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$ProxyUrl = $env:chocolateyProxyLocation,
|
||||||
|
|
||||||
|
# Specifies the credential to use for an authenticated proxy. By default, a
|
||||||
|
# proxy credential will be constructed from the $env:chocolateyProxyUser and
|
||||||
|
# $env:chocolateyProxyPassword environment variables, if both are set.
|
||||||
|
[Parameter(ParameterSetName = 'Proxy', Mandatory = $false)]
|
||||||
|
[System.Management.Automation.PSCredential]
|
||||||
|
$ProxyCredential
|
||||||
|
)
|
||||||
|
|
||||||
|
#region Functions
|
||||||
|
|
||||||
|
function Get-Downloader {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Gets a System.Net.WebClient that respects relevant proxies to be used for
|
||||||
|
downloading data.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Retrieves a WebClient object that is pre-configured according to specified
|
||||||
|
environment variables for any proxy and authentication for the proxy.
|
||||||
|
Proxy information may be omitted if the target URL is considered to be
|
||||||
|
bypassed by the proxy (originates from the local network.)
|
||||||
|
|
||||||
|
.PARAMETER Url
|
||||||
|
Target URL that the WebClient will be querying. This URL is not queried by
|
||||||
|
the function, it is only a reference to determine if a proxy is needed.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Get-Downloader -Url $fileUrl
|
||||||
|
|
||||||
|
Verifies whether any proxy configuration is needed, and/or whether $fileUrl
|
||||||
|
is a URL that would need to bypass the proxy, and then outputs the
|
||||||
|
already-configured WebClient object.
|
||||||
|
#>
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$Url,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$ProxyUrl,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[System.Management.Automation.PSCredential]
|
||||||
|
$ProxyCredential
|
||||||
|
)
|
||||||
|
|
||||||
|
$downloader = New-Object System.Net.WebClient
|
||||||
|
|
||||||
|
$defaultCreds = [System.Net.CredentialCache]::DefaultCredentials
|
||||||
|
if ($defaultCreds) {
|
||||||
|
$downloader.Credentials = $defaultCreds
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ProxyUrl) {
|
||||||
|
# Use explicitly set proxy.
|
||||||
|
Write-Host "Using explicit proxy server '$ProxyUrl'."
|
||||||
|
$proxy = New-Object System.Net.WebProxy -ArgumentList $ProxyUrl, <# bypassOnLocal: #> $true
|
||||||
|
|
||||||
|
$proxy.Credentials = if ($ProxyCredential) {
|
||||||
|
$ProxyCredential.GetNetworkCredential()
|
||||||
|
} elseif ($defaultCreds) {
|
||||||
|
$defaultCreds
|
||||||
|
} else {
|
||||||
|
Write-Warning "Default credentials were null, and no explicitly set proxy credentials were found. Attempting backup method."
|
||||||
|
(Get-Credential).GetNetworkCredential()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $proxy.IsBypassed($Url)) {
|
||||||
|
$downloader.Proxy = $proxy
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "Not using proxy."
|
||||||
|
}
|
||||||
|
|
||||||
|
$downloader
|
||||||
|
}
|
||||||
|
|
||||||
|
function Request-String {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Downloads content from a remote server as a string.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Downloads target string content from a URL and outputs the resulting string.
|
||||||
|
Any existing proxy that may be in use will be utilised.
|
||||||
|
|
||||||
|
.PARAMETER Url
|
||||||
|
URL to download string data from.
|
||||||
|
|
||||||
|
.PARAMETER ProxyConfiguration
|
||||||
|
A hashtable containing proxy parameters (ProxyUrl and ProxyCredential)
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Request-String https://community.chocolatey.org/install.ps1
|
||||||
|
|
||||||
|
Retrieves the contents of the string data at the targeted URL and outputs
|
||||||
|
it to the pipeline.
|
||||||
|
#>
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]
|
||||||
|
$Url,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[hashtable]
|
||||||
|
$ProxyConfiguration
|
||||||
|
)
|
||||||
|
|
||||||
|
(Get-Downloader $url @ProxyConfiguration).DownloadString($url)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Request-File {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Downloads a file from a given URL.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Downloads a target file from a URL to the specified local path.
|
||||||
|
Any existing proxy that may be in use will be utilised.
|
||||||
|
|
||||||
|
.PARAMETER Url
|
||||||
|
URL of the file to download from the remote host.
|
||||||
|
|
||||||
|
.PARAMETER File
|
||||||
|
Local path for the file to be downloaded to.
|
||||||
|
|
||||||
|
.PARAMETER ProxyConfiguration
|
||||||
|
A hashtable containing proxy parameters (ProxyUrl and ProxyCredential)
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Request-File -Url https://community.chocolatey.org/install.ps1 -File $targetFile
|
||||||
|
|
||||||
|
Downloads the install.ps1 script to the path specified in $targetFile.
|
||||||
|
#>
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$Url,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]
|
||||||
|
$File,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[hashtable]
|
||||||
|
$ProxyConfiguration
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "Downloading $url to $file"
|
||||||
|
(Get-Downloader $url @ProxyConfiguration).DownloadFile($url, $file)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Set-PSConsoleWriter {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Workaround for a bug in output stream handling PS v2 or v3.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
PowerShell v2/3 caches the output stream. Then it throws errors due to the
|
||||||
|
FileStream not being what is expected. Fixes "The OS handle's position is
|
||||||
|
not what FileStream expected. Do not use a handle simultaneously in one
|
||||||
|
FileStream and in Win32 code or another FileStream." error.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Set-PSConsoleWriter
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
General notes
|
||||||
|
#>
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
param()
|
||||||
|
if ($PSVersionTable.PSVersion.Major -gt 3) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
# http://www.leeholmes.com/blog/2008/07/30/workaround-the-os-handles-position-is-not-what-filestream-expected/ plus comments
|
||||||
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetField"
|
||||||
|
$objectRef = $host.GetType().GetField("externalHostRef", $bindingFlags).GetValue($host)
|
||||||
|
|
||||||
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetProperty"
|
||||||
|
$consoleHost = $objectRef.GetType().GetProperty("Value", $bindingFlags).GetValue($objectRef, @())
|
||||||
|
[void] $consoleHost.GetType().GetProperty("IsStandardOutputRedirected", $bindingFlags).GetValue($consoleHost, @())
|
||||||
|
|
||||||
|
$bindingFlags = [Reflection.BindingFlags] "Instance,NonPublic,GetField"
|
||||||
|
$field = $consoleHost.GetType().GetField("standardOutputWriter", $bindingFlags)
|
||||||
|
$field.SetValue($consoleHost, [Console]::Out)
|
||||||
|
|
||||||
|
[void] $consoleHost.GetType().GetProperty("IsStandardErrorRedirected", $bindingFlags).GetValue($consoleHost, @())
|
||||||
|
$field2 = $consoleHost.GetType().GetField("standardErrorWriter", $bindingFlags)
|
||||||
|
$field2.SetValue($consoleHost, [Console]::Error)
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Unable to apply redirection fix."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-ChocolateyInstalled {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param()
|
||||||
|
|
||||||
|
$checkPath = if ($env:ChocolateyInstall) { $env:ChocolateyInstall } else { "$env:PROGRAMDATA\chocolatey" }
|
||||||
|
|
||||||
|
if ($Command = Get-Command choco -CommandType Application -ErrorAction Ignore) {
|
||||||
|
# choco is on the PATH, assume it's installed
|
||||||
|
Write-Warning "'choco' was found at '$($Command.Path)'."
|
||||||
|
$true
|
||||||
|
}
|
||||||
|
elseif (-not (Test-Path $checkPath)) {
|
||||||
|
# Install folder doesn't exist
|
||||||
|
$false
|
||||||
|
}
|
||||||
|
elseif (-not (Get-ChildItem -Path $checkPath)) {
|
||||||
|
# Install folder exists but is empty
|
||||||
|
$false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
# Install folder exists and is not empty
|
||||||
|
Write-Warning "Files from a previous installation of Chocolatey were found at '$($CheckPath)'."
|
||||||
|
$true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Install-7zip {
|
||||||
|
[CmdletBinding()]
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]
|
||||||
|
$Path,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[hashtable]
|
||||||
|
$ProxyConfiguration
|
||||||
|
)
|
||||||
|
|
||||||
|
if (-not (Test-Path ($Path))) {
|
||||||
|
Write-Host "Downloading 7-Zip commandline tool prior to extraction."
|
||||||
|
Request-File -Url 'https://community.chocolatey.org/7za.exe' -File $Path -ProxyConfiguration $ProxyConfiguration
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host "7zip already present, skipping installation."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Functions
|
||||||
|
|
||||||
|
#region Pre-check
|
||||||
|
|
||||||
|
# Ensure we have all our streams setup correctly, needed for older PSVersions.
|
||||||
|
Set-PSConsoleWriter
|
||||||
|
|
||||||
|
if (Test-ChocolateyInstalled) {
|
||||||
|
$message = @(
|
||||||
|
"An existing Chocolatey installation was detected. Installation will not continue."
|
||||||
|
"For security reasons, this script will not overwrite existing installations."
|
||||||
|
""
|
||||||
|
"Please use `choco upgrade chocolatey` to handle upgrades of Chocolatey itself."
|
||||||
|
) -join [Environment]::NewLine
|
||||||
|
|
||||||
|
Write-Warning $message
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Pre-check
|
||||||
|
|
||||||
|
#region Setup
|
||||||
|
|
||||||
|
$proxyConfig = if ($IgnoreProxy -or -not $ProxyUrl) {
|
||||||
|
@{}
|
||||||
|
} else {
|
||||||
|
$config = @{
|
||||||
|
ProxyUrl = $ProxyUrl
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ProxyCredential) {
|
||||||
|
$config['ProxyCredential'] = $ProxyCredential
|
||||||
|
} elseif ($env:chocolateyProxyUser -and $env:chocolateyProxyPassword) {
|
||||||
|
$securePass = ConvertTo-SecureString $env:chocolateyProxyPassword -AsPlainText -Force
|
||||||
|
$config['ProxyCredential'] = [System.Management.Automation.PSCredential]::new($env:chocolateyProxyUser, $securePass)
|
||||||
|
}
|
||||||
|
|
||||||
|
$config
|
||||||
|
}
|
||||||
|
|
||||||
|
# Attempt to set highest encryption available for SecurityProtocol.
|
||||||
|
# PowerShell will not set this by default (until maybe .NET 4.6.x). This
|
||||||
|
# will typically produce a message for PowerShell v2 (just an info
|
||||||
|
# message though)
|
||||||
|
try {
|
||||||
|
# Set TLS 1.2 (3072) as that is the minimum required by Chocolatey.org.
|
||||||
|
# Use integers because the enumeration value for TLS 1.2 won't exist
|
||||||
|
# in .NET 4.0, even though they are addressable if .NET 4.5+ is
|
||||||
|
# installed (.NET 4.5 is an in-place upgrade).
|
||||||
|
Write-Host "Forcing web requests to allow TLS v1.2 (Required for requests to Chocolatey.org)"
|
||||||
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
$errorMessage = @(
|
||||||
|
'Unable to set PowerShell to use TLS 1.2. This is required for contacting Chocolatey as of 03 FEB 2020.'
|
||||||
|
'https://blog.chocolatey.org/2020/01/remove-support-for-old-tls-versions/.'
|
||||||
|
'If you see underlying connection closed or trust errors, you may need to do one or more of the following:'
|
||||||
|
'(1) upgrade to .NET Framework 4.5+ and PowerShell v3+,'
|
||||||
|
'(2) Call [System.Net.ServicePointManager]::SecurityProtocol = 3072; in PowerShell prior to attempting installation,'
|
||||||
|
'(3) specify internal Chocolatey package location (set $env:chocolateyDownloadUrl prior to install or host the package internally),'
|
||||||
|
'(4) use the Download + PowerShell method of install.'
|
||||||
|
'See https://docs.chocolatey.org/en-us/choco/setup for all install options.'
|
||||||
|
) -join [Environment]::NewLine
|
||||||
|
Write-Warning $errorMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ChocolateyDownloadUrl) {
|
||||||
|
if ($ChocolateyVersion) {
|
||||||
|
Write-Warning "Ignoring -ChocolateyVersion parameter ($ChocolateyVersion) because -ChocolateyDownloadUrl is set."
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Downloading Chocolatey from: $ChocolateyDownloadUrl"
|
||||||
|
} elseif ($ChocolateyVersion) {
|
||||||
|
Write-Host "Downloading specific version of Chocolatey: $ChocolateyVersion"
|
||||||
|
$ChocolateyDownloadUrl = "https://community.chocolatey.org/api/v2/package/chocolatey/$ChocolateyVersion"
|
||||||
|
} else {
|
||||||
|
Write-Host "Getting latest version of the Chocolatey package for download."
|
||||||
|
$queryString = [uri]::EscapeUriString("((Id eq 'chocolatey') and (not IsPrerelease)) and IsLatestVersion")
|
||||||
|
$queryUrl = 'https://community.chocolatey.org/api/v2/Packages()?$filter={0}' -f $queryString
|
||||||
|
|
||||||
|
[xml]$result = Request-String -Url $queryUrl -ProxyConfiguration $proxyConfig
|
||||||
|
$ChocolateyDownloadUrl = $result.feed.entry.content.src
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $env:TEMP) {
|
||||||
|
$env:TEMP = Join-Path $env:SystemDrive -ChildPath 'temp'
|
||||||
|
}
|
||||||
|
|
||||||
|
$chocoTempDir = Join-Path $env:TEMP -ChildPath "chocolatey"
|
||||||
|
$tempDir = Join-Path $chocoTempDir -ChildPath "chocoInstall"
|
||||||
|
|
||||||
|
if (-not (Test-Path $tempDir -PathType Container)) {
|
||||||
|
$null = New-Item -Path $tempDir -ItemType Directory
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = Join-Path $tempDir "chocolatey.zip"
|
||||||
|
|
||||||
|
#endregion Setup
|
||||||
|
|
||||||
|
#region Download & Extract Chocolatey
|
||||||
|
|
||||||
|
Write-Host "Getting Chocolatey from $ChocolateyDownloadUrl."
|
||||||
|
Request-File -Url $ChocolateyDownloadUrl -File $file -ProxyConfiguration $proxyConfig
|
||||||
|
|
||||||
|
Write-Host "Extracting $file to $tempDir"
|
||||||
|
if ($PSVersionTable.PSVersion.Major -lt 5) {
|
||||||
|
# Determine unzipping method
|
||||||
|
# 7zip is the most compatible pre-PSv5.1 so use it unless asked to use builtin
|
||||||
|
if ($UseNativeUnzip) {
|
||||||
|
Write-Host 'Using built-in compression to unzip'
|
||||||
|
|
||||||
|
try {
|
||||||
|
$shellApplication = New-Object -ComObject Shell.Application
|
||||||
|
$zipPackage = $shellApplication.NameSpace($file)
|
||||||
|
$destinationFolder = $shellApplication.NameSpace($tempDir)
|
||||||
|
$destinationFolder.CopyHere($zipPackage.Items(), 0x10)
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Unable to unzip package using built-in compression. Set `$env:chocolateyUseWindowsCompression = ''` or omit -UseNativeUnzip and retry to use 7zip to unzip."
|
||||||
|
throw $_
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$7zaExe = Join-Path $tempDir -ChildPath '7za.exe'
|
||||||
|
Install-7zip -Path $7zaExe -ProxyConfiguration $proxyConfig
|
||||||
|
|
||||||
|
$params = 'x -o"{0}" -bd -y "{1}"' -f $tempDir, $file
|
||||||
|
|
||||||
|
# use more robust Process as compared to Start-Process -Wait (which doesn't
|
||||||
|
# wait for the process to finish in PowerShell v3)
|
||||||
|
$process = New-Object System.Diagnostics.Process
|
||||||
|
|
||||||
|
try {
|
||||||
|
$process.StartInfo = New-Object System.Diagnostics.ProcessStartInfo -ArgumentList $7zaExe, $params
|
||||||
|
$process.StartInfo.RedirectStandardOutput = $true
|
||||||
|
$process.StartInfo.UseShellExecute = $false
|
||||||
|
$process.StartInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden
|
||||||
|
|
||||||
|
$null = $process.Start()
|
||||||
|
$process.BeginOutputReadLine()
|
||||||
|
$process.WaitForExit()
|
||||||
|
|
||||||
|
$exitCode = $process.ExitCode
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
$process.Dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
$errorMessage = "Unable to unzip package using 7zip. Perhaps try setting `$env:chocolateyUseWindowsCompression = 'true' and call install again. Error:"
|
||||||
|
if ($exitCode -ne 0) {
|
||||||
|
$errorDetails = switch ($exitCode) {
|
||||||
|
1 { "Some files could not be extracted" }
|
||||||
|
2 { "7-Zip encountered a fatal error while extracting the files" }
|
||||||
|
7 { "7-Zip command line error" }
|
||||||
|
8 { "7-Zip out of memory" }
|
||||||
|
255 { "Extraction cancelled by the user" }
|
||||||
|
default { "7-Zip signalled an unknown error (code $exitCode)" }
|
||||||
|
}
|
||||||
|
|
||||||
|
throw ($errorMessage, $errorDetails -join [Environment]::NewLine)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Microsoft.PowerShell.Archive\Expand-Archive -Path $file -DestinationPath $tempDir -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion Download & Extract Chocolatey
|
||||||
|
|
||||||
|
#region Install Chocolatey
|
||||||
|
|
||||||
|
Write-Host "Installing Chocolatey on the local machine"
|
||||||
|
$toolsFolder = Join-Path $tempDir -ChildPath "tools"
|
||||||
|
$chocoInstallPS1 = Join-Path $toolsFolder -ChildPath "chocolateyInstall.ps1"
|
||||||
|
|
||||||
|
& $chocoInstallPS1
|
||||||
|
|
||||||
|
Write-Host 'Ensuring Chocolatey commands are on the path'
|
||||||
|
$chocoInstallVariableName = "ChocolateyInstall"
|
||||||
|
$chocoPath = [Environment]::GetEnvironmentVariable($chocoInstallVariableName)
|
||||||
|
|
||||||
|
if (-not $chocoPath) {
|
||||||
|
$chocoPath = "$env:ALLUSERSPROFILE\Chocolatey"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path ($chocoPath))) {
|
||||||
|
$chocoPath = "$env:PROGRAMDATA\chocolatey"
|
||||||
|
}
|
||||||
|
|
||||||
|
$chocoExePath = Join-Path $chocoPath -ChildPath 'bin'
|
||||||
|
|
||||||
|
# Update current process PATH environment variable if it needs updating.
|
||||||
|
if ($env:Path -notlike "*$chocoExePath*") {
|
||||||
|
$env:Path = [Environment]::GetEnvironmentVariable('Path', [System.EnvironmentVariableTarget]::Machine);
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host 'Ensuring chocolatey.nupkg is in the lib folder'
|
||||||
|
$chocoPkgDir = Join-Path $chocoPath -ChildPath 'lib\chocolatey'
|
||||||
|
$nupkg = Join-Path $chocoPkgDir -ChildPath 'chocolatey.nupkg'
|
||||||
|
|
||||||
|
if (-not (Test-Path $chocoPkgDir -PathType Container)) {
|
||||||
|
$null = New-Item -ItemType Directory -Path $chocoPkgDir
|
||||||
|
}
|
||||||
|
|
||||||
|
Copy-Item -Path $file -Destination $nupkg -Force -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
#endregion Install Chocolatey
|
||||||
|
|
||||||
|
# SIG # Begin signature block
|
||||||
|
# MIIZvwYJKoZIhvcNAQcCoIIZsDCCGawCAQExDzANBglghkgBZQMEAgEFADB5Bgor
|
||||||
|
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
|
||||||
|
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCBiXTlbpVQOoJeX
|
||||||
|
# rGtqATyaDXeEHi6Q2pKb3p02Iq/tc6CCFKgwggT+MIID5qADAgECAhANQkrgvjqI
|
||||||
|
# /2BAIc4UAPDdMA0GCSqGSIb3DQEBCwUAMHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
|
||||||
|
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xMTAvBgNV
|
||||||
|
# BAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJlZCBJRCBUaW1lc3RhbXBpbmcgQ0EwHhcN
|
||||||
|
# MjEwMTAxMDAwMDAwWhcNMzEwMTA2MDAwMDAwWjBIMQswCQYDVQQGEwJVUzEXMBUG
|
||||||
|
# A1UEChMORGlnaUNlcnQsIEluYy4xIDAeBgNVBAMTF0RpZ2lDZXJ0IFRpbWVzdGFt
|
||||||
|
# cCAyMDIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwuZhhGfFivUN
|
||||||
|
# CKRFymNrUdc6EUK9CnV1TZS0DFC1JhD+HchvkWsMlucaXEjvROW/m2HNFZFiWrj/
|
||||||
|
# ZwucY/02aoH6KfjdK3CF3gIY83htvH35x20JPb5qdofpir34hF0edsnkxnZ2OlPR
|
||||||
|
# 0dNaNo/Go+EvGzq3YdZz7E5tM4p8XUUtS7FQ5kE6N1aG3JMjjfdQJehk5t3Tjy9X
|
||||||
|
# tYcg6w6OLNUj2vRNeEbjA4MxKUpcDDGKSoyIxfcwWvkUrxVfbENJCf0mI1P2jWPo
|
||||||
|
# GqtbsR0wwptpgrTb/FZUvB+hh6u+elsKIC9LCcmVp42y+tZji06lchzun3oBc/gZ
|
||||||
|
# 1v4NSYS9AQIDAQABo4IBuDCCAbQwDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQC
|
||||||
|
# MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwQQYDVR0gBDowODA2BglghkgBhv1s
|
||||||
|
# BwEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2VydC5jb20vQ1BTMB8G
|
||||||
|
# A1UdIwQYMBaAFPS24SAd/imu0uRhpbKiJbLIFzVuMB0GA1UdDgQWBBQ2RIaOpLqw
|
||||||
|
# Zr68KC0dRDbd42p6vDBxBgNVHR8EajBoMDKgMKAuhixodHRwOi8vY3JsMy5kaWdp
|
||||||
|
# Y2VydC5jb20vc2hhMi1hc3N1cmVkLXRzLmNybDAyoDCgLoYsaHR0cDovL2NybDQu
|
||||||
|
# ZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC10cy5jcmwwgYUGCCsGAQUFBwEBBHkw
|
||||||
|
# dzAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tME8GCCsGAQUF
|
||||||
|
# BzAChkNodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRTSEEyQXNz
|
||||||
|
# dXJlZElEVGltZXN0YW1waW5nQ0EuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQBIHNy1
|
||||||
|
# 6ZojvOca5yAOjmdG/UJyUXQKI0ejq5LSJcRwWb4UoOUngaVNFBUZB3nw0QTDhtk7
|
||||||
|
# vf5EAmZN7WmkD/a4cM9i6PVRSnh5Nnont/PnUp+Tp+1DnnvntN1BIon7h6JGA078
|
||||||
|
# 9P63ZHdjXyNSaYOC+hpT7ZDMjaEXcw3082U5cEvznNZ6e9oMvD0y0BvL9WH8dQgA
|
||||||
|
# dryBDvjA4VzPxBFy5xtkSdgimnUVQvUtMjiB2vRgorq0Uvtc4GEkJU+y38kpqHND
|
||||||
|
# Udq9Y9YfW5v3LhtPEx33Sg1xfpe39D+E68Hjo0mh+s6nv1bPull2YYlffqe0jmd4
|
||||||
|
# +TaY4cso2luHpoovMIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkq
|
||||||
|
# hkiG9w0BAQsFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5j
|
||||||
|
# MRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBB
|
||||||
|
# c3N1cmVkIElEIFJvb3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAw
|
||||||
|
# WjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
||||||
|
# ExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3Vy
|
||||||
|
# ZWQgSUQgQ29kZSBTaWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||||
|
# CgKCAQEA+NOzHH8OEa9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6
|
||||||
|
# kkPApfmJ1DcZ17aq8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQj
|
||||||
|
# ZhJUM1B0sSgmuyRpwsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5w
|
||||||
|
# MWYzcT6scKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp
|
||||||
|
# 6moKq4TzrGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH
|
||||||
|
# 5DiLanMg0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgw
|
||||||
|
# BgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYI
|
||||||
|
# KwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j
|
||||||
|
# b20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdp
|
||||||
|
# Q2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6
|
||||||
|
# Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
|
||||||
|
# OqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
|
||||||
|
# RFJvb3RDQS5jcmwwTwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUH
|
||||||
|
# AgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYD
|
||||||
|
# VR0OBBYEFFrEuXsqCqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuC
|
||||||
|
# MS1Ri6enIZ3zbcgPMA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2
|
||||||
|
# qB1dHC06GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4Q
|
||||||
|
# pO4/cY5jDhNLrddfRHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEp
|
||||||
|
# KBo6cSgCPC6Ro8AlEeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/Dm
|
||||||
|
# ZAwlCEIysjaKJAL+L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9
|
||||||
|
# CBoYs4GbT8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
|
||||||
|
# MIIFMTCCBBmgAwIBAgIQCqEl1tYyG35B5AXaNpfCFTANBgkqhkiG9w0BAQsFADBl
|
||||||
|
# MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
# d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
|
||||||
|
# b3QgQ0EwHhcNMTYwMTA3MTIwMDAwWhcNMzEwMTA3MTIwMDAwWjByMQswCQYDVQQG
|
||||||
|
# EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
|
||||||
|
# cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgVGltZXN0
|
||||||
|
# YW1waW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvdAy7kvN
|
||||||
|
# j3/dqbqCmcU5VChXtiNKxA4HRTNREH3Q+X1NaH7ntqD0jbOI5Je/YyGQmL8TvFfT
|
||||||
|
# w+F+CNZqFAA49y4eO+7MpvYyWf5fZT/gm+vjRkcGGlV+Cyd+wKL1oODeIj8O/36V
|
||||||
|
# +/OjuiI+GKwR5PCZA207hXwJ0+5dyJoLVOOoCXFr4M8iEA91z3FyTgqt30A6XLdR
|
||||||
|
# 4aF5FMZNJCMwXbzsPGBqrC8HzP3w6kfZiFBe/WZuVmEnKYmEUeaC50ZQ/ZQqLKfk
|
||||||
|
# dT66mA+Ef58xFNat1fJky3seBdCEGXIX8RcG7z3N1k3vBkL9olMqT4UdxB08r8/a
|
||||||
|
# rBD13ays6Vb/kwIDAQABo4IBzjCCAcowHQYDVR0OBBYEFPS24SAd/imu0uRhpbKi
|
||||||
|
# JbLIFzVuMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgPMBIGA1UdEwEB
|
||||||
|
# /wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMI
|
||||||
|
# MHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
|
||||||
|
# cnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
|
||||||
|
# RGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MIGBBgNVHR8EejB4MDqgOKA2hjRo
|
||||||
|
# dHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0Eu
|
||||||
|
# Y3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
|
||||||
|
# cmVkSURSb290Q0EuY3JsMFAGA1UdIARJMEcwOAYKYIZIAYb9bAACBDAqMCgGCCsG
|
||||||
|
# AQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAsGCWCGSAGG/WwH
|
||||||
|
# ATANBgkqhkiG9w0BAQsFAAOCAQEAcZUS6VGHVmnN793afKpjerN4zwY3QITvS4S/
|
||||||
|
# ys8DAv3Fp8MOIEIsr3fzKx8MIVoqtwU0HWqumfgnoma/Capg33akOpMP+LLR2HwZ
|
||||||
|
# YuhegiUexLoceywh4tZbLBQ1QwRostt1AuByx5jWPGTlH0gQGF+JOGFNYkYkh2OM
|
||||||
|
# kVIsrymJ5Xgf1gsUpYDXEkdws3XVk4WTfraSZ/tTYYmo9WuWwPRYaQ18yAGxuSh1
|
||||||
|
# t5ljhSKMYcp5lH5Z/IwP42+1ASa2bKXuh1Eh5Fhgm7oMLSttosR+u8QlK0cCCHxJ
|
||||||
|
# rhO24XxCQijGGFbPQTS2Zl22dHv1VjMiLyI2skuiSpXY9aaOUjCCBTkwggQhoAMC
|
||||||
|
# AQICEAq50xD7ISvojIGz0sLozlEwDQYJKoZIhvcNAQELBQAwcjELMAkGA1UEBhMC
|
||||||
|
# VVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0
|
||||||
|
# LmNvbTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENvZGUgU2ln
|
||||||
|
# bmluZyBDQTAeFw0yMTA0MjcwMDAwMDBaFw0yNDA0MzAyMzU5NTlaMHcxCzAJBgNV
|
||||||
|
# BAYTAlVTMQ8wDQYDVQQIEwZLYW5zYXMxDzANBgNVBAcTBlRvcGVrYTEiMCAGA1UE
|
||||||
|
# ChMZQ2hvY29sYXRleSBTb2Z0d2FyZSwgSW5jLjEiMCAGA1UEAxMZQ2hvY29sYXRl
|
||||||
|
# eSBTb2Z0d2FyZSwgSW5jLjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
||||||
|
# AKFxp42p47c7eHNsNhgxzG+/9A1I8Th+kj40YQJH4Vh0M7a61f39I/FELNYGuyCe
|
||||||
|
# 0+z/sg+T+4VmT/JMiI2hc75yokTjkv3Yt1+fqABzCMadr+PZ/9ttIVJ5db3P2Uzc
|
||||||
|
# Ml5wXBdCV5ZH/w4oKcP53VmYcHQEDm/RtAJ9TxlPtLS734oAqrKqBmsnJCI98FWp
|
||||||
|
# d6z1FK5rv7RJVeZoGsl/2eMcB/ko0Vj9MSCbWvXNjDF9yy4Tl5h2vb+y7K1Qmk3X
|
||||||
|
# yb0OYB1ibva9rQozGgogEa5DL0OdoMj6cyJ6Cx2GQv2wjKwiKfs9zCOTDH2VGa0i
|
||||||
|
# okDbsd+BvUxovQ6eSnBFj5UCAwEAAaOCAcQwggHAMB8GA1UdIwQYMBaAFFrEuXsq
|
||||||
|
# CqOl6nEDwGD5LfZldQ5YMB0GA1UdDgQWBBRO8wUYXZXrKVBqUW35p9FeNJoEgzAO
|
||||||
|
# BgNVHQ8BAf8EBAMCB4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1
|
||||||
|
# oDOgMYYvaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1n
|
||||||
|
# MS5jcmwwNaAzoDGGL2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3Vy
|
||||||
|
# ZWQtY3MtZzEuY3JsMEsGA1UdIAREMEIwNgYJYIZIAYb9bAMBMCkwJwYIKwYBBQUH
|
||||||
|
# AgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsG
|
||||||
|
# AQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
|
||||||
|
# ME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
|
||||||
|
# cnRTSEEyQXNzdXJlZElEQ29kZVNpZ25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADAN
|
||||||
|
# BgkqhkiG9w0BAQsFAAOCAQEAoXGdwcDMMV6xQldozbWoxGTn6chlwO4hJ8aAlwOM
|
||||||
|
# wexEvDudrlifsiGI1j46wqc9WR8+Ev8w1dIcbqif4inGIHb8GvL22Goq+lB08F7y
|
||||||
|
# YU3Ry0kOCtJx7JELlID0SI7bYndg17TJUQoAb5iTYD9aEoHMIKlGyQyVGvsp4ubo
|
||||||
|
# O8CC8Owx+Qq148yXY+to4360U2lzZvUtMpPiiSJTm4BamNgC32xgGwpN5lvk0m3R
|
||||||
|
# lDdqQQQgBCzrf+ZIMBmXMw4kxY0r/K/g1TkKI9VyiEnRaNQlQisAyYBWVnaHw2EJ
|
||||||
|
# ck6/bxwdYSA+Sz/Op0N0iEl8MX4At3XQlMGvAI1xhAbrwDGCBG0wggRpAgEBMIGG
|
||||||
|
# MHIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsT
|
||||||
|
# EHd3dy5kaWdpY2VydC5jb20xMTAvBgNVBAMTKERpZ2lDZXJ0IFNIQTIgQXNzdXJl
|
||||||
|
# ZCBJRCBDb2RlIFNpZ25pbmcgQ0ECEAq50xD7ISvojIGz0sLozlEwDQYJYIZIAWUD
|
||||||
|
# BAIBBQCggYQwGAYKKwYBBAGCNwIBDDEKMAigAoAAoQKAADAZBgkqhkiG9w0BCQMx
|
||||||
|
# DAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkq
|
||||||
|
# hkiG9w0BCQQxIgQgey25OsHafMX1HWLKRJb0Sf/lMMX5vF0EAhjyQlfUDzgwDQYJ
|
||||||
|
# KoZIhvcNAQEBBQAEggEAC0wtyHWaoYbiMY8PXKaNf16zoeuj5jYAuvx0B/nzJ27A
|
||||||
|
# tP/Mo9SC1Z4M2iEps/LDScRoy3N8pCI8NQBDjWGGkjW5ScFvF7a042DcurR+LE30
|
||||||
|
# aa4d7Y0MT8O+vhQDcVCmB7JB+9E6/7+qpD1vVfs1zYw1cprCZoOejttDCEvlvsAN
|
||||||
|
# VrPKixhxbLcLu/5KV9qUBUWW9vEz8/WL1IcNcsfwd61+JWa116CXeyoLKqWXJIPF
|
||||||
|
# uNnULZTs/E2BY1JYBKIfzvSi3QWg/uWvJucdGdbLib4d1gEXxLtHk+aDOLTXRG12
|
||||||
|
# yjMdCF1FhyeC+hyWSgwyXZ0V9zRGpiS+IjarelHVDqGCAjAwggIsBgkqhkiG9w0B
|
||||||
|
# CQYxggIdMIICGQIBATCBhjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNl
|
||||||
|
# cnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdp
|
||||||
|
# Q2VydCBTSEEyIEFzc3VyZWQgSUQgVGltZXN0YW1waW5nIENBAhANQkrgvjqI/2BA
|
||||||
|
# Ic4UAPDdMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEH
|
||||||
|
# ATAcBgkqhkiG9w0BCQUxDxcNMjEwNjE3MDg0MjQzWjAvBgkqhkiG9w0BCQQxIgQg
|
||||||
|
# Osdf/2XOopSIGgniCq9vRS6UGDVJ7TingAmrcmwYcWowDQYJKoZIhvcNAQEBBQAE
|
||||||
|
# ggEAs50N1tQOpzvCCO9R4hCcaMY0jsOm7QOOk257yySmEFbtgmKUpNmyyfwK0Wl/
|
||||||
|
# Ti1IOTOQ1oz7Wz6Q/kEgPoZAbuAhXKH+At6Vwa98Jp3GG6abokNohPI3cWGJbS3u
|
||||||
|
# rJEKZay3+1fGNaYOCpIqkhpnVqyTNoLlNBLcGOkq7FgBKsomtQSO9ejFluS1woKY
|
||||||
|
# wK7EiXjzDwFG18DmnUuRpO4xrdmcbh7m3MnC95DjYcFFzKr/xxideicJAGZSHOo1
|
||||||
|
# nQorVQyPcXQe4Nl2JHAr3R6RTeaXgq6We4LSdMsO5BAyduh/w4nicahwAv5wgIsw
|
||||||
|
# cUvCYQiMMXCU2x9vsn8B5wKETQ==
|
||||||
|
# SIG # End signature block
|
Loading…
Reference in New Issue
Block a user