@@ -181,6 +181,46 @@ function Locate-HighestVersionSqlPackageWithSql()
181181
182182function Locate-HighestVersionSqlPackageWithDacMsi ()
183183{
184+ $sqlDataTierFrameworkRegKeyWow = " HKLM:" , " SOFTWARE" , " Wow6432Node" , " Microsoft" , " Microsoft SQL Server" , " Data-Tier Application Framework" -join [System.IO.Path ]::DirectorySeparatorChar
185+ $sqlDataTierFrameworkRegKey = " HKLM:" , " SOFTWARE" , " Microsoft" , " Microsoft SQL Server" , " Data-Tier Application Framework" -join [System.IO.Path ]::DirectorySeparatorChar
186+
187+ if (-not (Test-Path $sqlDataTierFrameworkRegKey ))
188+ {
189+ $sqlDataTierFrameworkRegKey = $sqlDataTierFrameworkRegKeyWow
190+ }
191+
192+ if ((Test-Path $sqlDataTierFrameworkRegKey ))
193+ {
194+ $keys = Get-Item $sqlDataTierFrameworkRegKey | % {$_.GetSubKeyNames ()}
195+ $versions = Get-SubKeysInFloatFormat $keys | Sort-Object - Descending
196+ $installedMajorVersion = 0
197+
198+ foreach ($majorVersion in $versions )
199+ {
200+ $sqlInstallRootRegKey = " SOFTWARE" , " Microsoft" , " Microsoft SQL Server" , " Data-Tier Application Framework" , " $majorVersion " -join [System.IO.Path ]::DirectorySeparatorChar
201+ $sqlInstallRootPath64 = Get-RegistryValueIgnoreError LocalMachine " $sqlInstallRootRegKey " " InstallDir" Registry64
202+ $sqlInstallRootPath32 = Get-RegistryValueIgnoreError LocalMachine " $sqlInstallRootRegKey " " InstallDir" Registry32
203+ if ($sqlInstallRootPath64 -ne $null )
204+ {
205+ $sqlInstallRootPath = $sqlInstallRootPath64
206+ break
207+ }
208+ if ($sqlInstallRootPath32 -ne $null )
209+ {
210+ $sqlInstallRootPath = $sqlInstallRootPath32
211+ break
212+ }
213+ }
214+
215+ $DacInstallPath = [System.IO.Path ]::Combine($sqlInstallRootPath , " SqlPackage.exe" )
216+
217+ if (Test-Path $DacInstallPath )
218+ {
219+ Write-Verbose " Dac Framework installed with SQL Version $majorVersion found at $DacInstallPath on machine $env: COMPUTERNAME "
220+ return $DacInstallPath , $majorVersion
221+ }
222+ }
223+
184224 $sqlRegKeyWow = " HKLM:" , " SOFTWARE" , " Wow6432Node" , " Microsoft" , " Microsoft SQL Server" , " DACFramework" , " CurrentVersion" -join [System.IO.Path ]::DirectorySeparatorChar
185225 $sqlRegKey = " HKLM:" , " SOFTWARE" , " Microsoft" , " Microsoft SQL Server" , " DACFramework" , " CurrentVersion" -join [System.IO.Path ]::DirectorySeparatorChar
186226
0 commit comments