In C/AL-based versions of D365 BC/Business Central, functionality updated through *.fob (or txt) files. As of the BC15 release, functionality updates through replacing apps.
Steps
Run Windows PowerShell ISE as administrator:
# When running this script in a seperate session in ISE we need to import the modules again (Make sure to select the correct version of the Program Files folder): Import-Module "C:\Program Files\Microsoft Dynamics 365 Business Central\170\Service\Microsoft.Dynamics.Nav.Apps.Management.psd1" Import-Module "C:\Program Files\Microsoft Dynamics 365 Business Central\170\Service\Microsoft.Dynamics.Nav.Management.psd1" #This variable places the apps in the right order. When not updating all apps you can remove it/them from this list. $apps = "TI-Common,IEM Application,Application,TI-Lifecycle Base,IEM Lifecycle,IEM Extended Application,IEM Advanced Application" $serverInstance = 'BC170' #Make sure to download and unzip the artifacts folder to the location where you are installing from. $buildArtifactFolder = "C:\...\IEMNL17.0.44289.0" $appsSplit = $apps.Split(',') $i = $appsSplit.Count #Uninstall and unpublish the previous versions of the apps: Do{ $i-- Write-Host "Uninstall & Unpublish $($appsSplit[$i])" $installedAppVersion = Get-NAVAppInfo -ServerInstance $serverInstance|Where-Object { $_.Name -eq $appsSplit[$i] }|%{"$($_.Version.Major).$($_.Version.Minor).$($_.Version.Build).$($_.Version.Revision)"} Uninstall-NAVApp -Name $appsSplit[$i] -ServerInstance $serverInstance -Version $installedAppVersion Unpublish-NAVApp -Name $appsSplit[$i] -ServerInstance $serverInstance -Version $installedAppVersion } Until($i -eq 0) #Publish and Install the new versions of the apps $apps.Split(',') | ForEach-Object { $appName = $_ $AllAppFiles = Get-ChildItem -Path $buildArtifactFolder -Filter "*.app" -Recurse foreach ($AllAppFile in $AllAppFiles) {if ((Get-NAVAppInfo -Path $AllAppFile.FullName |Select-Object -expand Name) -eq $appName){$appFileName = $AllAppFile.FullName} } Write-Host "Install $_ ($appFileName)" $newAppVersion = Get-NAVAppInfo -Path $appFileName|%{"$($_.Version.Major).$($_.Version.Minor).$($_.Version.Build).$($_.Version.Revision)"} Publish-NAVApp -Path $appFileName -ServerInstance $serverInstance Sync-NAVApp -Name $appName -ServerInstance $serverInstance -Version $newAppVersion Start-NAVAppDataUpgrade -Name $appName -ServerInstance $serverInstance -Version $newAppVersion Install-NAVApp -Name $appName -ServerInstance $serverInstance -Version $newAppVersion }
Note
Data is always retained in the SQL Server tables. None of these commands touch the data.