Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PS D:\> $userSvmPath = $env:USERPROFILE + "\.svm"
- #
- # helper functions
- #
- function Write-TitleMessage
- {
- param (
- [string] $message
- )
- Write-Host $("{0}" -f "`n $message `n") -BackgroundColor DarkGray -ForegroundColor Black
- }
- function Write-InfoMessage
- {
- param (
- [string] $message
- )
- Write-Host $("{0}" -f " $message ")
- }
- function Write-ErrorMessage
- {
- param (
- [string] $message
- )
- Write-Host $("{0}" -f " $message ") -BackgroundColor DarkRed -ForegroundColor White
- }
- function String-IsEmptyOrWhitespace
- {
- param (
- [string] $str
- )
- return [string]::IsNullOrEmpty($str) -or $str.Trim().length -eq 0
- }
- function New-SvmInstallLocation
- {
- param (
- [string] $installPath
- )
- if (Test-Path $installPath)
- {
- Write-InfoMessage "An existing svm installation was found at '$installPath'. This will be upgraded."
- $paths = Get-ChildItem "$installPath" -Exclude ("version", "versions")
- foreach ($path in $paths)
- {
- if ($path.PSIsContainer -eq $true) { [System.IO.Directory]::Delete($path.FullName, $true) }
- else { [System.IO.File]::Delete($path.FullName) }
- }
- }
- else
- {
- Write-InfoMessage "Creating svm install location at '$installPath'."
- New-Item $installPath -type Directory | Out-Null
- }
- }
- function Download-SvmPackage
- {
- param (
- [string] $url,
- [string] $downloadPath
- )
- Write-InfoMessage "Downloading svm install package from '$url'."
- New-Item $([System.IO.Path]::GetDirectoryName($downloadPath)) -type Directory | Out-Null
- $wc = New-Object System.Net.WebClient
- $wc.DownloadFile($url, $downloadPath)
- }
- function Install-SvmPackage
- {
- param (
- [string] $downloadPath,
- [string] $installPath
- )
- Write-InfoMessage "Installing svm to '$installPath'."
- $unzipFolder = [System.IO.Path]::ChangeExtension($downloadPath, $null).TrimEnd('.')
- New-Item $unzipFolder -type Directory | Out-Null
- # Use the shell to uncompress the zip file
- $shellApp = New-Object -com shell.application
- $zipFile = $shellApp.namespace($downloadPath)
- $destination = $shellApp.namespace($unzipFolder)
- $destination.CopyHere($zipFile.items(), 0x14) #0x4 = don't show UI, 0x10 = overwrite files
- # Only copy Windows specific contents into the install folder
- $zipFolderToExtract = [System.IO.Path]::Combine($unzipFolder, 'svm-0.4.2', 'src', 'bin')
- Remove-Item -Path $([System.IO.Path]::Combine($zipFolderToExtract, 'svm'))
- Copy-Item -Path $zipFolderToExtract -Recurse -Destination $installPath
- $zipFolderToExtract = [System.IO.Path]::Combine($unzipFolder, 'svm-0.4.2', 'src', 'shims')
- Remove-Item -Path $([System.IO.Path]::Combine($zipFolderToExtract, 'scriptcs'))
- Copy-Item -Path $zipFolderToExtract -Recurse -Destination $installPath
- # TODO - remove temp download folder
- }
- function Configure-Environment
- {
- param (
- [string] $installPath
- )
- Write-InfoMessage "Configuring path environment variables for svm."
- $envPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
- $foldersToPrependToPath = @()
- $foldersToPrependToPath += [System.IO.Path]::Combine($installPath, 'bin')
- $foldersToPrependToPath += [System.IO.Path]::Combine($installPath, 'shims')
- $newPath = ($foldersToPrependToPath)
- if (!$(String-IsEmptyOrWhitespace( $envPath )))
- {
- foreach($path in $envPath.Split(';'))
- {
- if (!$foldersToPrependToPath.Contains($path)) { $newPath += $path }
- }
- }
- $path = [String]::Join(';', $newPath)
- # set user path
- [Environment]::SetEnvironmentVariable("Path", $path, [System.EnvironmentVariableTarget]::User)
- }
- #
- # installer
- #
- Write-TitleMessage "scriptcs version manager - installer"
- $installPath = $userSvmPath
- $url = "https://github.com/scriptcs-contrib/svm/archive/v0.4.2.zip"
- $downloadPath = [System.IO.Path]::Combine($env:TEMP, [Guid]::NewGuid(), 'svm-install.zip')
- New-SvmInstallLocation $installPath
- Download-SvmPackage -url $url -downloadPath $downloadPath
- Install-SvmPackage -downloadPath $downloadPath -installPath $installPath
- Configure-Environment $installPath
- Write-InfoMessage "Successfully installed!"
- Write-InfoMessage "`nStart a new console and run 'svm help' to get started."
- scriptcs version manager - installer
- Не удается найти перегрузку для "Combine" и количества аргументов: "3".
- строка:138 знак:42
- + $downloadPath = [System.IO.Path]::Combine <<<< ($env:TEMP, [Guid]::NewGuid(), 'svm-ins
- tall.zip')
- + CategoryInfo : NotSpecified: (:) [], MethodException
- + FullyQualifiedErrorId : MethodCountCouldNotFindBest
- An existing svm installation was found at 'C:\Users\Akigami\.svm'. This will be upgraded
- .
- Исключение при вызове "Delete" с "1" аргументами: "Путь имеет недопустимую форму."
- строка:50 знак:38
- + else { [System.IO.File]::Delete <<<< ($path.FullName) }
- + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- + FullyQualifiedErrorId : DotNetMethodException
- Downloading svm install package from 'https://github.com/scriptcs-contrib/svm/archive/v0
- .4.2.zip'.
- Исключение при вызове "GetDirectoryName" с "1" аргументами: "Путь имеет недопустимую фор
- му."
- строка:69 знак:48
- + New-Item $([System.IO.Path]::GetDirectoryName <<<< ($downloadPath)) -type Directory
- | Out-Null
- + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- + FullyQualifiedErrorId : DotNetMethodException
- New-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение
- NULL.
- строка:69 знак:11
- + New-Item <<<< $([System.IO.Path]::GetDirectoryName($downloadPath)) -type Directory
- | Out-Null
- + CategoryInfo : InvalidData: (:) [New-Item], ParameterBindingValidationEx
- ception
- + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.
- PowerShell.Commands.NewItemCommand
- Исключение при вызове "DownloadFile" с "2" аргументами: "Исключение во время запроса Web
- Client."
- строка:71 знак:19
- + $wc.DownloadFile <<<< ($url, $downloadPath)
- + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- + FullyQualifiedErrorId : DotNetMethodException
- Installing svm to 'C:\Users\Akigami\.svm'.
- New-Item : Не удается привязать аргумент к параметру "Path", так как он представляет соб
- ой пустую строку.
- строка:84 знак:11
- + New-Item <<<< $unzipFolder -type Directory | Out-Null
- + CategoryInfo : InvalidData: (:) [New-Item], ParameterBindingValidationEx
- ception
- + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Mic
- rosoft.PowerShell.Commands.NewItemCommand
- Не удается найти перегрузку для "Combine" и количества аргументов: "4".
- строка:93 знак:50
- + $zipFolderToExtract = [System.IO.Path]::Combine <<<< ($unzipFolder, 'svm-0.4.2', 'sr
- c', 'bin')
- + CategoryInfo : NotSpecified: (:) [], MethodException
- + FullyQualifiedErrorId : MethodCountCouldNotFindBest
- Remove-Item : Не удается найти путь "D:\svm", так как он не существует.
- строка:94 знак:14
- + Remove-Item <<<< -Path $([System.IO.Path]::Combine($zipFolderToExtract, 'svm'))
- + CategoryInfo : ObjectNotFound: (D:\svm:String) [Remove-Item], ItemNotFou
- ndException
- + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemComm
- and
- Copy-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение
- NULL.
- строка:95 знак:18
- + Copy-Item -Path <<<< $zipFolderToExtract -Recurse -Destination $installPath
- + CategoryInfo : InvalidData: (:) [Copy-Item], ParameterBindingValidationE
- xception
- + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.
- PowerShell.Commands.CopyItemCommand
- Не удается найти перегрузку для "Combine" и количества аргументов: "4".
- строка:96 знак:50
- + $zipFolderToExtract = [System.IO.Path]::Combine <<<< ($unzipFolder, 'svm-0.4.2', 'sr
- c', 'shims')
- + CategoryInfo : NotSpecified: (:) [], MethodException
- + FullyQualifiedErrorId : MethodCountCouldNotFindBest
- Remove-Item : Не удается найти путь "D:\scriptcs", так как он не существует.
- строка:97 знак:14
- + Remove-Item <<<< -Path $([System.IO.Path]::Combine($zipFolderToExtract, 'scriptcs')
- )
- + CategoryInfo : ObjectNotFound: (D:\scriptcs:String) [Remove-Item], ItemN
- otFoundException
- + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemComm
- and
- Copy-Item : Не удается привязать аргумента к параметру "Path", так как он имеет значение
- NULL.
- строка:98 знак:18
- + Copy-Item -Path <<<< $zipFolderToExtract -Recurse -Destination $installPath
- + CategoryInfo : InvalidData: (:) [Copy-Item], ParameterBindingValidationE
- xception
- + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.
- PowerShell.Commands.CopyItemCommand
- Configuring path environment variables for svm.
- Произошла ошибка при вызове метода, так как [System.Object[]] не содержит метод с именем
- "Contains".
- строка:122 знак:44
- + if (!$foldersToPrependToPath.Contains <<<< ($path)) { $newPath += $path }
- + CategoryInfo : InvalidOperation: (Contains:String) [], RuntimeException
- + FullyQualifiedErrorId : MethodNotFound
- Произошла ошибка при вызове метода, так как [System.Object[]] не содержит метод с именем
- "Contains".
- строка:122 знак:44
- + if (!$foldersToPrependToPath.Contains <<<< ($path)) { $newPath += $path }
- + CategoryInfo : InvalidOperation: (Contains:String) [], RuntimeException
- + FullyQualifiedErrorId : MethodNotFound
- Successfully installed!
- Start a new console and run 'svm help' to get started.
- _____________________________________________________________________________________
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement