Add-Type -AssemblyName System.Security
$entropyBytes = [System.Text.UTF8Encoding]::UTF8.GetBytes("Chocolatey")
Function Unprotect-Arguments {
param([string]$data)
$encryptedByteArray = [System.Convert]::FromBase64String($data)
$decryptedByteArray = [System.Security.Cryptography.ProtectedData]::Unprotect(
$encryptedByteArray,
$entropyBytes,
[System.Security.Cryptography.DataProtectionScope]::LocalMachine
)
return [System.Text.UTF8Encoding]::UTF8.GetString($decryptedByteArray)
}
Function Read-Arguments {
param([string]$packageName)
$directory = Get-ChildItem $env:ChocolateyInstall\.chocolatey -Directory -Filter "$packageName*" | `
Where-Object { $_.Name -match ("$packageName" + "\.[\d\.]+") } | Select-Object -Last 1
If (!($directory)) { return }
$argsFile = Join-Path $directory.fullname ".arguments"
If (Test-Path $argsFile) {
$argsData = Get-Content $argsFile
#Implicitly return result from Unprotect-Arguments
Unprotect-Arguments -data $argsData
}
}
Function Get-LocalPackageInfo {
& choco list -lo -r -y
}
Function Get-PackagesConfigBody($SaveArguments = $false) {
Get-LocalPackageInfo | ForEach-Object {
$packageName = $($_.SubString(0, $_.IndexOf("|")))
$line = ' '
$line
}
}
Function Write-PackagesConfig($OutputFile, $SaveArguments = $false) {
$header = "`n"
$footer = ""
$body = Get-PackagesConfigBody -SaveArguments $SaveArguments
Write-Output $header $body $footer | Out-File $OutputFile -Encoding ASCII
}
# choco export -o="choco-packages.config" --include-install-args
Write-PackagesConfig -OutputFile "choco-packages.config" -SaveArguments $true