functions/Deploy-App-OnPrem.psm1
function RIT-Deploy-App-OnPrem { Param( [string] $serviceTier = 'BC170', [string] $RoleTailoredPath = "C:\Program Files (x86)\Microsoft Dynamics 365 Business Central\170\RoleTailored Client\", [Parameter(Mandatory=$false)][switch] $ForceSync = $false ) $appPath = Get-ChildItem -Path "$env:System_ArtifactsDirectory\*.app" -Recurse Import-Module $RoleTailoredPath\"Microsoft.Dynamics.Nav.Apps.Management.psd1" Import-Module $RoleTailoredPath\"Microsoft.Dynamics.Nav.Management.dll" $Instance = Get-NAVServerInstance $serviceTier -Force if($Instance.State -eq 'Stopped'){ Start-NAVServerInstance -ServerInstance $serviceTier -Force } $appPath | ForEach-Object { $version = (Get-NAVAppInfo -Path $_).Version $appName = (Get-NAVAppInfo -Path $_).Name $oldappName = (Get-NAVAppInfo -ServerInstance $serviceTier -Name "$appName").Name if ($oldappName){ $oldVersion = (Get-NAVAppInfo -ServerInstance $serviceTier -Name "$appName").Version $oldVersion = $oldVersion[0].ToString() } Write-Host "Publishing $appName (version $version) to $serviceTier" Publish-NAVApp -ServerInstance $serviceTier -Path $_ -SkipVerification if ($ForceSync) { Write-Host "Syncing $serviceTier (force sync = true)" Sync-NAVTenant $serviceTier -Mode ForceSync -Force Sync-NAVApp -ServerInstance $serviceTier -Name $appName -Version $version -Mode ForceSync -Force } else { Write-Host "Syncing $serviceTier (force sync = false)" Sync-NAVTenant $serviceTier -Mode Sync -Force Sync-NAVApp -ServerInstance $serviceTier -Name $appName -Version $version -Force } if (!$oldappName){ Write-Host "Installing app $appName" Install-NAVApp -ServerInstance $serviceTier -Name $appName -Version $version } else { if ($oldVersion -ne $version[0].ToString()) { Write-Host "Running data upgrade for app $appName" Start-NAVAppDataUpgrade -ServerInstance $serviceTier -Name $appName -Version $version Write-Host "Unpublishing app $appName (version $oldVersion)" Unpublish-NAVApp -ServerInstance $serviceTier -Name $appName -Version $oldVersion } } } } Export-ModuleMember -Function RIT-Deploy-App-OnPrem |