The Microsoft VC++ bootstrappers (vcredist*_x86.exe) ignore /norestart and trigger immediate Windows reboots when CRT DLLs are in use, which in practice is always. We saw this break a live Standard PC imaging run (installlog showed the manual shutdown -a sequence between runs). Fix follows the existing 2008 pattern: extract the inner MSIs from each Burn bundle, run them via msiexec with REBOOT=ReallySuppress (a hard Windows Installer property the bootstrapper can't override), and treat exit 3010 as success. Files are now staged per-version under dependencies/vcredist/<version>/ because each MSI's Media table hardcodes its CAB filename, so the pairs would otherwise collide. preinstall.json: 4 EXE entries replaced with 8 MSI entries (Min+Add for 2012/2013/2022 because each version's Burn bundle ships them as separate MSIs). 2008 also moved into the same vcredist/2008/ subdir for consistency. ProductCodes verified against the existing detection paths (the previous "bootstrapper" GUIDs were actually the Min runtime GUIDs inherited up the chain). sync-preinstall.sh: now tarballs the dependencies/vcredist/ subtree to preserve directory structure across the scp+sudo-cp boundary, flat installers (UDC, Oracle) still copied individually, and the remote install script now removes the legacy flat vc_red.msi/cab plus the obsolete vcredist*_x86.exe bootstrappers on every sync. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.2 KiB
Executable File
6.2 KiB
Executable File