Octopus.Script exported 2018-06-13 by FinnianDempsey belongs to ’.NET Core’ category.
Check if given .NET Core framework version (or greater) is installed.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Target .NET Core framework version
TargetVersion = 2.0.5
The target .NET Core framework version you expect to be installed in the machine. For example, 2.0.5.
Exact
Exact = false
If you check “Exact”, it means the installed .NET Core framework version MUST match target version.
Otherwise, as long as the installed .NET Coreframework version is greater than or equal to target version, the check will pass.
Check ASP.NET Core Module
CheckASPdotNETCore = false
If you check “Check ASP.NET Core Module”, it means this step will check if ASP.NET Core module is installed in the host or not.
Script body
Steps based on this template will execute the following PowerShell script.
$ErrorActionPreference = "Stop"
function Get-Parameter($Name, $Default, [switch]$Required) {
$result = $null
if ($OctopusParameters -ne $null) {
$result = $OctopusParameters[$Name]
}
if ($result -eq $null) {
if ($Required) {
throw "Missing parameter value $Name"
} else {
$result = $Default
}
}
return $result
}
function Get-DotNetCoreFrameworkVersions() {
$dotNetCoreVersions = @()
if(Test-Path "$env:programfiles/dotnet/shared/Microsoft.NETCore.App") {
$dotNetCoreVersions = (ls "$env:programfiles/dotnet/shared/Microsoft.NETCore.App").Name
}
return $dotNetCoreVersions
}
function Get-AspDotNetCoreRuntimeVersions() {
$aspDotNetCoreRuntimeVersions = @()
$DotNETCoreUpdatesPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Updates\.NET Core"
$DotNETUpdatesPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Updates\.NET"
if (Test-Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Updates\.NET Core") {
$DotNetCoreItems = (Get-Item -Path $DotNETCoreUpdatesPath).GetSubKeyNames()
}
if (Test-Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Updates\.NET") {
$DotNetItems = (Get-Item -Path $DotNETUpdatesPath).GetSubKeyNames()
}
$aspDotNetCoreRuntimeVersions = $DotNetCoreItems + $DotNetItems | where { $_ -match "^Microsoft (ASP)?\.NET Core (?<version>[\d\.]+(.*?)?) "} | foreach { $Matches['version'] }
return $aspDotNetCoreRuntimeVersions
}
$targetVersion = (Get-Parameter "TargetVersion" -Required).Trim()
$exact = [boolean]::Parse((Get-Parameter "Exact" -Required))
$CheckASPdotNETCore = [boolean]::Parse((Get-Parameter "CheckASPdotNETCore" -Required))
$matchedVersions = Get-DotNetCoreFrameworkVersions | Where-Object { if ($exact) { $_ -eq $targetVersion } else { $_ -ge $targetVersion } }
if (!$matchedVersions) {
throw "Can't find .NET Core Runtime $targetVersion installed in the machine."
}
$matchedVersions | foreach { Write-Host "Found .NET Core Runtime $_ installed in the machine." }
if ($CheckASPdotNETCore) {
$matchedAspVersions = Get-AspDotNetCoreRuntimeVersions
if (!$matchedAspVersions) {
throw "Can't find ASP.NET Core Runtime installed in the machine."
}
$matchedAspVersions | foreach { Write-Host "Found ASP.NET Core Runtime $_ installed in the machine." }
}
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "929ff903-29de-4217-b6a9-83fbfd477e11",
"Name": ".NET Core - Check .NET Core Framework Version",
"Description": "Check if given .NET Core framework version (or greater) is installed.",
"Version": 5,
"ExportedAt": "2018-06-13T08:43:39.365Z",
"ActionType": "Octopus.Script",
"Author": "FinnianDempsey",
"Parameters": [
{
"Id": "f386deb4-36fb-4116-ad4a-5bceed89fa5b",
"Name": "TargetVersion",
"Label": "Target .NET Core framework version",
"HelpText": "The target .NET Core framework version you expect to be installed in the machine. For example, 2.0.5.",
"DefaultValue": "2.0.5",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
},
"Links": {}
},
{
"Id": "7312dd89-2174-47d7-bdfd-2745fb812f58",
"Name": "Exact",
"Label": "Exact",
"HelpText": "If you check \"Exact\", it means the installed .NET Core framework version MUST match target version.\n\nOtherwise, as long as the installed .NET Coreframework version is greater than or equal to target version, the check will pass.",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
},
"Links": {}
},
{
"Id": "4f0b738b-8f06-4c93-a27f-49b3cd06ea9a",
"Name": "CheckASPdotNETCore",
"Label": "Check ASP.NET Core Module",
"HelpText": "If you check \"Check ASP.NET Core Module\", it means this step will check if ASP.NET Core module is installed in the host or not.",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
},
"Links": {}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "$ErrorActionPreference = \"Stop\" \nfunction Get-Parameter($Name, $Default, [switch]$Required) {\n $result = $null\n\n if ($OctopusParameters -ne $null) {\n $result = $OctopusParameters[$Name]\n }\n\n if ($result -eq $null) {\n if ($Required) {\n throw \"Missing parameter value $Name\"\n } else {\n $result = $Default\n }\n }\n\n return $result\n}\n\nfunction Get-DotNetCoreFrameworkVersions() {\n $dotNetCoreVersions = @()\n if(Test-Path \"$env:programfiles/dotnet/shared/Microsoft.NETCore.App\") {\n $dotNetCoreVersions = (ls \"$env:programfiles/dotnet/shared/Microsoft.NETCore.App\").Name\n }\n return $dotNetCoreVersions\n}\n\nfunction Get-AspDotNetCoreRuntimeVersions() {\n $aspDotNetCoreRuntimeVersions = @()\n $DotNETCoreUpdatesPath = \"Registry::HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Updates\\.NET Core\"\n $DotNETUpdatesPath = \"Registry::HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Updates\\.NET\"\n\n if (Test-Path \"HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Updates\\.NET Core\") {\n\t $DotNetCoreItems = (Get-Item -Path $DotNETCoreUpdatesPath).GetSubKeyNames()\n }\n if (Test-Path \"HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Updates\\.NET\") {\n $DotNetItems = (Get-Item -Path $DotNETUpdatesPath).GetSubKeyNames()\n }\n\t$aspDotNetCoreRuntimeVersions = $DotNetCoreItems + $DotNetItems | where { $_ -match \"^Microsoft (ASP)?\\.NET Core (?<version>[\\d\\.]+(.*?)?) \"} | foreach { $Matches['version'] }\n\n return $aspDotNetCoreRuntimeVersions\n}\n\n$targetVersion = (Get-Parameter \"TargetVersion\" -Required).Trim()\n$exact = [boolean]::Parse((Get-Parameter \"Exact\" -Required))\n$CheckASPdotNETCore = [boolean]::Parse((Get-Parameter \"CheckASPdotNETCore\" -Required))\n\n$matchedVersions = Get-DotNetCoreFrameworkVersions | Where-Object { if ($exact) { $_ -eq $targetVersion } else { $_ -ge $targetVersion } }\nif (!$matchedVersions) { \n throw \"Can't find .NET Core Runtime $targetVersion installed in the machine.\"\n}\n\n$matchedVersions | foreach { Write-Host \"Found .NET Core Runtime $_ installed in the machine.\" }\n\nif ($CheckASPdotNETCore) {\n $matchedAspVersions = Get-AspDotNetCoreRuntimeVersions\n if (!$matchedAspVersions) {\n throw \"Can't find ASP.NET Core Runtime installed in the machine.\"\n }\n\n $matchedAspVersions | foreach { Write-Host \"Found ASP.NET Core Runtime $_ installed in the machine.\" }\n}"
},
"Category": ".NET Core",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/windows-check-net-core-framework-version.json",
"Website": "/step-templates/929ff903-29de-4217-b6a9-83fbfd477e11",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Wednesday, June 13, 2018