Oracle 11.2 is now installed at image build time (preinstall) rather than deferred to the runtime enforcer. eDNC / NTLARS / UDC / CMM tooling all link against the Oracle home, so shipping an image without Oracle means the first-boot experience is broken until the enforcer completes. Uses the EXE-launches-CMD trick (same pattern as OpenText Setup-OpenText .cmd) since the preinstall runner only knows MSI/EXE. The wrapper itself accepts the zip next to the .cmd (preinstall flat layout) OR under ..\apps\ (SFLD share layout for the runtime enforcer), so one script serves both paths. First entry in Applications[] so downstream apps see Oracle already present. The 686 MB Oracle_OracleDatabase_11r2_V03.zip lives outside git and is pushed to /srv/samba/enrollment/pre-install/installers/oracle/ separately. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79 lines
2.8 KiB
Batchfile
79 lines
2.8 KiB
Batchfile
@echo off
|
|
REM Install-Oracle11r2.cmd
|
|
REM Expands the GE Oracle Client 11.2 Administrator zip to a temp dir and
|
|
REM runs Oracle Universal Installer silently with the GE-customized
|
|
REM response file.
|
|
REM
|
|
REM Accepted zip locations (first hit wins):
|
|
REM %~dp0Oracle_OracleDatabase_11r2_V03.zip (preinstall flat)
|
|
REM %~dp0..\apps\Oracle_OracleDatabase_11r2_V03.zip (SFLD share, enforcer)
|
|
REM
|
|
REM Called by:
|
|
REM - preinstall runner (Type=EXE, image build time)
|
|
REM - Install-FromManifest.ps1 (Type=CMD, runtime enforcer)
|
|
REM
|
|
REM Oracle 11.2 OUI exit codes worth knowing:
|
|
REM 0 = success
|
|
REM 3 = success but with warnings
|
|
REM 1 = general failure
|
|
REM 6 = silent install requested but missing / bad response file
|
|
|
|
setlocal enabledelayedexpansion
|
|
set "LOG=C:\Logs\OracleClient\install.log"
|
|
if not exist "C:\Logs\OracleClient" mkdir "C:\Logs\OracleClient"
|
|
|
|
REM Emit a datestamp
|
|
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value 2^>nul ^| find "="') do set LDT=%%I
|
|
set "STAMP=!LDT:~0,14!"
|
|
|
|
echo [%STAMP%] Install-Oracle11r2.cmd starting >> "%LOG%"
|
|
|
|
set "SRC_ZIP=%~dp0Oracle_OracleDatabase_11r2_V03.zip"
|
|
if not exist "%SRC_ZIP%" set "SRC_ZIP=%~dp0..\apps\Oracle_OracleDatabase_11r2_V03.zip"
|
|
set "STAGING=%TEMP%\oracle-11r2-install"
|
|
set "CLIENT_DIR=%STAGING%\Oracle_OracleDatabase_11r2_V03\client"
|
|
set "RSP=%CLIENT_DIR%\response\ge_client_install.rsp"
|
|
|
|
if not exist "%SRC_ZIP%" (
|
|
echo [%STAMP%] ERROR: zip not found at %SRC_ZIP% >> "%LOG%"
|
|
echo ERROR: zip not found at %SRC_ZIP%
|
|
exit /b 2
|
|
)
|
|
|
|
echo [%STAMP%] Expanding %SRC_ZIP% to %STAGING% >> "%LOG%"
|
|
if exist "%STAGING%" rmdir /s /q "%STAGING%" >nul 2>&1
|
|
mkdir "%STAGING%"
|
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command ^
|
|
"try { Expand-Archive -Path '%SRC_ZIP%' -DestinationPath '%STAGING%' -Force -ErrorAction Stop; exit 0 } catch { Write-Error $_; exit 1 }" ^
|
|
>> "%LOG%" 2>&1
|
|
|
|
if not exist "%CLIENT_DIR%\setup.exe" (
|
|
echo [%STAMP%] ERROR: expanded setup.exe not found at %CLIENT_DIR%\setup.exe >> "%LOG%"
|
|
exit /b 3
|
|
)
|
|
|
|
if not exist "%RSP%" (
|
|
echo [%STAMP%] ERROR: response file missing at %RSP% >> "%LOG%"
|
|
exit /b 4
|
|
)
|
|
|
|
echo [%STAMP%] Running OUI silent install (this takes 2-8 minutes) >> "%LOG%"
|
|
"%CLIENT_DIR%\setup.exe" -silent -waitforcompletion -nowait ^
|
|
-ignoreSysPrereqs ^
|
|
-responseFile "%RSP%" >> "%LOG%" 2>&1
|
|
set RC=%ERRORLEVEL%
|
|
|
|
echo [%STAMP%] OUI exit code: %RC% >> "%LOG%"
|
|
|
|
REM Cleanup staging dir to reclaim ~1.5 GB - OUI copies everything to ORACLE_HOME
|
|
echo [%STAMP%] Cleaning up staging dir >> "%LOG%"
|
|
rmdir /s /q "%STAGING%" >nul 2>&1
|
|
|
|
REM OUI returns 0 for success, 3 for success-with-warnings. Treat both as OK.
|
|
if %RC%==3 (
|
|
echo [%STAMP%] OUI reported warnings but install succeeded - returning 0 >> "%LOG%"
|
|
exit /b 0
|
|
)
|
|
|
|
exit /b %RC%
|