Set-StrictMode -Version Latest
function Get-KnownPackages {
param(
[string]$basePath = 'hkcu:\Software\Embarcadero\BDS\8.0'
)
$path = $basePath + '\Known Packages'
## ErrorAction: http://blogs.msdn.com/b/powershell/archive/2006/04/25/583241.aspx
$key = Get-Item $path -ErrorAction SilentlyContinue
if ($key) {
# $key
$names = $key.GetValueNames()
$namevalues = $names |
ForEach-Object { [PSCustomObject]@{ Name = $_; Value = $key.GetValue($_) } }
# $namevalues | Format-Table
}
else {
$namevalues = $null
}
$namevalues
}
function Filter-BDS-Packages {
param(
[string]$basePath = 'hkcu:\Software\Embarcadero\BDS\8.0',
[boolean]$excludeMatch = $True
)
$namevalues = Get-KnownPackages($basePath)
if ($nameValues) {
$bdsBinAtStart = '^\$\(BDSBIN\)'
$bdsAtStart = '^\$\(BDS\)'
if ($excludeMatch) {
$matches = $namevalues | Where-Object {
$_.Name -notMatch $bdsBinAtStart -and `
$_.Name -notMatch $bdsAtStart
}
}
else {
$matches = $namevalues | Where-Object {
$_.Name -match $bdsBinAtStart -or `
$_.Name -match $bdsAtStart
}
}
}
else {
$matches = $null
}
$matches
}
function Get-BDS-CompanyName {
param (
$bdsVersion = 1
)
<#
CompanyName=Borland (from BDS 1 until BDS 5)
CompanyName=CodeGear (from BDS 6 until BDS 7)
CompanyName=Embarcadero (BDS 8 and up)
#>
$borland = 'Borland'
$codeGear = 'CodeGear'
$embarcadero = 'Embarcadero'
## switch
## http://technet.microsoft.com/en-us/library/ff730937.aspx
## http://stackoverflow.com/questions/8015637/powershell-switch-statement
switch ($bdsVersion) {
1 { return $borland }
2 { return $borland }
3 { return $borland }
4 { return $borland }
5 { return $borland }
6 { return $codeGear }
7 { return $codeGear }
Default { return $embarcadero }
}
}
function Get-BDS-CompanyNames {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-CompanyName $_ }
}
function Get-BDS-Versions {
## array initialization:
## http://stackoverflow.com/questions/226596/powershell-array-initialization
## http://get-powershell.com/post/2008/02/07/Powershell-function-New-Array.aspx
## http://technet.microsoft.com/en-us/library/ee692797.aspx
[int[]] $versions = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
$versions
}
function Get-BDS-ProductName {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { 'C# Builder' }
13 { 'Appmethod' }
Default { 'Delphi' }
}
}
function Get-BDS-ProductNames {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-ProductName $_ }
}
function Get-BDS-AscendingProductVersion {
param (
$bdsVersion = 1
)
## http://docwiki.embarcadero.com/RADStudio/Berlin/en/Compiler_Versions
switch ($bdsVersion) {
1 { 'N/A' }
2 { '8' }
3 { '9' }
4 { '10' }
5 { '11' }
6 { '12' }
## there is no Delphi 13!
7 { '14' }
8 { '15' }
9 { '16' }
10 { '17' }
11 { '18' }
12 { '19' }
13 { 'N/A' }
14 { '20' }
15 { '21' }
16 { '22' }
17 { '23' }
18 { '24' }
}
}
function Get-BDS-AscendingProductVersions {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-AscendingProductVersion $_ }
}
function Get-BDS-ProductVersion {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { '1' }
2 { '8' }
3 { '2005' }
4 { '2006' }
5 { '2007' }
6 { '2009' }
7 { '2010' }
8 { 'XE' }
9 { 'XE2' }
10 { 'XE3' }
11 { 'XE4' }
12 { 'XE5' }
13 { '1.13' }
14 { 'XE6/Appmethod 1.14' } ## Appmethod 1.14 has 20.0.16277.1276 same as Embarcadero RAD Studio XE6 Update 1 Architect 20.0.16277.1276; http://www.softpedia.com/get/Programming/Other-Programming-Files/Embarcadero-Appmethod.shtml
15 { 'XE7/Appmethod 1.15' } ## http://docwiki.appmethod.com/appmethod/1.15/topics/en/Conditional_compilation_(Object_Pascal)
16 { 'XE8/Appmethod 1.16' } ## http://docwiki.appmethod.com/appmethod/1.16/topics/en/Conditional_compilation_(Object_Pascal)
17 { '10.0 Seattle' } ## http://docwiki.embarcadero.com/RADStudio/Seattle/en/Conditional_compilation_(Delphi)
18 { '10.1 Berlin' } ## http://docwiki.embarcadero.com/RADStudio/Berlin/en/Conditional_compilation_(Delphi)
## http://docwiki.embarcadero.com/RADStudio/en/Conditional_compilation_(Delphi)
## http://wiki.delphidabbler.com/index.php/Notes/VersionNumbers
}
}
function Get-BDS-ProductVersions {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-ProductVersion $_ }
}
function Get-BDS-BetaName {
param (
$bdsVersion = 1
)
## http://delphi.wikia.com/wiki/Delphi_Release_Dates
## https://github.com/darianmiller/Delphi-Versions/wiki
## memory
switch ($bdsVersion) {
1 { 'SideWinder' }
2 { 'Octane/Galileo' }
3 { 'Diamondback' }
4 { 'DeXter' }
5 { 'Spacely/Highlander' }
6 { 'Tiburón' }
7 { 'Weaver' }
8 { 'Fulcrum' }
9 { 'Pulsar' }
10 { 'WaterDragon' }
11 { 'Quintessence' }
12 { 'Zephyr' }
13 { '???' }
14 { 'Proteus' }
15 { 'Carpathia' }
16 { 'Elbrus' }
17 { 'Aitana' }
18 { 'Big Ben' }
}
}
function Get-BDS-BetaNames {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-BetaName $_ }
}
function Get-BDS-ReleaseDate {
param (
$bdsVersion = 1
)
## http://delphi.wikia.com/wiki/Delphi_Release_Dates
##
switch ($bdsVersion) {
1 { '20030624' }
2 { '20031222' }
3 { '20041012' }
4 { '20051123' }
5 { '20070316/20070905' }
6 { '20080825/20081201' }
7 { '20090815' }
8 { '20100830' }
9 { '20110902' }
10 { '20120903' }
11 { '20130422' }
12 { '20130911' }
13 { '20140310' }
14 { '20140415' }
15 { '20140902' }
16 { '20150407' }
17 { '20150831' }
18 { '20160420' }
}
}
function Get-BDS-ReleaseDates {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-ReleaseDate $_ }
}
function Get-BDS-Architecture {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { 'C# .NET 1' }
2 { 'Win32;.NET 1' }
3 { 'Win32;.NET 1' } ## but works with .NET 2 via this trick: http://delphi-notes.blogspot.nl/2006/03/eager-to-use-delphinet-for-net-20.html
4 { 'Win32;.NET 2' } ## http://edn.embarcadero.com/article/37089
5 { 'Win32;.NET 2' }
6 { 'Win32' }
7 { 'Win32' }
8 { 'Win32' }
9 { 'Win32;Win64' }
10 { 'Win32;Win64;OSX32' }
11 { 'Win32;Win64;OSX32;iOS-Arm' }
12 { 'Win32;Win64;OSX32;iOS-Arm;Android-Arm' }
13 { 'Win32;Win64;OSX32;iOS-Arm;Android-Arm' }
14 { 'Win32;Win64;OSX32;iOS-Arm;Android-Arm' }
15 { 'Win32;Win64;OSX32;iOS-Arm;Android-Arm' }
16 { 'Win32;Win64;OSX32;iOS32-Arm;iOS64-Arm;Android-Arm' }
17 { 'Win32;Win64;OSX32;iOS32-Arm;iOS64-Arm;Android-Arm' }
18 { 'Win32;Win64;OSX32;iOS32-Arm;iOS64-Arm;Android-Arm' }
}
}
function Get-BDS-Architectures {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-Architecture $_ }
}
function Get-BDS-CharacterSet {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
2 { 'Ansi/Unicode' }
3 { 'Ansi/Unicode' }
4 { 'Ansi/Unicode' }
5 { 'Ansi/Unicode' }
Default { 'Unicode' }
}
}
function Get-BDS-CharacterSets {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-CharacterSet $_ }
}
function Get-BDS-Define {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { 'C#' }
2 { 'VER160/VER160' }
3 { 'VER170/VER170' }
4 { 'VER180/VER180' }
5 { 'VER180&VER185/VER190' }
6 { 'VER200' }
7 { 'VER210' }
8 { 'VER220' }
9 { 'VER230' }
10 { 'VER240' }
11 { 'VER250' }
12 { 'VER260' }
13 { 'VER265' } ## http://delphi.wikia.com/wiki/CompilerVersion_Constant
14 { 'VER270' }
15 { 'VER280' }
16 { 'VER290' } ## http://docwiki.embarcadero.com/RADStudio/XE8/en/Compiler-Versionen
17 { 'VER300' } ## http://docwiki.embarcadero.com/RADStudio/Seattle/en/Conditional_compilation_(Delphi)
18 { 'VER310' } ## http://docwiki.embarcadero.com/RADStudio/Berlin/en/Conditional_compilation_(Delphi)
}
}
function Get-BDS-Defines {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-Define $_ }
}
function Get-BDS-CompilerVersion {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { 'C#' }
2 { 'none/16.0' }
3 { '17.0/17.0' }
4 { '18.0/18.0' }
5 { '18.5/19.0' }
6 { '20.0' }
7 { '21.0' }
8 { '22.0' }
9 { '23.0' }
10 { '24.0' }
11 { '25.0' }
12 { '26.0' }
13 { '26.5' }
14 { '27.0' }
15 { '28.0' }
16 { '29.0' }
17 { '30.0' } ## http://docwiki.embarcadero.com/RADStudio/Seattle/en/Compiler_Versions
18 { '31.0' } ## http://docwiki.embarcadero.com/RADStudio/Berlin/en/Compiler_Versions
## http://docwiki.embarcadero.com/RADStudio/en/Compiler_Versions
}
}
function Get-BDS-CompilerVersions {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-CompilerVersion $_ }
}
function Get-BDS-RTLVersion {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
5 { '18.0/19.0' } # Delphi 2007: Win32 RTL is same as Delphi 2006; .NET RTL is new.
Default { Get-BDS-CompilerVersion $bdsVersion }
}
}
function Get-BDS-RTLVersions {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-RTLVersion $_ }
}
function Get-BDS-DllSuffix {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { '????' }
2 { '80' }
3 { '90' }
4 { '100' }
5 { '100' } ## Delphi 2007 skipped rtl110.bpl to be version compatible with Delphi 2006 http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.non-technical/2007-12/msg01259.html
6 { '120' }
7 { '140' }
8 { '150' }
9 { '160' }
10 { '170' }
11 { '180' }
12 { '190' }
13 { '195' }
14 { '200' }
15 { '210' }
16 { '220' } ## http://docwiki.embarcadero.com/RADStudio/XE8/de/Compiler-Versionen
17 { '230' } ## http://docwiki.embarcadero.com/RADStudio/Seattle/en/Compiler_Versions
18 { '240' } ## http://docwiki.embarcadero.com/RADStudio/Berlin/en/Compiler_Versions
## http://docwiki.embarcadero.com/RADStudio/en/Compiler_Versions
}
}
function Get-BDS-DllSuffixes {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-DllSuffix $_ }
}
function Get-BDS-ProjectVersion {
param (
$bdsVersion = 1
)
## based on own research and:
## - http://stackoverflow.com/questions/9757886/how-do-i-determine-the-delphi-version-which-created-a-delphi-project
## - https://plus.google.com/u/0/116732568169175924421/posts/NnCf3PGZtur
## - https://github.com/RRUZ/delphi-dev-shell-tools/blob/master/units/uDelphiVersions.pas
switch ($bdsVersion) {
1 { '????' }
2 { '80' }
3 { '????' }
4 { '????' }
5 { '????' }
6 { '11.1;12.0' }
7 { '12.0' }
8 { '12.2;12.3' }
9 { '13.4' }
10 { '14.3;14.4' }
11 { '14.6' }
12 { '15.0;15.1' }
13 { '15.1;15.2;15.3' }
14 { '15.4' }
15 { '16.0;16.1' }
16 { '17.0;17.1;17.2' }
17 { '18.0' }
18 { '18.1' }
}
}
function Get-BDS-ProjectVersions {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-ProjectVersion $_ }
}
function Get-BDS-Framework {
param (
$bdsVersion = 1
)
switch ($bdsVersion) {
1 { '.NET' }
2 { 'VCL/.NET' }
3 { 'VCL/.NET' }
4 { 'VCL/.NET' }
5 { 'VCL/.NET' }
6 { 'VCL' }
7 { 'VCL' }
8 { 'VCL' }
9 { 'VCL' }
10 { 'VCL;FMX1' }
11 { 'VCL;FMX2' }
12 { 'VCL;FMX2' }
13 { 'FMX2' }
14 { 'VCL;FMX2' }
15 { 'VCL;FMX2' }
16 { 'VCL;FMX2' }
17 { 'VCL;FMX2' }
18 { 'VCL;FMX2' }
}
}
function Get-BDS-Frameworks {
$versions = Get-BDS-Versions
$versions | ForEach-Object { Get-BDS-Framework $_ }
}
function Get-BDS-BaseKeyPath {
param (
$bdsVersion = 1,
$rootKey = 'hkcu'
)
$company = Get-BDS-CompanyName $bdsVersion
## -f format operator: https://devcentral.f5.com/blogs/us/powershell-abcs-f-is-for-format-operator#.UfExLY1plI0
$pathFormat = '{0}:\Software\{1}\BDS\{2}.0'
# 'hkcu:\Software\Embarcadero\BDS\8.0' $True
$path = $pathFormat -f $rootKey, $company, $bdsVersion
$path
}
function Get-BDS-ProductFullName {
param (
$bdsVersion = 1
)
<#
1. Borland C# Builder (contained only C# Builder)
2. Borland Delphi 8 (added Delphi .net)
3. Borland Delphi 2005 (added Delphi win32)
4. Borland Delphi 2006 (added C++ Builder)
5. Borland Delphi 2007
6. CodeGear Delphi 2009
7. CodeGear Delphi 2010
8. Embarcadero Delphi XE
9. Embarcadero Delphi XE2 (added Delphi win64)
10. Embarcadero Delphi XE3 (added C++ Builder win64, OS X x86 and iOS x86/arm through FreePascal)
11. Embarcadero Delphi XE4 (replaced FreePascal with native Delphi compiler for iOS x86/arm)
12. Embarcadero Delphi XE5 (added Android ARMv7 for Delphi)
13. Appmethod 1.13 (FMX only; stripped down version of RAD Studio XE5; dysfunctional commandline compiler)
14. Embarcadero Delphi XE6/Appmethod 1.14 (added Android ARMv7 for C++ Builder)
15. Embarcadero Delphi XE7/Appmethod 1.15
16. Embarcadero Delphi XE8/Appmethod 1.16
17. Embarcadero Delphi 10.0 Seattle
18. Embarcadero Delphi 10.1 Berlin
#>
$company = Get-BDS-CompanyName $bdsVersion
$name = Get-BDS-ProductName $bdsVersion
$version = Get-BDS-ProductVersion $bdsVersion
$fullNameFormat = '{0} {1} {2}'
$fullName = $fullNameFormat -f $company, $name, $version
$fullName
}
function Get-BDS-ProductSummary {
param (
$bdsVersion = 1
)
$hkcuBasePath = Get-BDS-HKCU-BaseKeyPath $bdsVersion
$hklmBasePath = Get-BDS-HKLM-BaseKeyPath $bdsVersion
$hkcuSplit = $hkcuBasePath.Split(":")
$basePath = $hkcuSplit[1]
$fullName = Get-BDS-ProductFullName $bdsVersion
$compilerVersion = Get-BDS-CompilerVersion $bdsVersion
$rtlVersion = Get-BDS-RTLVersion $bdsVersion
$define = Get-BDS-Define $bdsVersion
$characterSet = Get-BDS-CharacterSet $bdsVersion
$framework = Get-BDS-Framework $bdsVersion
$ascendingVersion = Get-BDS-AscendingProductVersion $bdsVersion
$dllSuffix = Get-BDS-DllSuffix $bdsVersion
$projectVersion = Get-BDS-ProjectVersion $bdsVersion
$architecture = Get-BDS-Architecture $bdsVersion
$releaseDate = Get-BDS-ReleaseDate $bdsVersion
$betaName = Get-BDS-BetaName $bdsVersion
# http://mcpmag.com/articles/2012/12/11/pshell-order.aspx
# http://windowsitpro.com/powershell/powershell-basics-custom-objects
New-Object PSCustomObject -Property ([Ordered] @{
"BDS #" = $bdsVersion
"HKCU/HKLM registry path" = $basePath
"Name" = $fullName
"CompilerVersion" = $compilerVersion
"RTLVersion" = $rtlVersion
## TODO: Add FMX.Types.FireMonkeyVersion
"Define" = $define
"Characterset" = $characterSet
"Frameworks" = $framework
"Version" = $ascendingVersion
"DllSuffix" = $dllSuffix
"ProjectVersion" = $projectVersion
"Architectures" = $architecture
"ReleaseDate" = $releaseDate
"BetaName" = $betaName
"HKCU" = $hkcuBasePath
"HKLM" = $hklmBasePath
## TODO: Add docwiki base URL
## TODO: Add PAServer and x64 debug server paths
})
}
function Get-BDS-ProductFullNames {
$bdsVersions = Get-BDS-Versions
$bdsVersions | ForEach-Object {
$fullName = Get-BDS-ProductFullName $_
$fullName
}
}
function Get-BDS-BaseKeyPaths {
param (
$rootKey = 'hkcu'
)
$bdsVersions = Get-BDS-Versions
$bdsVersions | ForEach-Object {
$path = Get-BDS-BaseKeyPath $_ $rootKey
$path
}
}
function Get-BDS-HKCU-BaseKeyPath {
param (
$bdsVersion = 1
)
$path = Get-BDS-BaseKeyPath $bdsVersion
$path
}
function Get-BDS-HKCU-BaseKeyPaths {
$bdsVersions = Get-BDS-Versions
$bdsVersions | ForEach-Object {
$path = Get-BDS-HKCU-BaseKeyPath $_
$path
}
}
function Get-BDS-HKLM-BaseKeyPath {
param (
$bdsVersion = 1
)
$path = Get-BDS-BaseKeyPath $bdsVersion 'hklm'
$path
}
function Get-BDS-HKLM-BaseKeyPaths {
$bdsVersions = Get-BDS-Versions
$bdsVersions | ForEach-Object {
$path = Get-BDS-HKLM-BaseKeyPath $_
$path
}
}
function Filter-BDS-InstalledProductVersions {
$anyInstalledPackages = $False
[bool[]]$filters = $True, $False
$versions = Get-BDS-Versions
$versions | ForEach-Object {
$version = $_
$basePath = Get-BDS-HKCU-BaseKeyPath $version
$anyInstalledproductPackages = $False
$filters | ForEach-Object {
$filter = $_
$userPacakgesNameValues = Filter-BDS-Packages $basePath $filter
if ($userPacakgesNameValues) {
switch ($filter) {
$False { $kind = 'System' }
Default { $kind = 'User' }
}
$anyInstalledPackages = $True
$anyInstalledproductPackages = $True
}
}
if ($anyInstalledproductPackages) {
$version
}
}
}
function Filter-BDS-InstalledProductFullNames {
$bdsVersions = Filter-BDS-InstalledProductVersions
$bdsVersions | ForEach-Object {
$fullName = Get-BDS-ProductFullName $_
$fullName
}
}
function Get-BDS-ProductSummaries {
$bdsVersions = Get-BDS-Versions
$bdsVersions | ForEach-Object {
$summary = Get-BDS-ProductSummary $_
$summary
} | Format-Table * -AutoSize | Out-String -Width 4096
# http://wiert.me/2017/03/09/powershell-when-format-table-autosize-displays-only-10-columns-and-uses-the-width-of-the-console-when-redirecting-to-file/
# http://blogs.technet.com/b/nexthop/archive/2011/03/21/psformatorselect.aspx
Write-Host "Slash separated values like xxx/yyy means native/.NET"
}
function Filter-BDS-InstalledProductSummaries {
$bdsVersions = Filter-BDS-InstalledProductVersions
$bdsVersions | ForEach-Object {
$summary = Get-BDS-ProductSummary $_
$summary
} | Format-Table * -AutoSize | Out-String -Width 4096
Write-Host "Slash separated values like xxx/yyy means native/.NET"
}
function Filter-BDS-Packages-For-All-Versions {
$anyInstalledPackages = $False
[bool[]]$filters = $True, $False
$filters | ForEach-Object {
$filter = $_
$versions = Get-BDS-Versions
$versions | ForEach-Object {
$version = $_
$basePath = Get-BDS-HKCU-BaseKeyPath $version
# $state = [PSCustomObject]@{ Version = $version; Filter = $filter; Path = $basePath }
# $state
$userPacakgesNameValues = Filter-BDS-Packages $basePath $filter
if ($userPacakgesNameValues) {
$productFullName = Get-BDS-ProductFullName $version
switch ($filter) {
$False { $kind = 'System' }
Default { $kind = 'User' }
}
$line = '{0} installed packages for "{1}" in {2}' -f $kind, $productFullName, $basePath
Write-Host $line
## Fix The object of type "Microsoft.PowerShell.Commands.Internal.Format.FormatStartData" is not valid or not in the correct sequence. This is likely caused by a user-specified "format-table" command which is conflicting with the default formatting.
## http://stackoverflow.com/questions/7517581/powershell-format-table-error
$userPacakgesNameValues | Format-Table | Out-String
$anyInstalledPackages = $True
}
}
}
if (-not $anyInstalledPackages) {
Write-Host 'No installed Delphi packages found'
}
}
$anyArg = $False
#[String[]] $args = 'InstalledPackages', 'ProductFullNames', 'InstalledProductFullNames'
$args | ForEach-Object {
$arg = $_
Write-Host ""
$line = 'Parsing argument "{0}":' -f $arg
Write-Host $line
Write-Host ""
switch ($arg) {
'CompanyNames' {
Write-Host "Known BDS Company Names:"
Get-BDS-CompanyNames
}
'Versions' {
Write-Host "Known BDS Versions:"
Get-BDS-Versions
}
'ProductNames' {
Write-Host "Known BDS Product Names:"
Get-BDS-ProductNames
}
'ProductVersions' {
Write-Host "Known BDS Product Versions:"
Get-BDS-ProductVersions
}
'BetaNames' {
Write-Host "Known BDS Field-Test/Beta Names:"
Get-BDS-BetaNames
}
'ReleaseDates' {
Write-Host "Known BDS Product Release Dates:"
Get-BDS-ReleaseDates
}
'Architectures' {
Write-Host "Known BDS Architectures:"
Get-BDS-Architectures
}
'CharacterSets' {
Write-Host "Known BDS Character Sets:"
Get-BDS-CharacterSets
}
'Defines' {
Write-Host "Known BDS Defines:"
Get-BDS-Defines
}
'CompilerVersions' {
Write-Host "Known BDS Compiler Versions:"
Get-BDS-CompilerVersions
}
'RTLVersions' {
Write-Host "Known BDS RTL Versions:"
Get-BDS-RTLVersions
}
'DllSuffixes' {
Write-Host "Known BDS DLL Suffixes:"
Get-BDS-DllSuffixes
}
'ProjectVersions' {
Write-Host "Known BDS Project Versions:"
Get-BDS-ProjectVersions
}
'Frameworks' {
Write-Host "Known BDS Frameworks:"
Get-BDS-Frameworks
}
'ProductFullNames' {
Write-Host "Known BDS Product Full Names:"
Get-BDS-ProductFullNames
}
'BaseKeyPaths' {
Write-Host "Known BDS Base Key Paths:"
Get-BDS-BaseKeyPaths
}
'HKCU-BaseKeyPaths' {
Write-Host "Known BDS HKCU Base Key Paths:"
Get-BDS-HKCU-BaseKeyPaths
}
'HKLM-BaseKeyPaths' {
Write-Host "Known BDS HKLM Base Key Paths:"
Get-BDS-HKLM-BaseKeyPaths
}
'ProductSummaries' {
Write-Host "Product Summaries:"
Get-BDS-ProductSummaries
}
'InstalledProductVersions' {
Write-Host "Installed Product Versions:"
Filter-BDS-InstalledProductVersions
}
'InstalledProductFullNames' {
Write-Host "Installed Product Full Names:"
Filter-BDS-InstalledProductFullNames
}
'InstalledProductSummaries' {
Write-Host "Installed Product Summaries:"
Filter-BDS-InstalledProductSummaries
}
'InstalledPackages' {
Write-Host "Installed BDS Packages:"
Filter-BDS-Packages-For-All-Versions
}
}
$anyArg = $True
}
if (-not $anyArg) {
Write-Host 'Pass any of these args:'
Write-Host ' CompanyNames'
Write-Host ' Versions'
Write-Host ' ProductNames'
Write-Host ' ProductVersions'
Write-Host ' BetaNames'
Write-Host ' ReleaseDates'
Write-Host ' Architectures'
Write-Host ' CharacterSets'
Write-Host ' Defines'
Write-Host ' CompilerVersions'
Write-Host ' RTLVersions'
Write-Host ' DllSuffixes'
Write-Host ' ProjectVersions'
Write-Host ' Frameworks'
Write-Host ' ProductVersions'
Write-Host ' ProductFullNames'
Write-Host ' BaseKeyPaths'
Write-Host ' HKCU-BaseKeyPaths'
Write-Host ' HKLM-BaseKeyPaths'
Write-Host ' ProductSummaries'
Write-Host ' InstalledProductVersions'
Write-Host ' InstalledProductFullNames'
Write-Host ' InstalledProductSummaries'
Write-Host ' InstalledPackages'
}
#
#
<#
Write-Host 'Delphi XE user installed packages:'
Filter-BDS-Packages 'hkcu:\Software\Embarcadero\BDS\8.0' $True
Write-Host 'Delphi XE2 user installed packages:'
Filter-BDS-Packages 'hkcu:\Software\Embarcadero\BDS\9.0' $True
Write-Host 'Delphi XE Embarcadero installed packages:'
Filter-BDS-Packages 'hkcu:\Software\Embarcadero\BDS\8.0' $False
Write-Host 'Delphi XE2 Embarcadero installed packages:'
Filter-BDS-Packages 'hkcu:\Software\Embarcadero\BDS\9.0' $False
#>