OpenText: migrate from Intune Win32 LOB to PXE PreInstall + DSC
OpenText HostExplorer ShopFloor was previously delivered as an Intune Win32 LOB app that ran the inner OpenTextHostExplorer15x64.msi directly, which (a) skipped the [Files] section of the WJDT-built Inno Setup wrapper that deploys profile/keymap/menu/macro files, and (b) deployed desktop shortcuts pointing at C:\\GE Aerospace\\Hummingbird\\ - a path HostExplorer doesn't search, so the profile would open from the desktop shortcut but the keymaps and macros never got picked up. This commit moves the install to the PXE PreInstall pipeline so it gets baked into every Standard PC during imaging instead of being pulled per-device by Intune. The DSC side ships separately as Setup-OpenText.ps1 + Install-OpenText.ps1 wrapper in the pxe-images/main/ tree (uploaded to Azure Blob). preinstall.json: new entry for OpenText pointing at opentext\\Setup-OpenText.cmd, a tiny launcher in the bundled subtree that hands off to Setup-OpenText.ps1 (the runner only handles MSI/EXE types). No DetectionMethod fields - Setup-OpenText.ps1 reads version from version.txt next to itself and short-circuits via its own HKLM\\SOFTWARE\\GE\\OpenText\\Installed marker check, so the version constant lives in exactly one place (version.txt). Trade-off: ~1s PowerShell launch on every up-to-date runner pass instead of a zero-cost registry compare, in exchange for never having to bump the version in multiple places. sync-preinstall.sh: added dependencies/opentext to TREE_SUBDIRS so the whole bundle (base MSI + cab + SP1 patch + ShopFloor transform + profile/accessories/keymap/menu/W10shortcuts content + Setup-OpenText script and cmd wrapper + version.txt) rides through the existing tar pipe. Also added OpenText.exe to the legacy-cleanup rm list since the old flat machineapps/OpenText.exe path is now obsolete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,14 @@
|
|||||||
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{C18FB403-1E88-43C8-AD8A-CED50F23DE8B}",
|
"DetectionPath": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{C18FB403-1E88-43C8-AD8A-CED50F23DE8B}",
|
||||||
"PCTypes": ["*"]
|
"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",
|
"Name": "UDC",
|
||||||
"Installer": "UDC_Setup.exe",
|
"Installer": "UDC_Setup.exe",
|
||||||
|
|||||||
@@ -31,13 +31,22 @@ REMOTE_INSTALLERS="$REMOTE_DIR/installers"
|
|||||||
REMOTE_TEMP="/tmp/preinstall-stage"
|
REMOTE_TEMP="/tmp/preinstall-stage"
|
||||||
|
|
||||||
# Subtrees copied recursively into installers/, preserving directory structure.
|
# Subtrees copied recursively into installers/, preserving directory structure.
|
||||||
|
#
|
||||||
# vcredist/ holds per-version MSI+CAB pairs (one subdir per version) extracted from
|
# vcredist/ holds per-version MSI+CAB pairs (one subdir per version) extracted from
|
||||||
# the Microsoft bootstrappers. The bootstrappers ignore /norestart and trigger
|
# the Microsoft bootstrappers. The bootstrappers ignore /norestart and trigger
|
||||||
# immediate Windows reboots; the extracted MSIs honor REBOOT=ReallySuppress and do
|
# 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)
|
# 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.
|
# 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=(
|
TREE_SUBDIRS=(
|
||||||
"dependencies/vcredist"
|
"dependencies/vcredist"
|
||||||
|
"dependencies/opentext"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Individual files copied flat (basename only) into installers/.
|
# 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/vcredist2013_x86.exe" \
|
||||||
"$REMOTE_INSTALLERS/vcredist2015_2017_2019_2022_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)
|
# Extract tree tarball into installers/ (preserves subdirs)
|
||||||
tar xf "$REMOTE_TEMP/trees.tar" -C "$REMOTE_INSTALLERS/"
|
tar xf "$REMOTE_TEMP/trees.tar" -C "$REMOTE_INSTALLERS/"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user