Hi Xa,
I've put the code below, all I've done is echo most of the error outputs from each section of the batch script.
In my last comment, I referred to a few issues that I've seen, below I've put what these are and where to find them in the sections that I've echoed out.
ISO Language Checks: Section 9 to Section 11
Incompatible Software Installed (SEP in my example): Section 14 to Section 17
I have reported to Symantec that the batch script is incorrect as it doesn't exit with the correct error code on both examples, but I need to record this and send it to them.
Please see below for the batch script - make sure to run CMD as an administrator to run it and see the echoed outputs.
Thanks
@echo off
Setlocal
cd %~dp0
call swuenv.bat
echo Installation tools are located in '%InstallToolsPath_832C527C-B9C9-46FB-B1F1-2F35434FF90D%' directory
copy /y "%InstallToolsPath_832C527C-B9C9-46FB-B1F1-2F35434FF90D%\*.*" .\
set PATHTOFIXES=%~dp0
del /f /q deploy-status.txt
if exist deploy-status.txt exit /b 80
Set PATCHPROCESSED=0
Set REBOOTREQ=0
:PATCH1
echo Starting patch installation
set LSFN=Windows10x64Professional1709.iso
"%PATHTOFIXES%CL5.exe" 2097680 DeploymentEventsHandler.dll 00000000-0000-0000-0000-000000000000 0 NR 4 "Windows10x64Professional1709.iso"
"%PATHTOFIXES%CL5.exe" 2097157 1 "" "MSSQLSERVER" "stPackager" 1709 "WINDOWS 10 PRO (X64)" SP
setlocal enabledelayedexpansion
SET regReadErr=9999
SET isoMountErr=9999
SET volReadErr=9999
SET fireWallExportErr=9999
SET adminActiveErr=9999
SET windowsEditionErr=9999
SET isoEditionErr=9999
SET langReadErr=9999
SET isoLangErr=9999
SET windowsMajorVersionErr=9999
SET dismountErr=9999
SET installFileErr=9999
SET LASTERR=9998
SET STscript=%systemdrive%\STscript\
SET argTraceFile=%STscript%Trace.txt
SET remoteRegStartState=0x4
SET regStart=disabled
SET volume=
SET adminActive=No
SET windowsEdition=Any
SET index=1
SET windowsMajorVersion=0
SET isoEditions=None
SET LCID=0410
SET arg=notfound
SET argList=
SET argValue=2
SET isoLang=
SET installFile=install.esd
SET getVolumeCount=0
SET en-US="0409,2809,1009,2409,4009,3809,3009,0C09,1809,2009,1409,3409,1C09,2C09,"
SET en-GB="0809"
SET ar-SA="0401,2401,3801,1C01,2801,4001,2001,1801,1001,3001,3401,2C01,0801,0C01,3C01,1401"
SET bg-BG="0402"
SET zh-CN="0804"
SET cs-CZ="0405"
SET da-DK="0406"
SET de-DE="0407,1407,0C07,1007,0807"
SET el-GR="0408"
SET es-ES="0C0A,380A,200A,500A,280A,3C0A,180A,4C0A,480A,100A,440A,300A,1C0A,140A,240A,340A,400A,2C0A"
SET es-MX="080A"
SET et-EE="0425"
SET fi-FI="040B"
SET fr-FR="040C,140C,180C,100C,080C"
SET fr-CA="0C0C"
SET he-IL="040D"
SET zh-HK="0C04"
SET hr-HR="041A"
SET hu-HU="040E"
SET it-IT="0410,0810"
SET ja-JP="0411"
SET ko-KR="0412"
SET lt-LT="0427"
SET lv-LV="0426"
SET nb-NO="0414"
SET nl-NL="0413,0813"
SET pl-PL="0415"
SET pt-PT="0816"
SET pt-BR="0416"
SET ro-RO="0418"
SET ru-RU="0419"
SET sk-SK="041B"
SET sl-SI="0424"
SET sr-Latn-RS="081A"
SET sv-SE="041D,081D"
SET th-TH="041E"
SET tr-TR="041F"
SET zh-TW="0404"
SET uk-UA="0422"
mkdir %STscript%Deployment
echo ***************************************************************** >> %argTraceFile% 2>&1
FOR /F "tokens=3" %%B IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentMajorVersionNumber 2^>^>%argTraceFile%') DO (
SET windowsMajorVersion=%%B& SET windowsMajorVersionErr=!errorlevel!
)
echo Section 1 - Error: !errorlevel!
"%PATHTOFIXES%cl5.exe" 2097212 0 "Windows Major Version: %windowsMajorVersion% error: %windowsMajorVersionErr%"
echo Section 2 - Windows Major Version: %windowsMajorVersion% Error: %windowsMajorVersionErr%
IF [%windowsMajorVersionErr%] EQU [0] GOTO windowsMajorErrPass
IF [%windowsMajorVersionErr%] EQU [1] GOTO windowsMajorErrPass
SET LASTERR=%windowsMajorVersionErr%& GOTO end
:windowsMajorErrPass
IF [%windowsMajorVersion%] NEQ [0xa] SET LASTERR=1150& GOTO end
powershell "Mount-Diskimage '%PATHTOFIXES%%LSFN%'" & SET isoMountErr=!errorlevel!
echo Section 3 - Path: %PATHTOFIXES%%LSFN% Error: !errorlevel!
"%PATHTOFIXES%cl5.exe" 2097212 0 " ISO mount error: %isoMountErr%"
IF [%isoMountErr%] NEQ [0] SET LASTERR=%isoMountErr%& GOTO end
SET pipe=^|
echo Section 4 - Error: %isoMountErr%
:getVolume
SET /A getVolumeCount = getVolumeCount +1
FOR /F "tokens=1" %%B IN ('powershell "Get-Diskimage -Imagepath '%PATHTOFIXES%%LSFN%' !pipe! get-Volume"') DO (
SET volume=%%B& SET volReadErr=!errorlevel!
)
echo Section 5 - Error: !errorlevel!
"%PATHTOFIXES%cl5.exe" 2097212 0 "Volume: %volume% error: %volReadErr%"
IF [%volReadErr%] EQU [0] GOTO gotVolume
IF getVolumeCount LEQ 5 SET GOTO getVolume
SET LASTERR=%volReadErr%& GOTO end
:gotVolume
FOR /F "tokens=3" %%B IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v EditionID 2^>^>%argTraceFile%') DO (
SET windowsEdition=%%B& SET windowsEditionErr=!errorlevel!
)
echo Section 6 - Windows edition: %windowsEdition% Error: %windowsEditionErr%
"%PATHTOFIXES%cl5.exe" 2097212 0 "Windows edition: %windowsEdition% error: %windowsEditionErr%"
FOR /F %%B IN ('dir /B %volume%:\sources\install.* 2^>^>%argTraceFile%') DO (
SET installFile=%%B& SET installFileErr=!errorlevel!
)
echo Section 7 - Install Image: %installFile% Error: %installFileErr%
"%PATHTOFIXES%cl5.exe" 2097212 0 "Install Image: %installFile% error: %installFileErr%"
FOR /L %%A IN (1,1,25) DO (
FOR /F "tokens=*" %%B IN ('dism /get-wiminfo /wimfile:%volume%:\sources\%installFile% /index:%%A /English ^| findstr /R /C:"Edition.*:" 2^>^>%argTraceFile%') DO (
SET isoEditions=!isoEditions!%%B& SET isoEditionErr=!errorlevel!
)
)
echo Section 8 - ISO edition: %isoEdition% Error: %isoEditionErr%
"%PATHTOFIXES%cl5.exe" 2097212 0 "ISO edition: %isoEdition% error: %isoEditionErr%"
IF [%isoEditionErr%] NEQ [0] SET LASTERR=%isoEditionErr%& GOTO end
IF /I "!isoEditions:%windowsEdition%=!" EQU "!isoEditions!" SET LASTERR=2147746298& GOTO end
FOR /F "tokens=3" %%B IN ('REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language /v InstallLanguage 2^>^>%argTraceFile%') DO (
SET LCID=%%B& SET langReadErr=%errorlevel%
)
echo Section 9 - LCID: %LCID% Error: %errorlevel%
IF [%langReadErr%] NEQ [0] SET LASTERR=!langReadErr!& GOTO end
FOR /F "skip=2" %%B IN (%volume%:\sources\lang.ini) DO (
SET isoLang=%%B& SET isoLangErr=!errorlevel!&goto loopdone
)
:loopdone
echo Section 10 - ISOLang: !%isoLang%! Error: %isoLangErr%
IF [%isoLangErr%] NEQ [0] SET LASTERR=!isoLangErr!& GOTO end
SET argList=!%isoLang%!
echo Section 10.1 - argList !%isoLang%!
echo."%argList%"| findstr /i /C:"%LCID%" > nul && (
SET arg=found
)
echo Section 11 - LCID: %LCID% isoLang: %isoLang% Match found: %arg%
"%PATHTOFIXES%cl5.exe" 2097212 0 "LCID: %LCID% isoLang: %isoLang% Match found: %arg%"
IF %arg% NEQ found SET LASTERR=1623& GOTO end
FOR /F "tokens=3" %%B IN ('REG QUERY HKLM\SYSTEM\CurrentControlSet\services\RemoteRegistry /v start 2^>^>%argTraceFile%') DO (
SET remoteRegStartState=%%B& SET regReadErr=%errorlevel%
)
echo Section 12 - Remote Registry: %remoteRegStartState% Error: %regReadErr%
"%PATHTOFIXES%cl5.exe" 2097212 0 " Remote Registry: %remoteRegStartState% error: %regReadErr%"
IF [%regReadErr%] NEQ [0] SET LASTERR=!regReadErr!& GOTO end
IF [%remoteRegStartState%]==[0x0] SET regStart=boot
IF [%remoteRegStartState%]==[0x1] SET regStart=system
IF [%remoteRegStartState%]==[0x2] SET regStart=auto
IF [%remoteRegStartState%]==[0x3] SET regStart=demand
IF [%remoteRegStartState%]==[0x4] SET regStart=disabled
FOR /F "tokens=3" %%B IN ('net user administrator ^| findstr /C:"Account active" 2^>^>%argTraceFile%') DO (
SET adminActive=%%B& SET adminActiveErr=!errorlevel!
)
echo Section 13 - Admin state: %adminActive% Error: %adminActiveErr%
"%PATHTOFIXES%cl5.exe" 2097212 0 " Admin state: %adminActive% error: %adminActiveErr%"
echo.sc config RemoteRegistry start= !regStart!> %STscript%setupcomplete.cmd
echo.sc start RemoteRegistry>> %STscript%setupcomplete.cmd
echo.net user administrator /active:%adminActive%>> %STscript%setupcomplete.cmd
if exist "langpack" set languageOption=/installLangPacks "%~dp0\langpack"
"%volume%:\setup.exe" /auto upgrade %languageOption% /quiet /showoobe none /noreboot /telemetry disable /dynamicupdate disable /Postoobe %STscript%setupcomplete.cmd & SET LASTERR=!errorlevel!
echo Section 14 - Error: !errorlevel!
:end
echo Section 14.1 - Error: !errorlevel!
powershell "Dismount-Diskimage -Imagepath '%PATHTOFIXES%%LSFN%'"& SET dismountErr=!errorlevel!
"%PATHTOFIXES%cl5.exe" 2097212 0 " ISO unmount error: %dismountErr%"
echo Section 15 - Error: !errorlevel! Last Error: %LASTERR%
IF %LASTERR%==0 SET LASTERR=3010
"%PATHTOFIXES%cl5.exe" 2097212 0 "%LSFN% returned %LASTERR%"
echo Section 16 - Error: !errorlevel! Last Error: %LASTERR%
IF %LASTERR% EQU 3010 (
SET REBOOTREQ=1
"%PATHTOFIXES%CL5.exe" 2097680 DeploymentEventsHandler.dll 00000000-0000-0000-0000-000000000000 0 %LASTERR% 6 "Windows10x64Professional1709.iso"
"%PATHTOFIXES%CL5.exe" 2097418 1 "WINDOWS 10 PRO (X64)" 1709 "MSSQLSERVER" 1709 "Windows10x64Professional1709-task.xml" 0
) ELSE (
IF %LASTERR% EQU 0 (
"%PATHTOFIXES%CL5.exe" 2097680 DeploymentEventsHandler.dll 00000000-0000-0000-0000-000000000000 0 %LASTERR% 5 "Windows10x64Professional1709.iso"
"%PATHTOFIXES%CL5.exe" 2097418 1 "WINDOWS 10 PRO (X64)" 1709 "MSSQLSERVER" 1709 "Windows10x64Professional1709-task.xml" 0
) ELSE (
"%PATHTOFIXES%CL5.exe" 2097680 DeploymentEventsHandler.dll 00000000-0000-0000-0000-000000000000 0 %LASTERR% 1 "Windows10x64Professional1709.iso"
"%PATHTOFIXES%CL5.exe" 2097418 1 "WINDOWS 10 PRO (X64)" 1709 "MSSQLSERVER" 1709 "Windows10x64Professional1709-task.xml" 0
)
)
echo Section 17 - Error: !errorlevel! Last Error: %LASTERR%
Set PATCHPROCESSED=1
echo Patch processed, last exit code %errorlevel%
if defined HFOfficeDir rmdir /s /q "%HFOfficeDir%"
echo Section 15
:PATCHEND1
IF %PATCHPROCESSED%==0 GOTO EOFDEPLOYMENT
SET REBOOTREQ=0
"%PATHTOFIXES%CL5.exe" 2097682 DeploymentEventsHandler.dll 00000000-0000-0000-0000-000000000000 0 %REBOOTREQ%
echo Section 16
:EOFDEPLOYMENT
if not exist deploy-status.txt exit /b 2
Set /P DEPLOY_STATUS= < deploy-status.txt
exit /b %DEPLOY_STATUS%
echo Section 17