Octopus.Script exported 2019-06-06 by hullscotty1986 belongs to ‘ASP.NET’ category.
Check if given .NET 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 framework version
TargetVersion = 4.5.2
The target .NET framework version you expect to be installed in the machine. For example, 4.5.2.
Exact
Exact = false
If you check “Exact”, it means the installed .NET framework version MUST match target version.
Otherwise, as long as the installed .NET framework version is greater than or equal to target version, the check will pass.
Script body
Steps based on this template will execute the following PowerShell script.
# This script is based on MSDN: https://msdn.microsoft.com/en-us/library/hh925568
$releaseVersionMapping = @{
378389 = '4.5' # 4.5
378675 = '4.5.1' # 4.5.1 installed with Windows 8.1
378758 = '4.5.1' # 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2
379893 = '4.5.2' # 4.5.2
393295 = '4.6' # 4.6 installed with Windows 10
393297 = '4.6' # 4.6 installed on all other Windows OS versions
394254 = '4.6.1' # 4.6.1 installed on Windows 10
394271 = '4.6.1' # 4.6.1 installed on all other Windows OS versions
394802 = '4.6.2' # 4.6.2 installed on Windows 10
394806 = '4.6.2' # 4.6.2 installed on all other Windows OS versions
460798 = '4.7' # 4.7 installed on Windows 10
460805 = '4.7' # 4.7 installed on all other Windows OS versions
461308 = '4.7.1' # 4.7.1 installed on Windows 10
461310 = '4.7.1' # 4.7.1 installed on all other Windows OS versions
461808 = '4.7.2' # 4.7.2 installed on Windows 10
461814 = '4.7.2' # 4.7.2 installed on all other Windows OS versions
528040 = '4.8' #4.8 installed on Windows 10
528049 = '4.8' #4.8 installed on all other Windows OS versions1
528372 = '4.8' # 4.8 Windows 10 May 2020 Update
}
function Get-DotNetFrameworkVersions() {
$dotNetVersions = @()
if ($baseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', '')) {
# To find .NET Framework versions (.NET Framework 1-4)$dotNetVersions
if ($ndpKey = $baseKey.OpenSubKey('SOFTWARE\Microsoft\NET Framework Setup\NDP')) {
foreach ($versionKeyName in $ndpKey.GetSubKeyNames()) {
if ($versionKeyName -match 'v[2|3]') {
$versionKey = $ndpKey.OpenSubKey($versionKeyName)
if ($versionKey.GetValue('Version', '') -ne '') {
$version = [version] ($versionKey.GetValue('Version'))
$dotNetVersions += "$($version.Major).$($version.Minor)"
}
}
}
# for .NET 4.0
if ($ndp40Key = $ndpKey.OpenSubKey("v4.0")) {
foreach ($subKeyName in $ndp40Key.GetSubKeyNames()) {
$versionKey = $ndp40Key.OpenSubKey($subKeyName)
$version = [version]($versionKey.GetValue('Version', ''))
$dotNetVersions += "$($version.Major).$($version.Minor)"
}
}
}
# To find .NET Framework versions (.NET Framework 4.5 and later)
if ($ndp4Key = $baseKey.OpenSubKey('SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full')) {
$releaseKey = $ndp4Key.GetValue('Release')
$dotNetVersions += $releaseVersionMapping[$releaseKey]
}
}
return $dotNetVersions
}
$targetVersion = $OctopusParameters['TargetVersion'].Trim()
$exact = [boolean]::Parse($OctopusParameters['Exact'])
$matchedVersions = Get-DotNetFrameworkVersions | Where-Object { if ($exact) { $_ -eq $targetVersion } else { $_ -ge $targetVersion } }
if (!$matchedVersions) {
throw "Can't find .NET $targetVersion installed in the machine."
}
$matchedVersions | foreach { Write-Host "Found .NET $_ 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": "b15c6b3d-20a1-4059-b0e4-75bef1ff41d5",
"Name": ".NET - Check .NET Framework Version",
"Description": "Check if given .NET framework version (or greater) is installed.",
"Version": 8,
"ExportedAt": "2019-06-06T07:39:33.409Z",
"ActionType": "Octopus.Script",
"Author": "hullscotty1986",
"Parameters": [
{
"Id": "e902b08b-2fc3-4f62-aec0-5225533cace8",
"Name": "TargetVersion",
"Label": "Target .NET framework version",
"HelpText": "The target .NET framework version you expect to be installed in the machine. For example, 4.5.2.",
"DefaultValue": "4.5.2",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
},
"Links": {}
},
{
"Id": "205e297b-c72c-4d9b-a6fe-9a20ab62d5b0",
"Name": "Exact",
"Label": "Exact",
"HelpText": "If you check \"Exact\", it means the installed .NET framework version MUST match target version.\n\nOtherwise, as long as the installed .NET framework version is greater than or equal to target version, the check will pass.",
"DefaultValue": "false",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
},
"Links": {}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.ScriptBody": "# This script is based on MSDN: https://msdn.microsoft.com/en-us/library/hh925568\n\n$releaseVersionMapping = @{\n 378389 = '4.5' # 4.5\n 378675 = '4.5.1' # 4.5.1 installed with Windows 8.1\n 378758 = '4.5.1' # 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2\n 379893 = '4.5.2' # 4.5.2\n 393295 = '4.6' # 4.6 installed with Windows 10\n 393297 = '4.6' # 4.6 installed on all other Windows OS versions\n 394254 = '4.6.1' # 4.6.1 installed on Windows 10\n 394271 = '4.6.1' # 4.6.1 installed on all other Windows OS versions\n 394802 = '4.6.2' # 4.6.2 installed on Windows 10\n 394806 = '4.6.2' # 4.6.2 installed on all other Windows OS versions\n 460798 = '4.7' # 4.7 installed on Windows 10\n 460805 = '4.7' # 4.7 installed on all other Windows OS versions\n 461308 = '4.7.1' # 4.7.1 installed on Windows 10\n 461310 = '4.7.1' # 4.7.1 installed on all other Windows OS versions\n 461808 = '4.7.2' # 4.7.2 installed on Windows 10\n 461814 = '4.7.2' # 4.7.2 installed on all other Windows OS versions\n 528040 = '4.8' #4.8 installed on Windows 10\n 528049 = '4.8' #4.8 installed on all other Windows OS versions1\n 528372 = '4.8' # 4.8 Windows 10 May 2020 Update\n}\n\nfunction Get-DotNetFrameworkVersions() {\n $dotNetVersions = @()\n if ($baseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', '')) {\n # To find .NET Framework versions (.NET Framework 1-4)$dotNetVersions\n if ($ndpKey = $baseKey.OpenSubKey('SOFTWARE\\Microsoft\\NET Framework Setup\\NDP')) {\n foreach ($versionKeyName in $ndpKey.GetSubKeyNames()) {\n if ($versionKeyName -match 'v[2|3]') {\n $versionKey = $ndpKey.OpenSubKey($versionKeyName)\n if ($versionKey.GetValue('Version', '') -ne '') {\n $version = [version] ($versionKey.GetValue('Version'))\n $dotNetVersions += \"$($version.Major).$($version.Minor)\"\n }\n }\n }\n \n # for .NET 4.0\n if ($ndp40Key = $ndpKey.OpenSubKey(\"v4.0\")) {\n foreach ($subKeyName in $ndp40Key.GetSubKeyNames()) {\n $versionKey = $ndp40Key.OpenSubKey($subKeyName)\n $version = [version]($versionKey.GetValue('Version', ''))\n $dotNetVersions += \"$($version.Major).$($version.Minor)\"\n }\n }\n }\n\n # To find .NET Framework versions (.NET Framework 4.5 and later)\n if ($ndp4Key = $baseKey.OpenSubKey('SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full')) {\n $releaseKey = $ndp4Key.GetValue('Release')\n $dotNetVersions += $releaseVersionMapping[$releaseKey]\n }\n }\n return $dotNetVersions\n}\n\n$targetVersion = $OctopusParameters['TargetVersion'].Trim()\n$exact = [boolean]::Parse($OctopusParameters['Exact'])\n\n$matchedVersions = Get-DotNetFrameworkVersions | Where-Object { if ($exact) { $_ -eq $targetVersion } else { $_ -ge $targetVersion } }\nif (!$matchedVersions) { \n throw \"Can't find .NET $targetVersion installed in the machine.\"\n}\n$matchedVersions | foreach { Write-Host \"Found .NET $_ installed in the machine.\" }",
"Octopus.Action.RunOnServer": "false"
},
"Category": "ASP.NET",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/windows-check-net-framework-version.json",
"Website": "/step-templates/b15c6b3d-20a1-4059-b0e4-75bef1ff41d5",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Thursday, June 6, 2019