Functions/Solutions/Invoke-SolutionPackager.ps1
function Invoke-SolutionPackager { [CmdletBinding()] param ( [parameter(Mandatory = $true)][ValidateSet("Extract", "Pack")] $action, [parameter(Mandatory = $true)] $zipFile, [parameter(Mandatory = $true)] $folder, [parameter(Mandatory = $true)][ValidateSet("Unmanaged", "Managed", "Both")] $packagetype, [parameter(Mandatory = $false)][ValidateSet("Yes", "No")] $allowDelete, [parameter(Mandatory = $false)][ValidateSet("Yes", "No")] $allowWrite, [parameter(Mandatory = $false)][bool] $clobber, [parameter(Mandatory = $false)][ValidateSet("Off", "Error", "Warning", "Info", "Verbose")] $errorLevel, [parameter(Mandatory = $false)] $map, [parameter(Mandatory = $false)] $log ) begin { $solutionPackagerNugetPackage = "Microsoft.CrmSdk.CoreTools" $nugetPackageRootPath = [System.IO.Path]::Combine($powerAppsToolsPath, $solutionPackagerNugetPackage) $solutionPackagerFilePath = Get-ChildItem $nugetPackageRootPath -Recurse -Filter "SolutionPackager.exe" if ($solutionPackagerFilePath) { $soPaExe = $solutionPackagerFilePath.FullName Write-Verbose "SolutionPackager.exe found: $soPaExe" #Create custom object with required parameters. $packParms = $PSBoundParameters } else { Write-Error "Could not locate SolutionPackager.exe in path: $nugetPackageRootPath" } } process { ForEach ($property in $packParms.GetEnumerator()) { if ($property.key -eq "clobber") { $soPaArgList += ("/" + $property.key + " ") } else { $soPaArgList += ("/" + $property.key + ":" + $property.value + " ") } } Write-Host "##[command]""$soPaExe"" $soPaArgList" Invoke-Expression "& '$soPaExe' --% $soPaArgList" | Write-Host Write-Verbose "Exit code: $LASTEXITCODE" if ($LASTEXITCODE -ne 0) { Write-Error "SolutionPackager failed: $LASTEXITCODE" } } end { return $LASTEXITCODE } } |