mirror of
https://github.com/aphrody-labs/NuGet.Client.git
synced 2026-10-14 05:19:04 +00:00
66 lines
1.7 KiB
PowerShell
66 lines
1.7 KiB
PowerShell
param (
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$NuGetDropPath,
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$FuncTestRoot,
|
|
[Parameter(Mandatory = $true)]
|
|
[int]$ProcessExitTimeoutInSeconds,
|
|
[Parameter()]
|
|
[string]$VSInstanceId)
|
|
|
|
. "$PSScriptRoot\VSUtils.ps1"
|
|
|
|
$success = IsAdminPrompt
|
|
|
|
if ($success -eq $false) {
|
|
$errorMessage = 'ERROR: Please re-run this script as an administrator! ' +
|
|
'Actions such as installing VSIX and uninstalling VSIX require admin privileges.'
|
|
|
|
Write-Error $errorMessage
|
|
exit 1
|
|
}
|
|
|
|
$VSIXSrcPath = Join-Path $NuGetDropPath 'NuGet.Tools.vsix'
|
|
$VSIXPath = Join-Path $FuncTestRoot 'NuGet.Tools.vsix'
|
|
|
|
Copy-Item $VSIXSrcPath $VSIXPath
|
|
|
|
if ([System.String]::IsNullOrEmpty($VSInstanceId)) {
|
|
$VSInstance = Get-LatestVSInstance -VersionRange (Get-VisualStudioVersionRangeFromConfig)
|
|
}
|
|
else {
|
|
$VSInstance = Get-SpecificVSInstance $VSInstanceId
|
|
}
|
|
|
|
# Because we are upgrading an installed system component VSIX, we need to downgrade first.
|
|
$numberOfTries = 0
|
|
$success = $false
|
|
do {
|
|
KillRunningInstancesOfVS $VSInstance
|
|
$numberOfTries++
|
|
Write-Host "Attempt # $numberOfTries to downgrade VSIX..."
|
|
$success = DowngradeVSIX $VSInstance $ProcessExitTimeoutInSeconds
|
|
}
|
|
until (($success -eq $true) -or ($numberOfTries -gt 3))
|
|
|
|
# Clearing MEF cache helps load the right dlls for VSIX
|
|
ClearMEFCache $VSInstance
|
|
|
|
|
|
$numberOfTries = 0
|
|
$success = $false
|
|
do {
|
|
KillRunningInstancesOfVS $VSInstance
|
|
$numberOfTries++
|
|
Write-Host "Attempt # $numberOfTries to install VSIX..."
|
|
$success = InstallVSIX $VSIXPath $VSInstance $ProcessExitTimeoutInSeconds
|
|
}
|
|
until (($success -eq $true) -or ($numberOfTries -gt 3))
|
|
|
|
if ($success -eq $false) {
|
|
exit 1
|
|
}
|
|
|
|
ClearMEFCache $VSInstance
|
|
Update-Configuration $VSInstance
|