0% found this document useful (0 votes)
16 views

CompDB App

This document contains PowerShell code to parse XML configuration files, extract license and application payload data, and copy files to appropriate directories to configure and package applications. The code processes feature and package information, validates licenses, and lists applications by edition to be included in an _AppsEditions.txt file.

Uploaded by

ensarenec2022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

CompDB App

This document contains PowerShell code to parse XML configuration files, extract license and application payload data, and copy files to appropriate directories to configure and package applications. The code processes feature and package information, validates licenses, and lists applications by edition to be included in an _AppsEditions.txt file.

Uploaded by

ensarenec2022
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

@exit /b

:embed:
$cwd = (Get-Location -PSProvider FileSystem).ProviderPath
$doc = [xml](Get-Content .\CompDB_App.xml)
ForEach ($a in $doc.CompDB.Features.Feature) {
If ($null -eq $a.CustomInformation) {continue}
$p = 'Apps\' + $a.FeatureID
$t = $p + '\License.xml'
If (Test-Path $t) {continue}
$d = $null
ForEach ($c in $a.CustomInformation.CustomInfo) {If ($c.Key -eq 'licensedata')
{$d = $c.InnerText} }
If ($null -eq $d) {continue}
$null = [IO.Directory]::CreateDirectory($p)
[IO.File]::WriteAllText($t,$d,[System.Text.Encoding]::ASCII)
}
$packs = @{}
ForEach ($a in $doc.CompDB.Packages.Package) {
$packs[$($a.ID)] = $a.Payload.PayloadItem.Path -replace '(.*\\IPA\\)(.*)','IPA\
$2'
}
#echo ('File_Prefix;Target_Path') | Out-File -Encoding ASCII .\_AppsFilesList.csv
ForEach ($a in $doc.CompDB.Features.Feature) {
ForEach ($b in $a.Packages.Package) {
$null = $packs[$($b.ID)] -match '.*\\'
$prefix = $matches[0].Replace('\','_')
$suffix = $packs[$($b.ID)] -replace '(.*?)\\(.*?)\\(.*)', '$3'
If ($a.Type -eq 'MSIXFramework') {$fnpath = 'Apps\MSIXFramework\' + $suffix}
Else {$fnpath = 'Apps\' + $a.FeatureID + '\' + $suffix}
echo ($prefix + ';' + $fnpath) | Out-File -Encoding ASCII -Append .\
_AppsFilesList.csv
If (Test-Path $fnpath) {continue}
$flname = [IO.Path]::GetFileName($fnpath)
$drname = [IO.Path]::GetDirectoryName($fnpath)
If (Test-Path $flname) {$source = $flname}
ElseIf (Test-Path ($prefix + $flname)) {$source = $prefix + $flname}
Else {continue}
[bool]$pathlong = (($cwd + '\' + $fnpath).Length -gt 255) -or (($cwd + '\' +
$drname).Length -gt 248)
If (!$pathlong) {
$null = [IO.Directory]::CreateDirectory($drname)
Move-Item -Path $source -Destination $fnpath -Force
continue
}
Start-Process robocopy.exe -NoNewWindow -Wait -ArgumentList ('"' + $cwd + '"' +
' ' + '"' + $cwd + '\' + $drname + '"' + ' ' + $source + ' /MOV /R:1 /W:1 /NS
/NC /NFL /NDL /NP /NJH /NJS')
}
}
:embed:
$x = [xml](Get-Content .\AppsList.xml)
if ($null -ne $x.Apps.Client.Feature) { $Client = [ordered]@{}; foreach ($a in
$x.Apps.Client.Feature) {$Client[$($a.FeatureID)] = 'y'}; $ListClient =
'_appProf='; ForEach ($k in $Client.Keys) {$ListClient += $k + ','}; echo
($ListClient) | Out-File -Encoding ASCII -Append .\_AppsEditions.txt }
if ($null -ne $x.Apps.CoreN.Feature) { $CoreN = [ordered]@{}; foreach ($a in
$x.Apps.CoreN.Feature) {$CoreN[$($a.FeatureID)] = 'y'}; $ListCoreN = '_appProN=';
ForEach ($k in $CoreN.Keys) {$ListCoreN += $k + ','}; echo ($ListCoreN) | Out-File
-Encoding ASCII -Append .\_AppsEditions.txt }
if ($null -ne $x.Apps.Team.Feature) { $Team = [ordered]@{}; foreach ($a in
$x.Apps.Team.Feature) {$Team[$($a.FeatureID)] = 'y'}; $ListTeam = '_appTeam=';
ForEach ($k in $Team.Keys) {$ListTeam += $k + ','}; echo ($ListTeam) | Out-File -
Encoding ASCII -Append .\_AppsEditions.txt }
if ($null -ne $x.Apps.ServerAzure.Feature) { $sAzure = [ordered]@{}; foreach ($a in
$x.Apps.ServerAzure.Feature) {$sAzure[$($a.FeatureID)] = 'y'}; $ListsAzure =
'_appAzure='; ForEach ($k in $sAzure.Keys) {$ListsAzure += $k + ','}; echo
($ListsAzure) | Out-File -Encoding ASCII -Append .\_AppsEditions.txt }
if ($null -ne $x.Apps.ServerCore.Feature) { $sCore = [ordered]@{}; foreach ($a in
$x.Apps.ServerCore.Feature) {$sCore[$($a.FeatureID)] = 'y'}; $ListsCore =
'_appSCore='; ForEach ($k in $sCore.Keys) {$ListsCore += $k + ','}; echo
($ListsCore) | Out-File -Encoding ASCII -Append .\_AppsEditions.txt }
if ($null -ne $x.Apps.ServerFull.Feature) { $sFull = [ordered]@{}; foreach ($a in
$x.Apps.ServerFull.Feature) {$sFull[$($a.FeatureID)] = 'y'}; $ListsFull =
'_appSFull='; ForEach ($k in $sFull.Keys) {$ListsFull += $k + ','}; echo
($ListsFull) | Out-File -Encoding ASCII -Append .\_AppsEditions.txt }
:embed:

You might also like