From 8e1f81b9428747fc1b2cd55f5fc5e3c88c3652ba Mon Sep 17 00:00:00 2001 From: cproudlock Date: Sun, 24 May 2026 14:07:45 -0400 Subject: [PATCH] startnet.cmd: robocopy /XD instead of xcopy /EXCLUDE:NUL for waxtrace stage WJF00159 imaging pass on 2026-05-24 logged: [ERROR] waxtrace-manifest.json not found at C:\WaxTrace-Install\waxtrace-manifest.json even though the manifest is present on the PXE share. Root cause: the xcopy approach copied EVERYTHING including the 12+ GB formtracepak\ directory of vendor ISOs, then deleted formtracepak\ afterward and re-created it with just the one matched ISO. The /EXCLUDE:NUL placeholder ("pass NUL device as exclude-file") was silently ignored by xcopy in WinPE, and the redirection >/dev/null 2>/dev/null hid any errors. The copy was either aborting mid-stream (running out of patience / disk / connection) or the manifest landed but got clobbered in the rmdir/recreate dance. Switch to robocopy /XD formtracepak which excludes the dir up front so we never even attempt the 12 GB of ISOs. Keep /NFL /NDL to suppress per-file listing but leave overall output visible (no >/dev/null) so any failure is debuggable from the install log. Check errorlevel >= 8 explicitly (robocopy exit codes 0-7 are all "OK"). Smoke tested on win11 VM with a representative tree (manifest + bay-config + backups\WJF00159.zip + prereqs\hasp.exe + dummy formtracepak\ ISOs): formtracepak\ excluded, all other files + sub-dirs copied cleanly, exit 1 (= OK). Pushed to boot.wim.with-ps (the correct PowerShell-bearing wim - the one I had been editing before was missing powershell.exe) and deployed to /var/www/html/win11/sources/boot.wim on 172.16.9.1. --- playbook/startnet.cmd | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/playbook/startnet.cmd b/playbook/startnet.cmd index bc0d3b3..5b5573a 100644 --- a/playbook/startnet.cmd +++ b/playbook/startnet.cmd @@ -493,11 +493,14 @@ REM (so 09-Setup-WaxAndTrace.ps1 mounts the right version per bay) if /i not "%PCTYPE%"=="gea-shopfloor-waxtrace" goto skip_waxtrace_stage if not exist "Y:\installers-post\waxtrace\waxtrace-manifest.json" goto skip_waxtrace_missing mkdir W:\WaxTrace-Install 2>NUL -REM xcopy everything except the formtracepak\ dir (we cherry-pick one ISO below). -xcopy /E /Y /I /EXCLUDE:NUL "Y:\installers-post\waxtrace" "W:\WaxTrace-Install\" >NUL 2>NUL -REM (Exclude file via /EXCLUDE expects a file; simpler to xcopy the whole tree -REM then delete the formtracepak\ subdir + re-create with just the matched ISO.) -if exist "W:\WaxTrace-Install\formtracepak" rmdir /S /Q "W:\WaxTrace-Install\formtracepak" +REM robocopy /XD excludes the formtracepak\ dir up front so we don't waste +REM disk + time copying 12+ GB of vendor ISOs only to delete them. The +REM matched FTPak ISO gets cherry-picked below into the same target dir. +REM /NFL/NDL keep the listing manageable; output left visible (no >NUL) so +REM any failure is debuggable from the install log. robocopy exit codes +REM 0-7 are "OK" (per Microsoft); 8+ is real failure. +robocopy "Y:\installers-post\waxtrace" "W:\WaxTrace-Install" /E /XD formtracepak /R:1 /W:1 /NFL /NDL +if errorlevel 8 echo WARNING: robocopy exit %ERRORLEVEL% - some files may not have copied. mkdir W:\WaxTrace-Install\formtracepak 2>NUL echo Staged WaxTrace bootstrap minus formtracepak\ to W:\WaxTrace-Install. REM Resolve bay-config: writes W:\Enrollment\waxtrace\{version,model,userid}.txt