DimeScheduler.InstallBCExtension.ps1
<#PSScriptInfo
.VERSION 0.0.4.0 .GUID ddc4050c-9710-4183-b76d-1fd28c19d563 .AUTHOR Hendrik Bulens .COMPANYNAME Dime Software .ICONURI https://cdn.dimescheduler.com/dime-scheduler/v2/shape.png #> <# .SYNOPSIS Deploys the Dime.Scheduler extension to the Business Central instance. .DESCRIPTION Deploys the Dime.Scheduler extension to the Business Central instance. You can use either the -version parameter to download the latest available extension, or you can specify your own .app file through the -path argument. .PARAMETER serverInstance Required. The BC server instance. .PARAMETER version Optional. The supported BC wave that is being targeted: 13,14,15,16,17,18,19,20,21,22,23,24 .PARAMETER path Optional. Use this parameter to deploy your own .app file. .PARAMETER skipVerification Optional. Switch to skip verification: Only use this for development and testing purposes! #> param( [Parameter(mandatory = $true, HelpMessage = "Required. The BC server instance.")] [String]$serverInstance, [Parameter(mandatory = $false, HelpMessage = "Optional. The supported BC wave that is being targeted: 13,14,15,16,17,18,19,20,21,22,23,24")] [ValidateSet(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)] [int]$version, [Parameter(mandatory = $false, HelpMessage = "Optional. The release number of the connector extension. Leave empty to use the latest official version.")] [string]$release, [Parameter(mandatory = $false, HelpMessage = "Optional. Use this parameter to deploy your own .app file.")] [string]$path, [Parameter(mandatory = $false, HelpMessage = "Optional. Switch to skip verification: Only use this for development and testing purposes!")] [switch]$skipVerification ) Write-Output "" Write-Output "" Write-Output "*" Write-Output "**" Write-Output "***" Write-Output "****" Write-Output "*****" Write-Output "******" Write-Output "*******" Write-Output "********" Write-Output "*********" Write-Output "**********" Write-Output "***********" Write-Output "************" Write-Output "" Write-Output "_____ _ _____ _ _ _" Write-Output "| __ \(_) / ____| | | | | | |" Write-Output "| | | |_ _ __ ___ ___ | (___ ___| |__ ___ __| |_ _| | ___ _ __" Write-Output "| | | | | '_ ` _ \ / _ \ \___ \ / __| '_ \ / _ \/ _` | | | | |/ _ \ '__|" Write-Output "| |__| | | | | | | | __/_ ____) | (__| | | | __/ (_| | |_| | | __/ |" Write-Output "|_____/|_|_| |_| |_|\___(_)_____/ \___|_| |_|\___|\__,_|\__,_|_|\___|_|" Write-Output "" Write-Output "" Write-Output "Deploying the Dime.Scheduler extension to $serverInstance." Write-Output "" Write-Output "************" Write-Output "***********" Write-Output "**********" Write-Output "*********" Write-Output "********" Write-Output "*******" Write-Output "******" Write-Output "*****" Write-Output "****" Write-Output "***" Write-Output "**" Write-Output "*" Write-Output "" Write-Output "" function Green { process { Write-Host $_ -ForegroundColor Green } } function Orange { process { Write-Host $_ -ForegroundColor DarkYellow } } function Red { process { Write-Host $_ -ForegroundColor Red } } function Test-Command($cmdname) { return [bool](Get-Command -Name $cmdname -ErrorAction SilentlyContinue) } try { if ((Test-Command -cmdname 'Publish-NAVApp') -eq $false) { Write-Output "This script must be run in a Business Central Administration Shell." | Red return; } if (!$path -and $version -eq $null) { Write-Output "Either of the -version or -path parameters is required." | Red return; } if (!$path) { Write-Output "Download the app [PENDING]" | Orange $fileName = $release?.Trim() ? "Dime.Scheduler_${release}.app" : 'Dime.Scheduler.app' $appUrl = "https://storage.dimescheduler.com/bcextensions/${version}/${fileName}" Invoke-WebRequest $appUrl -OutFile $fileName $path = Join-Path $PSScriptRoot $fileName if (-not (Test-Path $path)) { Throw "Download failed. The file $path does not exist." } Write-Output "Download the app [COMPLETED]" | Green } Write-Output "Publish the app [PENDING]" | Orange Publish-NAVApp -ServerInstance $serverInstance -Path $path -SkipVerification $skipVerification Write-Output "Publish the app [COMPLETED]" | Green Write-Output "Sync the app [PENDING]" | Orange Sync-NavApp -ServerInstance $serverInstance -Name "Dime.Scheduler" Write-Output "Sync the app [COMPLETED]" | Green Write-Output "Install the app [PENDING]" | Orange Install-NAVApp -ServerInstance $serverInstance -Name "Dime.Scheduler" Write-Output "Install the app [COMPLETED]" | Green Write-Output "The extension for Dime.Scheduler has been installed and will be available shortly!" | Green } catch { Write-Output "Couldn't install the extension for Dime.Scheduler in Business Central." | Red Write-Output $_ | Red return $_ } |