diff --git a/CHANGELOG.md b/CHANGELOG.md index 53a948c..0fbbcb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +**1.8** + +Issues: +- GH-54: Add support for the installation of the Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) v18.3.0.0 (ISHServer.14) +- GH-64: Add support for the installation of ODAC 19c Release 3 for Microsoft Windows 32-bit (ISHServer.14) + Installation of ODAC 12 (ODTwithODAC122010) is still the default when using Install-ISHToolOracleODAC. + To install ODAC 19c Release 3 (ODAC193Xcopy_32bit), you need to use Install-ISHToolOracleODACv19. + **1.7** Issues: diff --git a/Source/Modules/ISHServer/Get-ISHPrerequisites.ps1 b/Source/Modules/ISHServer/Get-ISHPrerequisites.ps1 index 4dcd956..648aae4 100644 --- a/Source/Modules/ISHServer/Get-ISHPrerequisites.ps1 +++ b/Source/Modules/ISHServer/Get-ISHPrerequisites.ps1 @@ -121,6 +121,8 @@ function Get-ISHPrerequisites { $filesToDownload+=Get-Variable -Name "ISHServer:AdoptOpenJDK" -ValueOnly $filesToDownload+=Get-Variable -Name "ISHServer:AdoptOpenJRE" -ValueOnly + $filesToDownload+=Get-Variable -Name "ISHServer:MSOLEDBSQL" -ValueOnly + $filesToDownload+="$(Get-Variable -Name "ISHServer:Oracle19" -ValueOnly).zip" } #Dependend on Operating System Information (OS Server vesion, already installed prerequisites) diff --git a/Source/Modules/ISHServer/ISHServer.14.psm1 b/Source/Modules/ISHServer/ISHServer.14.psm1 index b1de4e8..8fab5f7 100644 --- a/Source/Modules/ISHServer/ISHServer.14.psm1 +++ b/Source/Modules/ISHServer/ISHServer.14.psm1 @@ -23,10 +23,13 @@ Set-Variable -Name "ISHServer:HtmlHelp" -Value "htmlhelp.zip" -Scope "Script" -O Set-Variable -Name "ISHServer:AntennaHouse" -Value "V6-5-R1-Windows_X64_64E.exe" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:AntennaHouseInstallPath" -Value "Antenna House\AHFormatterV65\" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:Oracle" -Value "ODTwithODAC122010" -Scope "Script" -Option Constant +Set-Variable -Name "ISHServer:Oracle19" -Value "ODAC193Xcopy_32bit" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:MicrosoftVisualCPlusPlusRedistributable" -Value "NETFramework2015_4.6_MicrosoftVisualC++Redistributable_(vc_redist.x64).exe" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:NETFrameworkRequiredVersion" -Value "4.7.2" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:NETFramework" -Value "NETFramework2017_4.7.2.xxxxx_(NDP472-KB4054530-x86-x64-AllOS-ENU).exe" -Scope "Script" -Option Constant Set-Variable -Name "ISHServer:VisualBasicRuntime" -Value "vbrun60sp6.exe" -Scope "Script" -Option Constant +Set-Variable -Name "ISHServer:MSOLEDBSQLRequiredVersion" -Value "18.2.1.0" -Scope "Script" -Option Constant +Set-Variable -Name "ISHServer:MSOLEDBSQL" -Value "msoledbsql_18.3.0.0_x64.msi" -Scope "Script" -Option Constant #Set-Variable -Name "ISHServer:MSXML" -Value "MSXML.40SP3.msi" -Scope "Script" -Option Constant $exportNames=@( @@ -71,9 +74,11 @@ $exportNames=@( "Install-ISHToolHtmlHelp" "Install-ISHToolAntennaHouse" "Install-ISHToolOracleODAC" + "Install-ISHToolOracleODACv19" "Install-ISHWindowsFeature" "Install-ISHWindowsFeatureIISWinAuth" "Install-ISHVisualBasicRuntime" + "Install-ISHToolMSOLEDBSQL" #endregion #region Regional settings diff --git a/Source/Modules/ISHServer/Install-ISHToolMSOLEDBSQL.ps1 b/Source/Modules/ISHServer/Install-ISHToolMSOLEDBSQL.ps1 new file mode 100644 index 0000000..e07c6f2 --- /dev/null +++ b/Source/Modules/ISHServer/Install-ISHToolMSOLEDBSQL.ps1 @@ -0,0 +1,67 @@ +<# +# Copyright (c) 2014 All Rights Reserved by the SDL Group. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#> + +function Install-ISHToolMSOLEDBSQL { + [CmdletBinding()] + Param() + + begin { + . $PSScriptRoot\Private\Test-RunningAsElevated.ps1 + Test-RunningAsElevated -StopCallerPSCmdlet $PSCmdlet + + . $PSScriptRoot\Get-ISHServerFolderPath.ps1 + } + + process { + [Version]$MSOLEDBSQLRequiredVersion = Get-Variable -Name "ISHServer:MSOLEDBSQLRequiredVersion" -ValueOnly + + [Version]$MSOLEDBSQLInstalledVersion = "0.0.0" + $MSOLEDBSQLInstalled = (New-Object system.data.oledb.oledbenumerator).GetElements() | Where-Object { ($_.SOURCES_NAME -like '*MSOLEDBSQL*') -and ($_.SOURCES_NAME -notlike "*Enumerator") } + if ($MSOLEDBSQLInstalled) { + # Get installed version of MSOLEDBSQL + $MSOLEDBSQLRegistryPath = "HKLM:\Software\Microsoft\Microsoft OLE DB Driver for SQL Server" + if (Test-Path $MSOLEDBSQLRegistryPath) { + [Version]$MSOLEDBSQLInstalledVersion = (Get-ItemProperty "$MSOLEDBSQLRegistryPath\*").Version + } + } + + if ($MSOLEDBSQLInstalledVersion -ge $MSOLEDBSQLRequiredVersion) { + Write-Verbose "The installed version of MSOLEDBSQL ($($MSOLEDBSQLInstalledVersion)) is higher than or equal to the minimal required version ($($MSOLEDBSQLRequiredVersion))." + } + else { + $fileName = Get-Variable -Name "ISHServer:MSOLEDBSQL" -ValueOnly + $filePath = Join-Path (Get-ISHServerFolderPath) $fileName + $logFile = Join-Path $env:TEMP "$FileName.log" + $arguments = @( + "/package" + $filePath + "/qn" + "/norestart" + "/lv" + "$logFile" + "IACCEPTMSOLEDBSQLLICENSETERMS=YES" + ) + + Write-Debug "Installing $filePath" + Start-Process "msiexec" -ArgumentList $arguments -Wait -Verb RunAs + Write-Verbose "Installed $fileName" + Write-Warning "You must restart the server before you proceed." + } + } + end { + + } +} diff --git a/Source/Modules/ISHServer/Install-ISHToolOracleODACv19.ps1 b/Source/Modules/ISHServer/Install-ISHToolOracleODACv19.ps1 new file mode 100644 index 0000000..1c5ad8e --- /dev/null +++ b/Source/Modules/ISHServer/Install-ISHToolOracleODACv19.ps1 @@ -0,0 +1,74 @@ +<# +# Copyright (c) 2014 All Rights Reserved by the SDL Group. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#> + +function Install-ISHToolOracleODACv19 +{ + [CmdletBinding()] + Param() + + begin + { + . $PSScriptRoot\Private\Test-RunningAsElevated.ps1 + Test-RunningAsElevated -StopCallerPSCmdlet $PSCmdlet + + . $PSScriptRoot\Get-ISHServerFolderPath.ps1 + } + + process + { + # https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20Docs-v2.1.1/GUID-DD65E7B5-204B-48D7-91F9-CBDCB0730B80 + $baseFileName=Get-Variable -Name "ISHServer:Oracle19" -ValueOnly + $fileName="$baseFileName.zip" + $filePath=Join-Path (Get-ISHServerFolderPath) $fileName + $targetPath=Join-Path $env:TEMP "$baseFileName" + $oracleHomePath="C:\Oracle\product\19.0.0\ODAC" + if(Test-Path $targetPath) + { + Write-Warning "$fileName is already available in $targetPath" + } + else + { + Write-Debug "Creating $targetPath" + New-Item $targetPath -ItemType Directory |Out-Null + Write-Debug "Unzipping $filePath to $targetPath" + [System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')|Out-Null + [System.IO.Compression.ZipFile]::ExtractToDirectory($filePath, $targetPath)|Out-Null + Write-Verbose "Unzipped $filePath" + } + + # Install the ODAC components for the Oracle Provider for OLEDB + $cmd32Path="$Env:SystemRoot\SysWOW64\cmd.exe" + $setupPath=Join-Path $targetPath "install.bat" + $arguments=@( + "/c" + "$setupPath" + "oledb" + "$oracleHomePath" + "ODAC" + ) + + Write-Debug "Installing using $setupPath from $cmd32Path" + Start-Process $cmd32Path -ArgumentList $arguments -WorkingDirectory $targetPath -Wait -Verb RunAs + Write-Verbose "Installed using $setupPath from $cmd32Path" + + [Environment]::SetEnvironmentVariable("Path", "$oracleHomePath;$oracleHomePath\bin;" + $env:Path, "Machine") + [Environment]::SetEnvironmentVariable("TNS_ADMIN", "$oracleHomePath\network\admin", "Machine") + } + end + { + + } +}