Scripts/SolutionExport.ps1
# # SolutionExport.ps1 # function Invoke-ExportSolution { Param( [string] [Parameter(Mandatory = $true)] $StartPath, [string] [Parameter(Mandatory = $true)] $SelectedSolution ) try { Get-ExportDataValid $ProgressPreference = 'SilentlyContinue' $message = @" ____ _ _ _ _____ _ / ___| ___ | |_ _| |_(_) ___ _ __ | ____|_ ___ __ ___ _ __| |_ \___ \ / _ \| | | | | __| |/ _ \| '_ \ | _| \ \/ / '_ \ / _ \| '__| __| ___) | (_) | | |_| | |_| | (_) | | | | | |___ > <| |_) | (_) | | | |_ |____/ \___/|_|\__,_|\__|_|\___/|_| |_| |_____/_/\_\ .__/ \___/|_| \__| |_| v2 "@ Write-Host $message Write-Host "" Write-Host "Running for path : " $StartPath Get-ConfigJSON($StartPath) $message = "Installing Solution Management Tools..." Write-Host $message #Install-XrmModule Install-PAC $message = "Establishing connection to $global:devops_ServerUrl" Write-Host $message $conn = Get-DataverseConnection($global:devops_ServerUrl) if ($conn.IsReady) { ######################## CHECK SOLUTION # Get solution by name $SolutionQuery = Get-CrmRecords -conn $conn -EntityLogicalName solution -Fields 'friendlyname', 'version', 'uniquename' -FilterAttribute uniquename -FilterOperator eq -FilterValue $global:devops_SolutionName $Solution = $SolutionQuery.CrmRecords[0] if (!$Solution) { throw "Solution not found: $global:devops_SolutionName" } $SolutionId = $Solution.solutionid $SolutionVersion = $Solution.version $SolutionName = $Solution.uniquename Write-Host "Found:" $SolutionId "-" $Solution.friendlyname "-" $SolutionVersion # Get most recent patch solution Write-Host "Checking for Patch Solutions ..." $PatchQuery = Get-CrmRecordsByFetch -conn $conn @" <fetch> <entity name="solution" > <attribute name="uniquename" /> <attribute name="friendlyname" /> <attribute name="version" /> <filter> <condition attribute="parentsolutionid" operator="eq" value="$SolutionId" /> </filter> <order attribute="createdon" descending="false" /> </entity> </fetch> "@ Set-DataverseSolutionVersion Get-DataverseSolution "$StartPath\$SelectedSolution" $SelectedSolution Get-FlowsToBeDeployed "$StartPath\$SelectedSolution" $SelectedSolution } } catch { Write-Host $_ pause } finally { ######################### CLEANING UP ######################### $message = "Cleaning Up..." Write-Host $message Remove-Item (Join-Path $StartPath "nuget.exe") -ErrorAction Ignore -Force Remove-Item (Join-Path $StartPath "Tools") -Force -Recurse -ErrorAction Ignore Remove-Item (Join-Path $StartPath "*.zip") -Force -ErrorAction Ignore -Exclude "Publisher.zip" $message = "Complete ... Enjoy !!!" Write-Host $message pause } } |