Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPraburaj Thiagarajan <praburaj.t@microsoft.com>2014-10-06 20:54:54 +0400
committerPraburaj Thiagarajan <praburaj.t@microsoft.com>2014-10-06 20:54:54 +0400
commit1f707c279085c62084a169217f1ddf545cfde44c (patch)
treed32bea90fee2cb224801cd7d0fe4acb81161b55b
parent93ac5c58a3d593ec8061e159ff78fd8ceff398df (diff)
parentdfea4ee8a5b3ebd1de24788c8d375a3b063c1c60 (diff)
Merge pull request #157 from aspnet/dev
Merging
-rw-r--r--NuGet.Config2
-rw-r--r--README.md22
-rw-r--r--kvm.ps1740
-rw-r--r--kvm.sh59
-rw-r--r--kvminstall.ps14
-rw-r--r--kvminstall.sh2
-rw-r--r--samples/HelloMvc/Startup.cs2
-rw-r--r--samples/HelloMvc/project.json16
-rw-r--r--samples/HelloWeb/Startup.cs2
-rw-r--r--samples/HelloWeb/project.json14
10 files changed, 455 insertions, 408 deletions
diff --git a/NuGet.Config b/NuGet.Config
index e6d5e4fce7..600a375c7e 100644
--- a/NuGet.Config
+++ b/NuGet.Config
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
- <add key="AspNetVNext" value="https://www.myget.org/F/aspnetmaster/api/v2" />
+ <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2" />
<add key="NuGet.org" value="https://nuget.org/api/v2/" />
</packageSources>
</configuration> \ No newline at end of file
diff --git a/README.md b/README.md
index b5abab8ce4..d705a8835e 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ The Home repository is the starting point for people to learn about ASP.NET vNex
ASP.NET vNext is being actively developed by the ASP.NET team assigned to the Microsoft Open Tech Hub and in collaboration with a community of open source developers. Together we are dedicated to creating the best possible platform for web development.
-The samples provided in this repo are designed to show some of the features of the new framework and to provide a starting point for further exploration. The NuGet.config file in the repo points to a MyGet feed (https://www.myget.org/F/aspnetmaster/) that has all the packages being developed. This feed is updated with each preview release. To try out the latest bits under development use the dev feed instead (https://www.myget.org/F/aspnetvnext).
+The samples provided in this repo are designed to show some of the features of the new framework and to provide a starting point for further exploration. The NuGet.config file in the repo points to a MyGet feed (https://www.myget.org/F/aspnetvnext/) that has all the packages being developed. This feed is updated with each preview release. To try out the latest bits under development use the dev feed instead (https://www.myget.org/F/aspnetvnext).
## Contents
@@ -42,7 +42,7 @@ The first thing we need to do is setup the tools required to build and run an ap
#### Windows
To install KVM on Windows run the following command, which will download and run a script that installs KVM for the current user (requires admin privileges):
```powershell
-@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.ps1'))"
+@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/kvminstall.ps1'))"
```
After the script has run open a new command prompt to start using KVM.
@@ -52,7 +52,7 @@ To install KVM and the correct version of Mono on OS X using [Homebrew](http://b
* Install [Homebrew](http://brew.sh) if it is not already installed.
* Run command `brew tap aspnet/k` to tap the ASP.NET vNext related git repositories.
- * Run command `brew install kvm` to install KVM. This also automatically install the latest KRE package from https://www.myget.org/f/aspnetmaster/api/v2 feed.
+ * Run command `brew install kvm` to install KVM. This also automatically install the latest KRE package from https://www.myget.org/f/aspnetvnext/api/v2 feed.
* Run command `source kvm.sh` on your terminal if your terminal cannot understand kvm.
#### Linux:
@@ -60,14 +60,14 @@ To install KVM and the correct version of Mono on OS X using [Homebrew](http://b
To install KVM on Linux run the following command:
```
-curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh
+curl https://raw.githubusercontent.com/aspnet/Home/dev/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh
```
Note that on Linux you need to also install [Mono](http://mono-project.com) 3.4.1 or later.
### Install the K Runtime Environment (KRE)
-Now that you have KVM setup you can install the latest version of the runtime by running the following command: ```kvm install 1.0.0-alpha3```
+Now that you have KVM setup you can install the latest version of the runtime by running the following command: ```kvm upgrade```
This command will download the specified version of the K Runtime Environment (KRE), and put it on your user profile ready to use. You are now ready to start using ASP.NET vNext!
@@ -75,13 +75,11 @@ This command will download the specified version of the K Runtime Environment (K
The samples in this repo are basic starting points for you to experiment with.
-+ [ConsoleApp](https://github.com/aspnet/Home/tree/master/samples/ConsoleApp). This is just basic console app if you want to use it as a starting point.
-+ [HelloWeb](https://github.com/aspnet/Home/tree/master/samples/HelloWeb). This is a minimal startup class that shows welcome page and static file middleware. This is mostly for you to run through the steps in the readme and make sure you have everything setup and working correctly.
-+ [HelloMvc](https://github.com/aspnet/Home/tree/master/samples/HelloMvc). This sample is a basic MVC app. It is not designed to show all the functionality of the new web stack, but to give you a starting point to play with features.
++ [ConsoleApp](https://github.com/aspnet/Home/tree/dev/samples/ConsoleApp). This is just basic console app if you want to use it as a starting point.
++ [HelloWeb](https://github.com/aspnet/Home/tree/dev/samples/HelloWeb). This is a minimal startup class that shows welcome page and static file middleware. This is mostly for you to run through the steps in the readme and make sure you have everything setup and working correctly.
++ [HelloMvc](https://github.com/aspnet/Home/tree/dev/samples/HelloMvc). This sample is a basic MVC app. It is not designed to show all the functionality of the new web stack, but to give you a starting point to play with features.
+ [MVC Music Store](https://github.com/aspnet/MusicStore) and [BugTracker](https://github.com/aspnet/BugTracker) are application samples that are both being ported to ASP.NET vNext. Each of these samples have their own separate repositories that you can look at.
-**NOTE: The samples are pinned to a specific version of the packages. If you want to try the latest builds then update the project.json and replace the last part of the version with a '\*', so '1.0.0-alpha3' becomes '1.0.0-alpha3-\*', and then run ```kpm restore``` to pull down the latest packages**
-
### Running the samples
1. Clone the Home repository
@@ -98,7 +96,7 @@ The samples in this repo are basic starting points for you to experiment with.
By default when running ASP.NET vNext applications on the Windows platform you are running on the full .NET Framework. You can switch to use the new Cloud Optimized runtime, or Core CLR, using the KVM command.
-1. Run ```kvm install 1.0.0-alpha3 -svrc50``` This command gets the latest Core CLR version of the k runtime and sets it as your default. The -svrc50 switch tells it to use Core CLR. You can use -svr50 to target desktop again.
+1. Run ```kvm upgrade -runtime CoreCLR``` This command gets the latest Core CLR version of the k runtime and sets it as your default. The `-runtime CoreCLR` switch tells it to use Core CLR. You can use `-r CLR` to target desktop again.
2. Run ```k web``` to run on WebListener.
3. The first line of your output should say "Loaded Module: klr.core45.dll" instead of "Loaded Module: klr.net45.dll"
4. The HelloWeb app should work the same as when running on the full desktop .NET Framework but now as a fully self-contained app with true side-by-side versioning support.
@@ -137,4 +135,4 @@ A description of all the repos is [here](https://github.com/aspnet/Home/wiki/Rep
## Feedback
-Check out the [contributing](https://github.com/aspnet/Home/blob/master/CONTRIBUTING.md) page to see the best places to log issues and start discussions.
+Check out the [contributing](https://github.com/aspnet/Home/blob/dev/CONTRIBUTING.md) page to see the best places to log issues and start discussions.
diff --git a/kvm.ps1 b/kvm.ps1
index 55e543e95b..2367bebffe 100644
--- a/kvm.ps1
+++ b/kvm.ps1
@@ -6,16 +6,26 @@ param(
[alias("g")][switch] $global = $false,
[alias("p")][switch] $persistent = $false,
[alias("f")][switch] $force = $false,
+ [alias("r")][string] $runtime,
[switch] $x86 = $false,
+ [switch] $amd64 = $false,
+ #deprecated
[switch] $x64 = $false,
+ #deprecated
[switch] $svr50 = $false,
+ #deprecated
[switch] $svrc50 = $false,
+ [alias("w")][switch] $wait = $false,
[alias("a")]
[string] $alias = $null,
[parameter(Position=1, ValueFromRemainingArguments=$true)]
[string[]]$args=@()
)
+$selectedArch=$null;
+$defaultArch="x86"
+$selectedRuntime=$null
+$defaultRuntime="CLR"
$userKrePath = $env:USERPROFILE + "\.kre"
$userKrePackages = $userKrePath + "\packages"
$globalKrePath = $env:ProgramFiles + "\KRE"
@@ -23,23 +33,23 @@ $globalKrePackages = $globalKrePath + "\packages"
$feed = $env:KRE_NUGET_API_URL
function String-IsEmptyOrWhitespace([string]$str) {
- return [string]::IsNullOrEmpty($str) -or $str.Trim().length -eq 0
+ return [string]::IsNullOrEmpty($str) -or $str.Trim().length -eq 0
}
if (!$feed)
{
- $feed = "https://www.myget.org/F/aspnetmaster/api/v2";
+ $feed = "https://www.myget.org/F/aspnetvnext/api/v2";
}
$scriptPath = $myInvocation.MyCommand.Definition
function Kvm-Help {
@"
-K Runtime Environment Version Manager - Build 10010
+K Runtime Environment Version Manager - Build 10017
USAGE: kvm <command> [options]
-kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>]
+kvm upgrade [-x86][-amd64] [-r|-runtime CLR|CoreCLR] [-g|-global] [-f|-force] [-proxy <ADDRESS>]
install latest KRE from feed
set 'default' alias to installed version
add KRE bin to user PATH environment variable
@@ -47,7 +57,7 @@ kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>]
-f|-force upgrade even if latest is already installed
-proxy <ADDRESS> use given address as proxy when accessing remote server
-kvm install <semver>|<alias>|<nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-alias <alias>] [-g|-global] [-f|-force]
+kvm install <semver>|<alias>|<nupkg>|latest [-x86][-amd64] [-r|-runtime CLR|CoreCLR] [-a|-alias <alias>] [-g|-global] [-f|-force]
<semver>|<alias> install requested KRE from feed
<nupkg> install requested KRE from package on local filesystem
latest install latest KRE from feed
@@ -57,7 +67,7 @@ kvm install <semver>|<alias>|<nupkg>|latest [-x86][-x64] [-svr50][-svrc50] [-a|-
-g|-global install to machine-wide location
-f|-force install even if specified version is already installed
-kvm use <semver>|<alias>|none [-x86][-x64] [-svr50][-svrc50] [-p|-persistent] [-g|-global]
+kvm use <semver>|<alias>|none [-x86][-amd64] [-r|-runtime CLR|CoreCLR] [-p|-persistent] [-g|-global]
<semver>|<alias> add KRE bin to path of current command line
none remove KRE bin from path of current command line
-p|-persistent add KRE bin to PATH environment variables persistently
@@ -72,7 +82,7 @@ kvm alias
kvm alias <alias>
display value of the specified alias
-kvm alias <alias> <semver>|<alias> [-x86][-x64] [-svr50][-svrc50]
+kvm alias <alias> <semver>|<alias> [-x86][-amd64] [-r|-runtime CLR|CoreCLR]
<alias> The name of the alias to set
<semver>|<alias> The KRE version to set the alias to. Alternatively use the version of the specified alias
@@ -83,103 +93,112 @@ kvm unalias <alias>
}
function Kvm-Global-Setup {
- If (Needs-Elevation)
- {
- $arguments = "& '$scriptPath' setup $(Requested-Switches) -persistent"
- Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
- Write-Host "Setup complete"
- Kvm-Help
- break
- }
-
- $scriptFolder = [System.IO.Path]::GetDirectoryName($scriptPath)
-
- $kvmBinPath = "$userKrePath\bin"
-
- Write-Host "Copying file $kvmBinPath\kvm.ps1"
- md $kvmBinPath -Force | Out-Null
- copy "$scriptFolder\kvm.ps1" "$kvmBinPath\kvm.ps1"
-
- Write-Host "Copying file $kvmBinPath\kvm.cmd"
- copy "$scriptFolder\kvm.cmd" "$kvmBinPath\kvm.cmd"
+ $kvmBinPath = "$userKrePath\bin"
+ If (Needs-Elevation)
+ {
+ $arguments = "-ExecutionPolicy unrestricted & '$scriptPath' setup -global -wait"
+ Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
Write-Host "Adding $kvmBinPath to process PATH"
Set-Path (Change-Path $env:Path $kvmBinPath ($kvmBinPath))
-
- Write-Host "Adding $kvmBinPath to user PATH"
- $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
- $userPath = Change-Path $userPath $kvmBinPath ($kvmBinPath)
- [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
-
Write-Host "Adding $globalKrePath;%USERPROFILE%\.kre to process KRE_HOME"
$envKreHome = $env:KRE_HOME
$envKreHome = Change-Path $envKreHome "%USERPROFILE%\.kre" ("%USERPROFILE%\.kre")
$envKreHome = Change-Path $envKreHome $globalKrePath ($globalKrePath)
$env:KRE_HOME = $envKreHome
+ Write-Host "Setup complete"
+ break
+ }
+
+ $scriptFolder = [System.IO.Path]::GetDirectoryName($scriptPath)
+
+ Write-Host "Copying file $kvmBinPath\kvm.ps1"
+ md $kvmBinPath -Force | Out-Null
+ copy "$scriptFolder\kvm.ps1" "$kvmBinPath\kvm.ps1"
+
+ Write-Host "Copying file $kvmBinPath\kvm.cmd"
+ copy "$scriptFolder\kvm.cmd" "$kvmBinPath\kvm.cmd"
+
+ Write-Host "Adding $kvmBinPath to process PATH"
+ Set-Path (Change-Path $env:Path $kvmBinPath ($kvmBinPath))
- Write-Host "Adding $globalKrePath;%USERPROFILE%\.kre to machine KRE_HOME"
- $machineKreHome = [Environment]::GetEnvironmentVariable("KRE_HOME", [System.EnvironmentVariableTarget]::Machine)
- $machineKreHome = Change-Path $machineKreHome "%USERPROFILE%\.kre" ("%USERPROFILE%\.kre")
- $machineKreHome = Change-Path $machineKreHome $globalKrePath ($globalKrePath)
- [Environment]::SetEnvironmentVariable("KRE_HOME", $machineKreHome, [System.EnvironmentVariableTarget]::Machine)
+ Write-Host "Adding $kvmBinPath to user PATH"
+ $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
+ $userPath = Change-Path $userPath $kvmBinPath ($kvmBinPath)
+ [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
- Write-Host "Press any key to continue ..."
- $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown,AllowCtrlC")
+ Write-Host "Adding $globalKrePath;%USERPROFILE%\.kre to process KRE_HOME"
+ $envKreHome = $env:KRE_HOME
+ $envKreHome = Change-Path $envKreHome "%USERPROFILE%\.kre" ("%USERPROFILE%\.kre")
+ $envKreHome = Change-Path $envKreHome $globalKrePath ($globalKrePath)
+ $env:KRE_HOME = $envKreHome
+
+ Write-Host "Adding $globalKrePath;%USERPROFILE%\.kre to machine KRE_HOME"
+ $machineKreHome = [Environment]::GetEnvironmentVariable("KRE_HOME", [System.EnvironmentVariableTarget]::Machine)
+ $machineKreHome = Change-Path $machineKreHome "%USERPROFILE%\.kre" ("%USERPROFILE%\.kre")
+ $machineKreHome = Change-Path $machineKreHome $globalKrePath ($globalKrePath)
+ [Environment]::SetEnvironmentVariable("KRE_HOME", $machineKreHome, [System.EnvironmentVariableTarget]::Machine)
}
function Kvm-Global-Upgrade {
- $persistent = $true
- $alias="default"
- If (Needs-Elevation) {
- $arguments = "& '$scriptPath' upgrade -global $(Requested-Switches)"
- Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
- break
- }
- Kvm-Global-Install "latest"
+ $persistent = $true
+ $alias="default"
+ $versionOrAlias = Kvm-Find-Latest $selectedRuntime $selectedArch
+ If (Needs-Elevation) {
+ $arguments = "-ExecutionPolicy unrestricted & '$scriptPath' install '$versionOrAlias' -global $(Requested-Switches) -wait"
+ Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
+ Kvm-Set-Global-Process-Path $versionOrAlias
+ break
+ }
+ Kvm-Install $versionOrAlias $true
}
function Kvm-Upgrade {
- $persistent = $true
- $alias="default"
- Kvm-Install "latest"
+ $persistent = $true
+ $alias="default"
+ Kvm-Install "latest" $false
}
function Add-Proxy-If-Specified {
param(
- [System.Net.WebClient] $wc
+ [System.Net.WebClient] $wc
)
- if (!$proxy) {
- $proxy = $env:http_proxy
- }
- if ($proxy) {
- $wp = New-Object System.Net.WebProxy($proxy)
- $pb = New-Object UriBuilder($proxy)
- if (!$pb.UserName) {
- $wp.Credentials = [System.Net.CredentialCache]::DefaultCredentials
- } else {
- $wp.Credentials = New-Object System.Net.NetworkCredential($pb.UserName, $pb.Password)
- }
- $wc.Proxy = $wp
+ if (!$proxy) {
+ $proxy = $env:http_proxy
+ }
+ if ($proxy) {
+ $wp = New-Object System.Net.WebProxy($proxy)
+ $pb = New-Object UriBuilder($proxy)
+ if (!$pb.UserName) {
+ $wp.Credentials = [System.Net.CredentialCache]::DefaultCredentials
+ } else {
+ $wp.Credentials = New-Object System.Net.NetworkCredential($pb.UserName, $pb.Password)
}
+ $wc.Proxy = $wp
+ }
}
function Kvm-Find-Latest {
param(
- [string] $platform,
- [string] $architecture
+ [string] $platform,
+ [string] $architecture
)
- Write-Host "Determining latest version"
+ Write-Host "Determining latest version"
- $url = "$feed/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
+ $url = "$feed/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
- $wc = New-Object System.Net.WebClient
- $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
- Add-Proxy-If-Specified($wc)
- [xml]$xml = $wc.DownloadString($url)
+ $wc = New-Object System.Net.WebClient
+ $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
+ Add-Proxy-If-Specified($wc)
+ [xml]$xml = $wc.DownloadString($url)
- $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml
+ $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml
+
+ if (String-IsEmptyOrWhitespace($version)) {
+ throw "There are no packages for platform '$platform', architecture '$architecture' in the feed '$feed'"
+ }
- return $version
+ return $version
}
function Do-Kvm-Download {
@@ -187,45 +206,45 @@ param(
[string] $kreFullName,
[string] $packagesFolder
)
- $parts = $kreFullName.Split(".", 2)
+ $parts = $kreFullName.Split(".", 2)
- $url = "$feed/package/" + $parts[0] + "/" + $parts[1]
- $kreFolder = Join-Path $packagesFolder $kreFullName
- $kreFile = Join-Path $kreFolder "$kreFullName.nupkg"
+ $url = "$feed/package/" + $parts[0] + "/" + $parts[1]
+ $kreFolder = Join-Path $packagesFolder $kreFullName
+ $kreFile = Join-Path $kreFolder "$kreFullName.nupkg"
- If (Test-Path $kreFolder) {
- if($force)
- {
- rm $kreFolder -Recurse -Force
- } else {
- Write-Host "$kreFullName already installed."
- return;
- }
+ If (Test-Path $kreFolder) {
+ if($force)
+ {
+ rm $kreFolder -Recurse -Force
+ } else {
+ Write-Host "$kreFullName already installed."
+ return;
}
+ }
- Write-Host "Downloading" $kreFullName "from $feed"
+ Write-Host "Downloading" $kreFullName "from $feed"
- #Downloading to temp location
- $kreTempDownload = Join-Path $packagesFolder "temp"
- $tempKreFile = Join-Path $kreTempDownload "$kreFullName.nupkg"
+ #Downloading to temp location
+ $kreTempDownload = Join-Path $packagesFolder "temp"
+ $tempKreFile = Join-Path $kreTempDownload "$kreFullName.nupkg"
- if(Test-Path $kreTempDownload) {
- del "$kreTempDownload\*" -recurse
- } else {
- md $kreTempDownload -Force | Out-Null
- }
+ if(Test-Path $kreTempDownload) {
+ del "$kreTempDownload\*" -recurse
+ } else {
+ md $kreTempDownload -Force | Out-Null
+ }
- $wc = New-Object System.Net.WebClient
- $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
- Add-Proxy-If-Specified($wc)
- $wc.DownloadFile($url, $tempKreFile)
+ $wc = New-Object System.Net.WebClient
+ $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
+ Add-Proxy-If-Specified($wc)
+ $wc.DownloadFile($url, $tempKreFile)
- Do-Kvm-Unpack $tempKreFile $kreTempDownload
+ Do-Kvm-Unpack $tempKreFile $kreTempDownload
- md $kreFolder -Force | Out-Null
- Write-Host "Installing to $kreFolder"
- mv "$kreTempDownload\*" $kreFolder
- Remove-Item "$kreTempDownload" -Force | Out-Null
+ md $kreFolder -Force | Out-Null
+ Write-Host "Installing to $kreFolder"
+ mv "$kreTempDownload\*" $kreFolder
+ Remove-Item "$kreTempDownload" -Force | Out-Null
}
function Do-Kvm-Unpack {
@@ -233,111 +252,107 @@ param(
[string] $kreFile,
[string] $kreFolder
)
- Write-Host "Unpacking to" $kreFolder
- try {
- #Shell will not recognize nupkg as a zip and throw, so rename it to zip
- $kreZip = [System.IO.Path]::ChangeExtension($kreFile, "zip")
- Rename-Item $kreFile $kreZip
- #Use the shell to uncompress the nupkg
- $shell_app=new-object -com shell.application
- $zip_file = $shell_app.namespace($kreZip)
- $destination = $shell_app.namespace($kreFolder)
- $destination.Copyhere($zip_file.items(), 0x14) #0x4 = don't show UI, 0x10 = overwrite files
- }
- finally {
- #make it a nupkg again
- Rename-Item $kreZip $kreFile
- }
+ Write-Host "Unpacking to" $kreFolder
+ try {
+ #Shell will not recognize nupkg as a zip and throw, so rename it to zip
+ $kreZip = [System.IO.Path]::ChangeExtension($kreFile, "zip")
+ Rename-Item $kreFile $kreZip
+ #Use the shell to uncompress the nupkg
+ $shell_app=new-object -com shell.application
+ $zip_file = $shell_app.namespace($kreZip)
+ $destination = $shell_app.namespace($kreFolder)
+ $destination.Copyhere($zip_file.items(), 0x14) #0x4 = don't show UI, 0x10 = overwrite files
+ }
+ finally {
+ #make it a nupkg again
+ Rename-Item $kreZip $kreFile
+ }
- If (Test-Path ($kreFolder + "\[Content_Types].xml")) {
- Remove-Item ($kreFolder + "\[Content_Types].xml")
- }
- If (Test-Path ($kreFolder + "\_rels\")) {
- Remove-Item ($kreFolder + "\_rels\") -Force -Recurse
- }
- If (Test-Path ($kreFolder + "\package\")) {
- Remove-Item ($kreFolder + "\package\") -Force -Recurse
- }
+ If (Test-Path ($kreFolder + "\[Content_Types].xml")) {
+ Remove-Item ($kreFolder + "\[Content_Types].xml")
+ }
+ If (Test-Path ($kreFolder + "\_rels\")) {
+ Remove-Item ($kreFolder + "\_rels\") -Force -Recurse
+ }
+ If (Test-Path ($kreFolder + "\package\")) {
+ Remove-Item ($kreFolder + "\package\") -Force -Recurse
+ }
}
-function Kvm-Global-Install {
+function Kvm-Install {
param(
- [string] $versionOrAlias
+ [string] $versionOrAlias,
+ [boolean] $isGlobal
)
- If (Needs-Elevation) {
- $arguments = "& '$scriptPath' install -global $versionOrAlias $(Requested-Switches)"
- Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
- Kvm-Global-Use $versionOrAlias
- break
+ if ($versionOrAlias -eq "latest") {
+ $versionOrAlias = Kvm-Find-Latest (Requested-Platform $defaultRuntime) (Requested-Architecture $defaultArch)
+ }
+
+ if ($versionOrAlias.EndsWith(".nupkg")) {
+ $kreFullName = [System.IO.Path]::GetFileNameWithoutExtension($versionOrAlias)
+ } else {
+ $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ }
+
+ if ($isGlobal) {
+ if (Needs-Elevation) {
+ $arguments = "-ExecutionPolicy unrestricted & '$scriptPath' install '$versionOrAlias' -global $(Requested-Switches) -wait"
+ Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
+ Kvm-Set-Global-Process-Path $versionOrAlias
+ break
}
+ $packageFolder = $globalKrePackages
+ } else {
+ $packageFolder = $userKrePackages
+ }
+
+ if ($versionOrAlias.EndsWith(".nupkg")) {
+ Set-Variable -Name "selectedArch" -Value (Package-Arch $kreFullName) -Scope Script
+ Set-Variable -Name "selectedRuntime" -Value (Package-Platform $kreFullName) -Scope Script
+
+ $kreFolder = "$packageFolder\$kreFullName"
+ $folderExists = Test-Path $kreFolder
- if ($versionOrAlias -eq "latest") {
- $versionOrAlias = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
+ if ($folderExists -and $force) {
+ del $kreFolder -Recurse -Force
+ $folderExists = $false;
}
- $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ if ($folderExists) {
+ Write-Host "Target folder '$kreFolder' already exists"
+ } else {
+ $tempUnpackFolder = Join-Path $packageFolder "temp"
+ $tempKreFile = Join-Path $tempUnpackFolder "$kreFullName.nupkg"
- Do-Kvm-Download $kreFullName $globalKrePackages
- Kvm-Use $versionOrAlias
- if (!$(String-IsEmptyOrWhitespace($alias))) {
- Kvm-Alias-Set $alias $versionOrAlias
+ if(Test-Path $tempUnpackFolder) {
+ del "$tempUnpackFolder\*" -recurse
+ } else {
+ md $tempUnpackFolder -Force | Out-Null
+ }
+ copy $versionOrAlias $tempKreFile
+
+ Do-Kvm-Unpack $tempKreFile $tempUnpackFolder
+ md $kreFolder -Force | Out-Null
+ Write-Host "Installing to $kreFolder"
+ mv "$tempUnpackFolder\*" $kreFolder
+ Remove-Item "$tempUnpackFolder" -Force | Out-Null
}
-}
-function Kvm-Install {
-param(
- [string] $versionOrAlias
-)
- if ($versionOrAlias.EndsWith(".nupkg"))
- {
- $kreFullName = [System.IO.Path]::GetFileNameWithoutExtension($versionOrAlias)
- $kreFolder = "$userKrePackages\$kreFullName"
- $folderExists = Test-Path $kreFolder
-
- if($folderExists -and $force) {
- del $kreFolder -Recurse -Force
- $folderExists = $false;
- }
-
- if($folderExists) {
- Write-Host "Target folder '$kreFolder' already exists"
- } else {
- $tempUnpackFolder = Join-Path $userKrePackages "temp"
- $tempKreFile = Join-Path $tempUnpackFolder "$kreFullName.nupkg"
-
- if(Test-Path $tempUnpackFolder) {
- del "$tempUnpackFolder\*" -recurse
- } else {
- md $tempUnpackFolder -Force | Out-Null
- }
- copy $versionOrAlias $tempKreFile
-
- Do-Kvm-Unpack $tempKreFile $tempUnpackFolder
- md $kreFolder -Force | Out-Null
- Write-Host "Installing to $kreFolder"
- mv "$tempUnpackFolder\*" $kreFolder
- Remove-Item "$tempUnpackFolder" -Force | Out-Null
- }
-
- $packageVersion = Package-Version $kreFullName
- Kvm-Use $packageVersion
- if (!$(String-IsEmptyOrWhitespace($alias))) {
- Kvm-Alias-Set $alias $packageVersion
- }
+ $packageVersion = Package-Version $kreFullName
+
+ Kvm-Use $packageVersion
+ if (!$(String-IsEmptyOrWhitespace($alias))) {
+ Kvm-Alias-Set $alias $packageVersion
}
- else
- {
- if ($versionOrAlias -eq "latest") {
- $versionOrAlias = Kvm-Find-Latest (Requested-Platform "svr50") (Requested-Architecture "x86")
- }
- $kreFullName = Requested-VersionOrAlias $versionOrAlias
-
- Do-Kvm-Download $kreFullName $userKrePackages
- Kvm-Use $versionOrAlias
- if (!$(String-IsEmptyOrWhitespace($alias))) {
- Kvm-Alias-Set $alias $versionOrAlias
- }
+ }
+ else
+ {
+ Do-Kvm-Download $kreFullName $packageFolder
+ Kvm-Use $versionOrAlias
+ if (!$(String-IsEmptyOrWhitespace($alias))) {
+ Kvm-Alias-Set "$alias" $versionOrAlias
}
+ }
}
function Kvm-List {
@@ -373,7 +388,7 @@ filter List-Parts {
$active = $true
}
}
-
+
$fullAlias=""
$delim=""
@@ -400,100 +415,114 @@ function Kvm-Global-Use {
param(
[string] $versionOrAlias
)
- If (Needs-Elevation) {
- $arguments = "& '$scriptPath' use -global $versionOrAlias $(Requested-Switches)"
- if ($persistent) {
- $arguments = $arguments + " -persistent"
- }
- Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
- break
- }
+ If (Needs-Elevation) {
+ $arguments = "-ExecutionPolicy unrestricted & '$scriptPath' use '$versionOrAlias' -global $(Requested-Switches) -wait"
+ Start-Process "$psHome\powershell.exe" -Verb runAs -ArgumentList $arguments -Wait
+ Kvm-Set-Global-Process-Path $versionOrAlias
+ break
+ }
- if ($versionOrAlias -eq "none") {
- Write-Host "Removing KRE from process PATH"
- Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
+ Kvm-Set-Global-Process-Path "$versionOrAlias"
- if ($persistent) {
- Write-Host "Removing KRE from machine PATH"
- $machinePath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
- $machinePath = Change-Path $machinePath "" ($globalKrePackages, $userKrePackages)
- [Environment]::SetEnvironmentVariable("Path", $machinePath, [System.EnvironmentVariableTarget]::Machine)
- }
- return;
+ if ($versionOrAlias -eq "none") {
+ if ($persistent) {
+ Write-Host "Removing KRE from machine PATH"
+ $machinePath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
+ $machinePath = Change-Path $machinePath "" ($globalKrePackages, $userKrePackages)
+ [Environment]::SetEnvironmentVariable("Path", $machinePath, [System.EnvironmentVariableTarget]::Machine)
}
+ return;
+ }
- $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ $kreFullName = Requested-VersionOrAlias "$versionOrAlias"
+ $kreBin = Locate-KreBinFromFullName $kreFullName
+ if ($kreBin -eq $null) {
+ Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
+ return
+ }
- $kreBin = Locate-KreBinFromFullName $kreFullName
- if ($kreBin -eq $null) {
- Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
- return
- }
+ if ($persistent) {
+ Write-Host "Adding $kreBin to machine PATH"
+ $machinePath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
+ $machinePath = Change-Path $machinePath $kreBin ($globalKrePackages, $userKrePackages)
+ [Environment]::SetEnvironmentVariable("Path", $machinePath, [System.EnvironmentVariableTarget]::Machine)
+ }
+}
- Write-Host "Adding" $kreBin "to process PATH"
- Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
+function Kvm-Set-Global-Process-Path {
+param(
+ [string] $versionOrAlias
+)
+ if ($versionOrAlias -eq "none") {
+ Write-Host "Removing KRE from process PATH"
+ Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
+ return
+ }
- if ($persistent) {
- Write-Host "Adding $kreBin to machine PATH"
- $machinePath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
- $machinePath = Change-Path $machinePath $kreBin ($globalKrePackages, $userKrePackages)
- [Environment]::SetEnvironmentVariable("Path", $machinePath, [System.EnvironmentVariableTarget]::Machine)
- }
+ $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ $kreBin = Locate-KreBinFromFullName $kreFullName
+ if ($kreBin -eq $null) {
+ Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
+ return
+ }
+
+ Write-Host "Adding" $kreBin "to process PATH"
+ Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
}
function Kvm-Use {
param(
[string] $versionOrAlias
)
- if ($versionOrAlias -eq "none") {
- Write-Host "Removing KRE from process PATH"
- Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
-
- if ($persistent) {
- Write-Host "Removing KRE from user PATH"
- $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
- $userPath = Change-Path $userPath "" ($globalKrePackages, $userKrePackages)
- [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
- }
- return;
+ if ($versionOrAlias -eq "none") {
+ Write-Host "Removing KRE from process PATH"
+ Set-Path (Change-Path $env:Path "" ($globalKrePackages, $userKrePackages))
+
+ if ($persistent) {
+ Write-Host "Removing KRE from user PATH"
+ $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
+ $userPath = Change-Path $userPath "" ($globalKrePackages, $userKrePackages)
+ [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
}
+ return;
+ }
- $kreFullName = Requested-VersionOrAlias $versionOrAlias
+ $kreFullName = Requested-VersionOrAlias $versionOrAlias
- $kreBin = Locate-KreBinFromFullName $kreFullName
- if ($kreBin -eq $null) {
- Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
- return
- }
+ $kreBin = Locate-KreBinFromFullName $kreFullName
+ if ($kreBin -eq $null) {
+ Write-Host "Cannot find $kreFullName, do you need to run 'kvm install $versionOrAlias'?"
+ return
+ }
- Write-Host "Adding" $kreBin "to process PATH"
- Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
+ Write-Host "Adding" $kreBin "to process PATH"
+ Set-Path (Change-Path $env:Path $kreBin ($globalKrePackages, $userKrePackages))
- if ($persistent) {
- Write-Host "Adding $kreBin to user PATH"
- $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
- $userPath = Change-Path $userPath $kreBin ($globalKrePackages, $userKrePackages)
- [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
- }
+ if ($persistent) {
+ Write-Host "Adding $kreBin to user PATH"
+ $userPath = [Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)
+ $userPath = Change-Path $userPath $kreBin ($globalKrePackages, $userKrePackages)
+ [Environment]::SetEnvironmentVariable("Path", $userPath, [System.EnvironmentVariableTarget]::User)
+ }
}
function Kvm-Alias-List {
- md ($userKrePath + "\alias\") -Force | Out-Null
+ md ($userKrePath + "\alias\") -Force | Out-Null
- Get-ChildItem ($userKrePath + "\alias\") | Select @{label='Alias';expression={$_.BaseName}}, @{label='Name';expression={Get-Content $_.FullName }} | Format-Table -AutoSize
+ Get-ChildItem ($userKrePath + "\alias\") | Select @{label='Alias';expression={$_.BaseName}}, @{label='Name';expression={Get-Content $_.FullName }} | Format-Table -AutoSize
}
function Kvm-Alias-Get {
param(
[string] $name
)
- md ($userKrePath + "\alias\") -Force | Out-Null
- $aliasFilePath=$userKrePath + "\alias\" + $name + ".txt"
- if (!(Test-Path $aliasFilePath)) {
- Write-Host "Alias '$name' does not exist"
- } else {
- Write-Host "Alias '$name' is set to" (Get-Content ($userKrePath + "\alias\" + $name + ".txt"))
- }
+ md ($userKrePath + "\alias\") -Force | Out-Null
+ $aliasFilePath=$userKrePath + "\alias\" + $name + ".txt"
+ if (!(Test-Path $aliasFilePath)) {
+ Write-Host "Alias '$name' does not exist"
+ } else {
+ Write-Host "Alias '$name' is set to" (Get-Content ($userKrePath + "\alias\" + $name + ".txt"))
+ }
}
function Kvm-Alias-Set {
@@ -501,25 +530,25 @@ param(
[string] $name,
[string] $value
)
- $kreFullName = Requested-VersionOrAlias $value
- $aliasFilePath = $userKrePath + "\alias\" + $name + ".txt"
- $action = if (Test-Path $aliasFilePath) { "Updating" } else { "Setting" }
- Write-Host "$action alias '$name' to '$kreFullName'"
- md ($userKrePath + "\alias\") -Force | Out-Null
- $kreFullName | Out-File ($aliasFilePath) ascii
+ $kreFullName = Requested-VersionOrAlias $value
+ $aliasFilePath = $userKrePath + "\alias\" + $name + ".txt"
+ $action = if (Test-Path $aliasFilePath) { "Updating" } else { "Setting" }
+ Write-Host "$action alias '$name' to '$kreFullName'"
+ md ($userKrePath + "\alias\") -Force | Out-Null
+ $kreFullName | Out-File ($aliasFilePath) ascii
}
function Kvm-Unalias {
param(
[string] $name
)
- $aliasPath=$userKrePath + "\alias\" + $name + ".txt"
- if (Test-Path -literalPath "$aliasPath") {
- Write-Host "Removing alias $name"
- Remove-Item -literalPath $aliasPath
- } else {
- Write-Host "Cannot remove alias, '$name' is not a valid alias name"
- }
+ $aliasPath=$userKrePath + "\alias\" + $name + ".txt"
+ if (Test-Path -literalPath "$aliasPath") {
+ Write-Host "Removing alias $name"
+ Remove-Item -literalPath $aliasPath
+ } else {
+ Write-Host "Cannot remove alias, '$name' is not a valid alias name"
+ }
}
function Locate-KreBinFromFullName() {
@@ -544,58 +573,57 @@ function Package-Version() {
param(
[string] $kreFullName
)
- return $kreFullName -replace '[^.]*.(.*)', '$1'
+ return $kreFullName -replace '[^.]*.(.*)', '$1'
+}
+
+function Package-Platform() {
+param(
+ [string] $kreFullName
+)
+ return $kreFullName -replace 'KRE-([^-]*).*', '$1'
}
+function Package-Arch() {
+param(
+ [string] $kreFullName
+)
+ return $kreFullName -replace 'KRE-[^-]*-([^.]*).*', '$1'
+}
+
+
function Requested-VersionOrAlias() {
param(
[string] $versionOrAlias
)
- If (Test-Path ($userKrePath + "\alias\" + $versionOrAlias + ".txt")) {
- $aliasValue = Get-Content ($userKrePath + "\alias\" + $versionOrAlias + ".txt")
- $parts = $aliasValue.Split('.', 2)
- $pkgVersion = $parts[1]
- $parts =$parts[0].Split('-', 3)
- $pkgPlatform = Requested-Platform $parts[1]
- $pkgArchitecture = Requested-Architecture $parts[2]
- } else {
- $pkgVersion = $versionOrAlias
- $pkgPlatform = Requested-Platform "svr50"
- $pkgArchitecture = Requested-Architecture "x86"
- }
- return "KRE-" + $pkgPlatform + "-" + $pkgArchitecture + "." + $pkgVersion
+ If (Test-Path ($userKrePath + "\alias\" + $versionOrAlias + ".txt")) {
+ $aliasValue = Get-Content ($userKrePath + "\alias\" + $versionOrAlias + ".txt")
+ $parts = $aliasValue.Split('.', 2)
+ $pkgVersion = $parts[1]
+ $parts =$parts[0].Split('-', 3)
+ $pkgPlatform = Requested-Platform $parts[1]
+ $pkgArchitecture = Requested-Architecture $parts[2]
+ } else {
+ $pkgVersion = $versionOrAlias
+ $pkgPlatform = Requested-Platform $defaultRuntime
+ $pkgArchitecture = Requested-Architecture $defaultArch
+ }
+ return "KRE-" + $pkgPlatform + "-" + $pkgArchitecture + "." + $pkgVersion
}
function Requested-Platform() {
param(
[string] $default
)
- if ($svr50 -and $svrc50) {
- Throw "This command cannot accept both -svr50 and -svrc50"
- }
- if ($svr50) {
- return "svr50"
- }
- if ($svrc50) {
- return "svrc50"
- }
- return $default
+ if (!(String-IsEmptyOrWhitespace($selectedRuntime))) {return $selectedRuntime}
+ return $default
}
function Requested-Architecture() {
param(
[string] $default
)
- if ($x86 -and $x64) {
- Throw "This command cannot accept both -x86 and -x64"
- }
- if ($x86) {
- return "x86"
- }
- if ($x64) {
- return "x64"
- }
- return $default
+ if (!(String-IsEmptyOrWhitespace($selectedArch))) {return $selectedArch}
+ return $default
}
function Change-Path() {
@@ -604,19 +632,19 @@ param(
[string] $prependPath,
[string[]] $removePaths
)
- $newPath = $prependPath
- foreach($portion in $existingPaths.Split(';')) {
- $skip = $portion -eq ""
- foreach($removePath in $removePaths) {
- if ($portion.StartsWith($removePath)) {
- $skip = $true
- }
- }
- if (!$skip) {
- $newPath = $newPath + ";" + $portion
+ $newPath = $prependPath
+ foreach($portion in $existingPaths.Split(';')) {
+ $skip = $portion -eq ""
+ foreach($removePath in $removePaths) {
+ if ($portion.StartsWith($removePath)) {
+ $skip = $true
}
}
- return $newPath
+ if (!$skip) {
+ $newPath = $newPath + ";" + $portion
+ }
+ }
+ return $newPath
}
function Set-Path() {
@@ -631,35 +659,70 @@ SET "PATH=$newPath"
}
function Needs-Elevation() {
- $user = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
- $elevated = $user.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
- return -NOT $elevated
+ $user = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
+ $elevated = $user.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
+ return -NOT $elevated
}
function Requested-Switches() {
$arguments = ""
if ($x86) {$arguments = "$arguments -x86"}
+ if ($amd64) {$arguments = "$arguments -amd64"}
+ #deprecated
if ($x64) {$arguments = "$arguments -x64"}
- if ($svr50) {$arguments = "$arguments -svr50"}
- if ($svrc50) {$arguments = "$arguments -svrc50"}
+ if ($selectedRuntime) {$arguments = "$arguments -runtime $selectedRuntime"}
+ if ($persistent) {$arguments = "$arguments -persistent"}
+ if ($force) {$arguments = "$arguments -force"}
+ if (!$(String-IsEmptyOrWhitespace($alias))) {$arguments = "$arguments -alias '$alias'"}
return $arguments
}
- try {
- if ($global) {
+function Validate-And-Santitise-Switches()
+{
+ if ($svr50 -and $runtime) {throw "You cannot select both the -runtime switch and the -svr50 runtimes"}
+ if ($svrc50 -and $runtime) {throw "You cannot select both the -runtime switch and the -svrc50 runtimes"}
+ if ($x86 -and $amd64) {throw "You cannot select both x86 and amd64 architectures"}
+ if ($x86 -and $x64) {throw "You cannot select both x86 and x64 architectures"}
+ if ($x64 -and $amd64) {throw "You cannot select both x64 and amd64 architectures"}
+
+ if ($runtime) {
+ $validRuntimes = "CoreCLR", "CLR", "svr50", "svrc50"
+ $match = $validRuntimes | ? { $_ -like $runtime } | Select -First 1
+ if (!$match) {throw "'$runtime' is not a valid runtime"}
+ Set-Variable -Name "selectedRuntime" -Value $match -Scope Script
+ } elseif ($svr50) {
+ Write-Host "Warning: -svr50 is deprecated, use -runtime CLR for new packages."
+ Set-Variable -Name "selectedRuntime" -Value "svr50" -Scope Script
+ } elseif ($svrc50) {
+ Write-Host "Warning: -svrc50 is deprecated, use -runtime CoreCLR for new packages."
+ Set-Variable -Name "selectedRuntime" -Value "svrc50" -Scope Script
+ }
+
+ if ($x64) {
+ Write-Host "Warning: -x64 is deprecated, use -amd64 for new packages."
+ Set-Variable -Name "selectedArch" -Value "x64" -Scope Script
+ } elseif ($amd64) {
+ Set-Variable -Name "selectedArch" -Value "amd64" -Scope Script
+ } elseif ($x86) {
+ Set-Variable -Name "selectedArch" -Value "x86" -Scope Script
+ }
+}
+
+try {
+ Validate-And-Santitise-Switches
+ if ($global) {
switch -wildcard ($command + " " + $args.Count) {
"setup 0" {Kvm-Global-Setup}
"upgrade 0" {Kvm-Global-Upgrade}
- "install 1" {Kvm-Global-Install $args[0]}
-# "list 0" {Kvm-Global-List}
+ "install 1" {Kvm-Install $args[0] $true}
"use 1" {Kvm-Global-Use $args[0]}
- default {Write-Host 'Unknown command, or global switch not supported'; Kvm-Help;}
+ default {throw "Unknown command, or global switch not supported"};
}
- } else {
+ } else {
switch -wildcard ($command + " " + $args.Count) {
"setup 0" {Kvm-Global-Setup}
"upgrade 0" {Kvm-Upgrade}
- "install 1" {Kvm-Install $args[0]}
+ "install 1" {Kvm-Install $args[0] $false}
"list 0" {Kvm-List}
"use 1" {Kvm-Use $args[0]}
"alias 0" {Kvm-Alias-List}
@@ -668,10 +731,15 @@ function Requested-Switches() {
"unalias 1" {Kvm-Unalias $args[0]}
"help 0" {Kvm-Help}
" 0" {Kvm-Help}
- default {Write-Host 'Unknown command'; Kvm-Help;}
+ default {throw "Unknown command"};
}
- }
- }
- catch {
- Write-Host $_ -ForegroundColor Red ;
}
+}
+catch {
+ Write-Host $_ -ForegroundColor Red ;
+ Write-Host "Type 'kvm help' for help on how to use kvm."
+}
+if ($wait) {
+ Write-Host "Press any key to continue ..."
+ $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown,AllowCtrlC")
+}
diff --git a/kvm.sh b/kvm.sh
index ce862d203c..c3a222cee1 100644
--- a/kvm.sh
+++ b/kvm.sh
@@ -14,23 +14,19 @@ if [ -z "$KRE_USER_HOME" ]; then
fi
KRE_USER_PACKAGES="$KRE_USER_HOME/packages"
-KRE_MONO45=
-KRE_X86=
-KRE_X64=
if [ -z "$KRE_FEED" ]; then
- KRE_FEED="https://www.myget.org/F/aspnetmaster/api/v2"
+ KRE_FEED="https://www.myget.org/F/aspnetvnext/api/v2"
fi
_kvm_find_latest() {
- local platform="mono45"
- local architecture="x86"
+ local platform="Mono"
if ! _kvm_has "curl"; then
echo 'KVM Needs curl to proceed.' >&2;
return 1
fi
- local url="$KRE_FEED/GetUpdates()?packageIds=%27KRE-$platform-$architecture%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
+ local url="$KRE_FEED/GetUpdates()?packageIds=%27KRE-$platform%27&versions=%270.0%27&includePrerelease=true&includeAllVersions=false"
xml="$(curl $url 2>/dev/null)"
echo $xml | grep \<[a-zA-Z]:Version\>* >> /dev/null || return 1
version="$(echo $xml | sed 's/.*<[a-zA-Z]:Version>\([^<]*\).*/\1/')"
@@ -61,7 +57,7 @@ _kvm_package_name() {
_kvm_package_runtime() {
local kreFullName="$1"
- echo "$kreFullName" | sed "s/KRE-\([^-]*\).*/\1/"
+ echo "$kreFullName" | sed "s/KRE-\([^.-]*\).*/\1/"
}
_kvm_download() {
@@ -93,6 +89,7 @@ _kvm_download() {
[[ $httpResult != "302" && $httpResult != "200" ]] && echo "HTTP Error $httpResult fetching $kreFullName from $KRE_FEED" && return 1
_kvm_unpack $kreFile $kreFolder
+ return $?
}
_kvm_unpack() {
@@ -119,23 +116,6 @@ _kvm_unpack() {
-exec sh -c "head -c 11 {} | grep '/bin/bash' > /dev/null" \; -print | xargs chmod 775
}
-# This is not currently required. Placeholder for the case when we have multiple platforms (ie if we bundle mono)
-_kvm_requested_platform() {
- local default=$1
- [[ -z $KRE_MONO45 ]] && echo "mono45" && return
- echo $default
-}
-
-# This is not currently required. Placeholder for the case where we have multiple architectures (ie if we bundle mono)
-_kvm_requested_architecture() {
- local default=$1
-
- [[ -n $KRE_X86 && -n $KRE_X64 ]] && echo "This command cannot accept both -x86 and -x64" && return 1
- [[ -z $KRE_X86 ]] && echo "x86" && return
- [[ -z $KRE_X64 ]] && echo "x64" && return
- echo $default
-}
-
_kvm_requested_version_or_alias() {
local versionOrAlias="$1"
@@ -143,14 +123,13 @@ _kvm_requested_version_or_alias() {
local kreFullName=$(cat "$KRE_USER_HOME/alias/$versionOrAlias.alias")
local pkgName=$(echo $kreFullName | sed "s/\([^.]*\).*/\1/")
local pkgVersion=$(echo $kreFullName | sed "s/[^.]*.\(.*\)/\1/")
- local pkgPlatform=$(_kvm_requested_platform $(echo "$pkgName" | sed "s/KRE-\([^-]*\).*/\1/"))
- local pkgArchitecture=$(_kvm_requested_architecture $(echo "$pkgName" | sed "s/.*-.*-\([^-]*\).*/\1/"))
+ local pkgPlatform=$(echo "$pkgName" | sed "s/KRE-\([^.-]*\).*/\1/")
else
local pkgVersion=$versionOrAlias
- local pkgPlatform=$(_kvm_requested_platform "mono45")
- local pkgArchitecture=$(_kvm_requested_architecture "x86")
+ local pkgPlatform="Mono"
fi
- echo "KRE-$pkgPlatform-$pkgArchitecture.$pkgVersion"
+
+ echo "KRE-$pkgPlatform.$pkgVersion"
}
# This will be more relevant if we support global installs
@@ -169,7 +148,7 @@ kvm()
case $1 in
"help" )
echo ""
- echo "K Runtime Environment Version Manager - Build 10010"
+ echo "K Runtime Environment Version Manager - Build 10017"
echo ""
echo "USAGE: kvm <command> [options]"
echo ""
@@ -235,7 +214,7 @@ kvm()
done
if [[ "$versionOrAlias" == "latest" ]]; then
echo "Determining latest version"
- versionOrAlias=$(_kvm_find_latest mono45 x86)
+ versionOrAlias=$(_kvm_find_latest)
[[ $? == 1 ]] && echo "Error: Could not find latest version from feed $KRE_FEED" && return 1
echo "Latest version is $versionOrAlias"
fi
@@ -251,6 +230,7 @@ kvm()
mkdir "$kreFolder" > /dev/null 2>&1
cp -a "$versionOrAlias" "$kreFile"
_kvm_unpack "$kreFile" "$kreFolder"
+ [[ $? == 1 ]] && return 1
fi
kvm use "$kreVersion" "$persistent"
[[ -n $alias ]] && kvm alias "$alias" "$kreVersion"
@@ -258,7 +238,7 @@ kvm()
local kreFullName="$(_kvm_requested_version_or_alias $versionOrAlias)"
local kreFolder="$KRE_USER_PACKAGES/$kreFullName"
_kvm_download "$kreFullName" "$kreFolder"
- [[ $? == 1 ]] && return
+ [[ $? == 1 ]] && return 1
kvm use "$versionOrAlias" "$persistent"
[[ -n $alias ]] && kvm alias "$alias" "$versionOrAlias"
fi
@@ -379,9 +359,9 @@ kvm()
let i+=1
done
- local formatString="%-6s %-20s %-7s %-12s %-20s %s\n"
- printf "$formatString" "Active" "Version" "Runtime" "Architecture" "Location" "Alias"
- printf "$formatString" "------" "-------" "-------" "------------" "--------" "-----"
+ local formatString="%-6s %-20s %-7s %-20s %s\n"
+ printf "$formatString" "Active" "Version" "Runtime" "Location" "Alias"
+ printf "$formatString" "------" "-------" "-------" "--------" "-----"
local formattedHome=`(echo $KRE_USER_PACKAGES | sed s=$HOME=~=g)`
for f in $(find $KRE_USER_PACKAGES/* -name "$searchGlob" -type d -prune -exec basename {} \;); do
@@ -393,14 +373,15 @@ kvm()
local alias=""
local delim=""
for i in "${arr[@]}"; do
- temp="KRE-$pkgName-x86.$pkgVersion"
- if [[ ${i#*/} == $temp ]]; then
+ temp="KRE-$pkgName.$pkgVersion"
+ temp2="KRE-$pkgName-x86.$pkgVersion"
+ if [[ ${i#*/} == $temp || ${i#*/} == $temp2 ]]; then
alias+="$delim${i%/*}"
delim=", "
fi
done
- printf "$formatString" "$active" "$pkgVersion" "$pkgName" "x86" "$formattedHome" "$alias"
+ printf "$formatString" "$active" "$pkgVersion" "$pkgName" "$formattedHome" "$alias"
[[ $# == 2 ]] && echo "" && return 0
done
diff --git a/kvminstall.ps1 b/kvminstall.ps1
index 22c2422627..d269318876 100644
--- a/kvminstall.ps1
+++ b/kvminstall.ps1
@@ -8,8 +8,8 @@ if (!(Test-Path $tempPath)) { md $tempPath | Out-Null }
$webClient = New-Object System.Net.WebClient
Write-Host "Downloading KVM.ps1 to $kvmPs1Path"
-$webClient.DownloadFile('https://raw.githubusercontent.com/aspnet/Home/master/kvm.ps1', $kvmPs1Path)
+$webClient.DownloadFile('https://raw.githubusercontent.com/aspnet/Home/dev/kvm.ps1', $kvmPs1Path)
Write-Host "Downloading KVM.cmd to $kvmCmdPath"
-$webClient.DownloadFile('https://raw.githubusercontent.com/aspnet/Home/master/kvm.cmd', $kvmCmdPath)
+$webClient.DownloadFile('https://raw.githubusercontent.com/aspnet/Home/dev/kvm.cmd', $kvmCmdPath)
Write-Host "Installing KVM"
& $kvmCmdPath setup \ No newline at end of file
diff --git a/kvminstall.sh b/kvminstall.sh
index ab98cf8001..65e93363b6 100644
--- a/kvminstall.sh
+++ b/kvminstall.sh
@@ -27,7 +27,7 @@ if ! _kvmsetup_has "curl"; then
fi
if [ -z "$KVM_SOURCE" ]; then
- KVM_SOURCE="https://raw.githubusercontent.com/aspnet/Home/master/kvm.sh"
+ KVM_SOURCE="https://raw.githubusercontent.com/aspnet/Home/dev/kvm.sh"
fi
# Downloading to $KVM_DIR
diff --git a/samples/HelloMvc/Startup.cs b/samples/HelloMvc/Startup.cs
index cbe4bc4f59..eb17e8a18c 100644
--- a/samples/HelloMvc/Startup.cs
+++ b/samples/HelloMvc/Startup.cs
@@ -6,7 +6,7 @@ namespace HelloMvc
{
public class Startup
{
- public void Configure(IBuilder app)
+ public void Configure(IApplicationBuilder app)
{
app.UseErrorPage();
diff --git a/samples/HelloMvc/project.json b/samples/HelloMvc/project.json
index f835cca667..36082d31f8 100644
--- a/samples/HelloMvc/project.json
+++ b/samples/HelloMvc/project.json
@@ -1,17 +1,17 @@
{
"dependencies": {
- "Kestrel": "1.0.0-alpha3",
- "Microsoft.AspNet.Diagnostics": "1.0.0-alpha3",
- "Microsoft.AspNet.Hosting": "1.0.0-alpha3",
- "Microsoft.AspNet.Mvc": "6.0.0-alpha3",
- "Microsoft.AspNet.Server.WebListener": "1.0.0-alpha3"
+ "Kestrel": "1.0.0-*",
+ "Microsoft.AspNet.Diagnostics": "1.0.0-*",
+ "Microsoft.AspNet.Hosting": "1.0.0-*",
+ "Microsoft.AspNet.Mvc": "6.0.0-*",
+ "Microsoft.AspNet.Server.WebListener": "1.0.0-*"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
- "frameworks": {
- "net45": {},
- "k10": {}
+ "frameworks": {
+ "aspnet50": { },
+ "aspnetcore50": { }
}
} \ No newline at end of file
diff --git a/samples/HelloWeb/Startup.cs b/samples/HelloWeb/Startup.cs
index 96e399e2ef..b41f459f03 100644
--- a/samples/HelloWeb/Startup.cs
+++ b/samples/HelloWeb/Startup.cs
@@ -4,7 +4,7 @@ namespace KWebStartup
{
public class Startup
{
- public void Configure(IBuilder app)
+ public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseWelcomePage();
diff --git a/samples/HelloWeb/project.json b/samples/HelloWeb/project.json
index fc437856b6..583d9546b5 100644
--- a/samples/HelloWeb/project.json
+++ b/samples/HelloWeb/project.json
@@ -1,17 +1,17 @@
{
"dependencies": {
- "Kestrel": "1.0.0-alpha3",
- "Microsoft.AspNet.Diagnostics": "1.0.0-alpha3",
- "Microsoft.AspNet.Hosting": "1.0.0-alpha3",
- "Microsoft.AspNet.Server.WebListener": "1.0.0-alpha3",
- "Microsoft.AspNet.StaticFiles": "1.0.0-alpha3"
+ "Kestrel": "1.0.0-*",
+ "Microsoft.AspNet.Diagnostics": "1.0.0-*",
+ "Microsoft.AspNet.Hosting": "1.0.0-*",
+ "Microsoft.AspNet.Server.WebListener": "1.0.0-*",
+ "Microsoft.AspNet.StaticFiles": "1.0.0-*"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001",
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
- "net45": {},
- "k10": {}
+ "aspnet50": { },
+ "aspnetcore50": { }
}
} \ No newline at end of file