diff --git a/playbook/preinstall/preinstall.json b/playbook/preinstall/preinstall.json index efbe406..9c14904 100644 --- a/playbook/preinstall/preinstall.json +++ b/playbook/preinstall/preinstall.json @@ -90,6 +90,14 @@ "DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{C18FB403-1E88-43C8-AD8A-CED50F23DE8B}", "PCTypes": ["*"] }, + { + "_comment": "OpenText HostExplorer 15 SP1 ShopFloor - replaced the WJDT-built OpenText.exe Inno wrapper with our own Setup-OpenText.ps1 that does the same install steps (msiexec base + ShopFloor.mst transform + SP1 .msp patch) PLUS fans the per-user profile/keymap/menu/macro content out to Default User and every existing user profile. The Inno wrapper deployed per-user content to {userappdata} which resolves to whichever user is running the installer (SYSTEM under DSC, single user under PreInstall) so Azure-AD users never saw the profiles. Setup-OpenText.cmd is a tiny launcher that hands off to Setup-OpenText.ps1 because the runner only handles MSI/EXE types. All bundled files live in vcredist-style subtree at dependencies/opentext/ and get xcopied through WinPE staging. NO DetectionMethod here on purpose - Setup-OpenText.ps1 owns its own version check by reading version.txt next to itself and comparing to HKLM:\\SOFTWARE\\GE\\OpenText\\Installed; the runner always invokes the wrapper (cost: ~1s of PowerShell launch when up-to-date) so the version constant lives in exactly one place: dependencies/opentext/version.txt.", + "Name": "OpenText HostExplorer ShopFloor", + "Installer": "opentext\\Setup-OpenText.cmd", + "Type": "EXE", + "InstallArgs": "", + "PCTypes": ["Standard"] + }, { "Name": "UDC", "Installer": "UDC_Setup.exe", diff --git a/playbook/sync-preinstall.sh b/playbook/sync-preinstall.sh index 3e76efb..5af8803 100755 --- a/playbook/sync-preinstall.sh +++ b/playbook/sync-preinstall.sh @@ -31,13 +31,22 @@ REMOTE_INSTALLERS="$REMOTE_DIR/installers" REMOTE_TEMP="/tmp/preinstall-stage" # Subtrees copied recursively into installers/, preserving directory structure. +# # vcredist/ holds per-version MSI+CAB pairs (one subdir per version) extracted from # the Microsoft bootstrappers. The bootstrappers ignore /norestart and trigger # immediate Windows reboots; the extracted MSIs honor REBOOT=ReallySuppress and do # not. Each MSI's CAB filename ('vc_red.cab' for 2008/2010, 'cab1.cab' for the rest) # is hardcoded in the MSI's Media table - do not rename. +# +# opentext/ holds the OpenText HostExplorer 15 SP1 install bundle (base MSI + cab, +# ShopFloor.mst transform, SP1 .msp patch, plus the Profile/Accessories/HostExplorer/ +# W10shortcuts content trees and Setup-OpenText.ps1/.cmd). Setup-OpenText.ps1 runs +# msiexec, applies SP1, then deploys profile content into ProgramData\Shared, +# Default User, and every existing user profile. The .cmd wrapper exists so the +# preinstall.json runner (which only knows MSI/EXE types) can launch it. TREE_SUBDIRS=( "dependencies/vcredist" + "dependencies/opentext" ) # Individual files copied flat (basename only) into installers/. @@ -156,6 +165,10 @@ rm -f "$REMOTE_INSTALLERS/vc_red.msi" \ "$REMOTE_INSTALLERS/vcredist2013_x86.exe" \ "$REMOTE_INSTALLERS/vcredist2015_2017_2019_2022_x86.exe" +# Remove legacy flat OpenText.exe (Inno wrapper, replaced by dependencies/opentext/ +# subtree + Setup-OpenText.ps1). +rm -f "$REMOTE_INSTALLERS/OpenText.exe" + # Extract tree tarball into installers/ (preserves subdirs) tar xf "$REMOTE_TEMP/trees.tar" -C "$REMOTE_INSTALLERS/"