Documentation Index

Fetch the complete documentation index at: https://docs.staedean.com/llms.txt

Use this file to discover all available pages before exploring further.

Update Industrial Equipment Manufacturing

Prev Next

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

  1. 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.