diff --git a/d365fo.tools/functions/invoke-d365installsqlpackage.ps1 b/d365fo.tools/functions/invoke-d365installsqlpackage.ps1 index fb4dac4a..d2d07eb2 100644 --- a/d365fo.tools/functions/invoke-d365installsqlpackage.ps1 +++ b/d365fo.tools/functions/invoke-d365installsqlpackage.ps1 @@ -4,84 +4,75 @@ Download SqlPackage.exe to your machine .DESCRIPTION - Download and extract the DotNet/.NET core x64 edition of the SqlPackage.exe to your machine - - It parses the raw html page and tries to extract the latest download link. - As of 12th April 2022, no .NET Core link is available on the download page. The cmdlet will always use the Url parameter. + Download and extract SqlPackage.exe to your machine. .PARAMETER Path Path to where you want the SqlPackage to be extracted to Default value is: "C:\temp\d365fo.tools\SqlPackage\SqlPackage.exe" - .PARAMETER SkipExtractFromPage - Instruct the cmdlet to skip trying to parse the download page and to rely on the Url parameter only + .PARAMETER Latest + Overrides the Url parameter and uses the latest download URL provided by the evergreen link https://aka.ms/sqlpackage-windows .PARAMETER Url - Url/Uri to where the latest SqlPackage download is located + Url/Uri to where the SqlPackage download is located - The default value is for v19.1 (16.0.6161.0) as of writing. This is the last version of SqlPackage based on .NET Core. - According to the Microsoft documentation, a .NET Core version of SqlPackage should be used. - https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/database/import-database - Further discussion can be found here: https://github.com/d365collaborative/d365fo.tools/issues/708 + The default value is for version 162.2.111.2 as of writing. + + Further discussion can be found here: https://github.com/d365collaborative/d365fo.tools/discussions/816 .EXAMPLE PS C:\> Invoke-D365InstallSqlPackage - This will download and extract the latest SqlPackage.exe. + This will download and extract SqlPackage.exe. It will use the default value for the Path parameter, for where to save the SqlPackage.exe. - It will try to extract the latest download URL from the RAW html page. It will update the path for the SqlPackage.exe in configuration. .EXAMPLE PS C:\> Invoke-D365InstallSqlPackage -Path "C:\temp\SqlPackage" - This will download and extract the latest SqlPackage.exe. - It will try to extract the latest download URL from the RAW html page. + This will download and extract SqlPackage.exe. + It will save the SqlPackage.exe to "C:\temp\SqlPackage". It will update the path for the SqlPackage.exe in configuration. .EXAMPLE - PS C:\> Invoke-D365InstallSqlPackage -SkipExtractFromPage + PS C:\> Invoke-D365InstallSqlPackage -Latest This will download and extract the latest SqlPackage.exe. - It will rely on the Url parameter to based the download from. - It will use the default value of the Url parameter. + It will use https://aka.ms/sqlpackage-windows as the download URL. It will update the path for the SqlPackage.exe in configuration. .EXAMPLE - PS C:\> Invoke-D365InstallSqlPackage -SkipExtractFromPage -Url "https://go.microsoft.com/fwlink/?linkid=3030303" + PS C:\> Invoke-D365InstallSqlPackage -Url "https://go.microsoft.com/fwlink/?linkid=3030303" - This will download and extract the latest SqlPackage.exe. - It will rely on the Url parameter to based the download from. + This will download and extract SqlPackage.exe. + It will rely on the Url parameter to base the download on. It will use the "https://go.microsoft.com/fwlink/?linkid=3030303" as value for the Url parameter. It will update the path for the SqlPackage.exe in configuration. .NOTES Author: Mötz Jensen (@Splaxi) + Author: Florian Hopfner (@FH-Inway) #> function Invoke-D365InstallSqlPackage { [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseShouldProcessForStateChangingFunctions", "")] - [CmdletBinding()] + [CmdletBinding(DefaultParameterSetName = 'ImportUrl')] [OutputType()] param ( + [Parameter(ParameterSetName = 'ImportUrl')] + [Parameter(ParameterSetName = 'ImportLatest')] [string] $Path = "C:\temp\d365fo.tools\SqlPackage", - - [switch] $SkipExtractFromPage, - - [string] $Url = "https://go.microsoft.com/fwlink/?linkid=2196334" + + [Parameter(ParameterSetName = 'ImportLatest')] + [switch] $Latest, + + [Parameter(ParameterSetName = 'ImportUrl')] + [string] $Url = "https://go.microsoft.com/fwlink/?linkid=2261576" ) - if (-not $SkipExtractFromPage) { - $content = (Invoke-WebRequest -Uri "https://learn.microsoft.com/en-us/sql/tools/sqlpackage-download" -UseBasicParsing).content - $res = $content -match 'Windows .NET Core<.*/td>\s*