diff --git a/playbook/shopfloor-setup/gea-shopfloor-partmarker/Install-eMxInfo-PartMarker.cmd.template b/playbook/shopfloor-setup/gea-shopfloor-partmarker/Install-eMxInfo-PartMarker.cmd.template new file mode 100644 index 0000000..40ca0cc --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-partmarker/Install-eMxInfo-PartMarker.cmd.template @@ -0,0 +1,42 @@ +@echo off +REM Install-eMxInfo-PartMarker.cmd - eMxInfo.txt healing for MARKER bays. +REM +REM Identical to Install-eMxInfo.cmd for the two paths that matter, plus the +REM Mark install directory. +REM +REM WHICH PATH ACTUALLY MATTERS: mxTransactionDll.dll (shipped in the Mark +REM overlay) references "\Dnc\Server Files\eMxInfo.txt", so the Mark suite +REM reads the DNC install just as eDNC does. The two DNC paths below are +REM therefore the functional ones on a marker bay too. +REM +REM WHY THE MARK PATH IS HERE AT ALL: 02-Setup-PartMarker.ps1 copies +REM eMxInfo.txt into C:\Program Files (x86)\Mark at imaging time. Nothing +REM reads it there, but leaving it stale would make a healed bay differ from a +REM freshly imaged one, and the next person to compare the two would waste an +REM afternoon on it. Copying a 1KB file is cheaper than that. +REM +REM Use this INSTEAD of Install-eMxInfo.cmd on gea-shopfloor-partmarker, or +REM simply add the marker PCType to the existing entry and accept that the Mark +REM copy goes stale - it is cosmetic either way. + +set "SRC=%~dp0eMxInfo.txt" +if not exist "%SRC%" ( + echo Install-eMxInfo-PartMarker: source file not found at %SRC% + exit /b 1 +) + +set "DST64=C:\Program Files\DNC\Server Files" +set "DST86=C:\Program Files (x86)\DNC\Server Files" +set "DSTMARK=C:\Program Files (x86)\Mark" + +if not exist "%DST64%\" mkdir "%DST64%" 2>nul +if not exist "%DST86%\" mkdir "%DST86%" 2>nul + +copy /Y "%SRC%" "%DST64%\eMxInfo.txt" >nul || exit /b 2 +copy /Y "%SRC%" "%DST86%\eMxInfo.txt" >nul || exit /b 3 + +REM The Mark directory only exists on a marker bay; not an error elsewhere. +if exist "%DSTMARK%\" copy /Y "%SRC%" "%DSTMARK%\eMxInfo.txt" >nul + +echo Install-eMxInfo-PartMarker: deployed eMxInfo.txt to the DNC paths (and Mark, if present) +exit /b 0 diff --git a/playbook/shopfloor-setup/gea-shopfloor-partmarker/manifest-entry-emxinfo-partmarker.json b/playbook/shopfloor-setup/gea-shopfloor-partmarker/manifest-entry-emxinfo-partmarker.json new file mode 100644 index 0000000..abc1d75 --- /dev/null +++ b/playbook/shopfloor-setup/gea-shopfloor-partmarker/manifest-entry-emxinfo-partmarker.json @@ -0,0 +1,12 @@ +{ + "_comment": "eMxInfo.txt healing for MARKER bays. Today the eMxInfo entry on the share is scoped to gea-shopfloor-collections and gea-shopfloor-nocollections, so a marker bay never heals - and marker bays run eDNC too (01-eDNC.ps1 installs it before the Mark MSI), so they are clobbered by exactly the same vendor installer. THE FIX IS A SCOPING CHANGE, not a new entry: add \"gea-shopfloor-partmarker\" to the PCTypes array of the EXISTING eMxInfo.txt entry in the share manifest. This file records that change and why; it is not a second entry to add alongside the first.", + + "_why_the_dnc_paths_are_the_right_target": "The Mark suite reads eMxInfo from the DNC install, not from its own directory: mxTransactionDll.dll references \\Dnc\\Server Files\\eMxInfo.txt (and eMxInfo.obs). So the two paths Install-eMxInfo.cmd already writes - C:\\Program Files\\DNC\\Server Files and C:\\Program Files (x86)\\DNC\\Server Files - are the ones that matter on a marker bay as well, and the existing cmd needs no change. 02-Setup-PartMarker.ps1 also drops a copy at C:\\Program Files (x86)\\Mark\\eMxInfo.txt at imaging time; nothing in the Mark binaries reads that path, so it is cosmetic. Install-eMxInfo-PartMarker.cmd.template refreshes it anyway, purely so a healed bay is byte-identical to a freshly imaged one and nobody has to wonder why they differ.", + + "_detection": "Unchanged: DetectionMethod Hash against the x86 DNC path, DetectionValue is the SHA256 of the current site file. Ordering still matters - the eDNC entry must be evaluated BEFORE this one, so a fresh install clobbers the file and the hash check then restores it in the same cycle. On a marker bay the Mark MSI is a second clobber risk, and the same ordering rule covers it.", + + "PCTypes_change": { + "from": ["gea-shopfloor-collections", "gea-shopfloor-nocollections"], + "to": ["gea-shopfloor-collections", "gea-shopfloor-nocollections", "gea-shopfloor-partmarker"] + } +}