Wax/Trace: auto-restore captured backup ZIP during imaging

Wires the three pieces that make the per-bay backup restore happen as
part of the PXE imaging pass, no manual post-imaging step required:

1. sync-waxtrace.sh: stage per-asset backup ZIPs from
   /home/camp/pxe-images/wt/<asset>/formtracepak_backup_*.zip (newest)
   into installers-post/waxtrace/backups/<asset>.zip on the PXE share.
   Also pushes scripts/Install-FormtracepakSettings.ps1 alongside the
   bootstrap bundle so 09-Setup can call it post-vendor-install.
2. startnet.cmd: after the FTPak ISO cherry-pick, xcopy
   Y:\installers-post\waxtrace\backups\%MACHINENUM%.zip to
   W:\WaxTrace-Install\backup\%MACHINENUM%.zip. Logs INFO if no per-asset
   ZIP exists - 09-Setup will then skip the restore step.
3. 09-Setup-WaxAndTrace.ps1 Step 3b: between cal ISO and OpenText
   auto-start steps, look for C:\WaxTrace-Install\backup\<asset>.zip
   and invoke Install-FormtracepakSettings.ps1 -BackupPath ...
   -RestoreData -RestoreConfig -Force. Registry restore is intentionally
   omitted - captured HKLM is overwritten by the vendor MSI install in
   Step 2 anyway, and captured HKEY_USERS would land at the source
   bay's SID (which doesn't exist on the freshly imaged bay).

bay-config.csv refresh: 17 captured bays with full version/model/
user_id/hw_sn/hw_id/host. Versions stick to the original bay-config.csv
target values where the live binary drifted to a release we don't have
an ISO for (e.g. WJRP2035 live 5.7.0.82 -> imaging targets 6.0).
WJF00450 flagged MISSING_DATA in user_id + hw_id columns so the
imaging path aborts cleanly until the dongle is read.

Smoke tested on win11 VM with WJF00545's real capture: staged the
expected bay-side layout (C:\WaxTrace-Install\Install-FormtracepakSettings.ps1
+ C:\WaxTrace-Install\backup\WJF00545.zip), invoked the resolve +
call path from a simulated Step 3b - 17 files restored cleanly, 0
errors.
This commit is contained in:
cproudlock
2026-05-24 12:55:37 -04:00
parent 6602afde38
commit d0dcce5427
4 changed files with 101 additions and 16 deletions

View File

@@ -318,6 +318,45 @@ if (-not $asset) {
}
}
# ============================================================================
# Step 3b: Restore captured layouts / prefs / data from per-asset backup ZIP
# ============================================================================
# startnet.cmd stages C:\WaxTrace-Install\backup\<asset>.zip iff the PXE
# share has a backup ZIP for this asset. The ZIP is the output of
# Backup-FormtracepakSettings.ps1 captured on the LIVE bay BEFORE re-imaging.
# Restore is data + config only - skip -RestoreRegistry until the HKEY_USERS
# SID rewriting is built (captured .reg carries source bay's user SID which
# does not exist on the freshly imaged bay). HKLM controller config / model
# device-map / etc. came from the vendor MSI install in Step 2 already.
$backupZip = $null
$backupDir = 'C:\WaxTrace-Install\backup'
if ($bayAsset -and (Test-Path -LiteralPath $backupDir)) {
$candidate = Join-Path $backupDir ("$bayAsset.zip")
if (Test-Path -LiteralPath $candidate) {
$backupZip = $candidate
} else {
$newest = Get-ChildItem -LiteralPath $backupDir -Filter "${bayAsset}*.zip" -File -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($newest) { $backupZip = $newest.FullName }
}
}
if ($backupZip) {
$installPs1 = Join-Path $stagingRoot 'Install-FormtracepakSettings.ps1'
if (Test-Path -LiteralPath $installPs1) {
Write-WTLog "Restoring per-asset backup from $backupZip"
try {
& $installPs1 -BackupPath $backupZip -RestoreData -RestoreConfig -Force
Write-WTLog " Restore call returned (see restore log + Install-FormtracepakSettings output above)"
} catch {
Write-WTLog " Restore call threw: $_" 'WARN'
}
} else {
Write-WTLog "Install-FormtracepakSettings.ps1 not found at $installPs1 - skipping restore" 'WARN'
}
} else {
Write-WTLog "No per-asset backup ZIP at $backupDir\$bayAsset.zip - skipping restore (clean vendor install only)"
}
# ============================================================================
# Step 4: OpenText auto-start at login (HostExplorer "WJ Shopfloor" session)
# ============================================================================

View File

@@ -1,16 +1,18 @@
asset_tag,ftpak_version,model,user_id
WJF00159,6.103,AVANT,3974839712
WJRP3689,5.510,CV-4500,3744284509
WJRP2660,6.0,CV-4500,2365986521
WJRP2659,6.0,CV-4500,2709054503
WJF00545,6.213,AVANT,3878777362
WJRP3638,5.602,CV-4500,0720778210
WJF00052,6.103,AVANT,3270314998
WJF00084,6.103,AVANT,1476212857
WJF00083,6.103,AVANT,2934506987
WJRP3025,6.0,CV-3200,2292822471
WJF00197,6.104,AVANT,1191612605
WJRP4802,6.002,AVANT,0920866935
WJRP2347,6.0,CV-4500,3585172946
WJRP2035,6.0,CV-4500,2292822471
WJRP2335,6.0,CV-4500,1780916688
asset_tag,ftpak_version,model,user_id,hw_sn,hw_id,host,notes
WJF00052,6.103,CV-4500,3270314998,100032204,00039188,G2ZTNCX3ESF,bay-config was AVANT - corrected to CV-4500 per device-map
WJF00083,6.103,AVANT,2934506987,100062206,00039341,GDMT28Y3ESF,
WJF00084,6.103,AVANT,1476212857,100042205,00039348,G2GY4SY3ESF,
WJF00159,6.103,AVANT,3974839712,100072210,00040145,G5PRTW04ESF,
WJF00197,6.104,AVANT,1191612605,300022404,00041459,GHNWYRT3ESF,
WJF00450,6.204,AVANT,MISSING_DATA,400052411,MISSING_DATA,G8KRCPZ3ESF,DO NOT MIGRATE - user_id + hw_id need dongle read
WJF00461,6.213,AVANT,3878777362,400012504,00044757,G2PMG3D4ESF,new bay (was misattributed to WJF00545 in old CSV)
WJF00545,6.213,AVANT,3268459559,500022512,00045652,G6MJG3D4ESF,user_id refreshed 2026-05-24 (was 3878777362)
WJRP0423,6.0,CV-3100,3669340917,720104,00025834,GGDBWRT3ESF,old bay - device-map name 'NewCVSV' is Mitutoyo internal for CV-3100
WJRP2035,6.0,CV-4500,2292822471,200011406,0008232,G6W7JK44ESF,live binary is 5.7.0.82 - migrating to original 6.0 target
WJRP2335,6.0,CV-4500,1780916688,800011510,00011911,G4B48FZ3ESF,live binary is 5.7.0.82 - migrating to original 6.0 target
WJRP2347,6.0,CV-4500,3585172946,800021510,00011674,GDR6B8B3ESF,live binary is 5.7.0.82 - migrating to original 6.0 target
WJRP2659,6.0,CV-4500,2709054503,000021608,00015700,G33N20R3ESF,live binary is 5.7.0.82 - migrating to original 6.0 target
WJRP2660,6.0,CV-4500,236598621,000011607,00015588,GGGMF1V3ESF,live binary is 5.7.0.92 - migrating to original 6.0 target
WJRP3638,5.602,CV-4500,0720778210,400031808,00024395,GFDBWRT3ESF,
WJRP3689,5.510,CV-4500,3744284509,400021807f,00024390,G4HCKF33ESF,live binary is 5.6.0.40 (release 5.602) - migrating to original 5.510 target
WJRP4802,6.002,AVANT,0920866935,100062108,00034683,G5W7R704ESF,live binary is 5.7.0.92 - migrating to original 6.002 target
1 asset_tag ftpak_version model user_id hw_sn hw_id host notes
2 WJF00159 WJF00052 6.103 AVANT CV-4500 3974839712 3270314998 100032204 00039188 G2ZTNCX3ESF bay-config was AVANT - corrected to CV-4500 per device-map
3 WJRP3689 WJF00083 5.510 6.103 CV-4500 AVANT 3744284509 2934506987 100062206 00039341 GDMT28Y3ESF
4 WJRP2660 WJF00084 6.0 6.103 CV-4500 AVANT 2365986521 1476212857 100042205 00039348 G2GY4SY3ESF
5 WJRP2659 WJF00159 6.0 6.103 CV-4500 AVANT 2709054503 3974839712 100072210 00040145 G5PRTW04ESF
6 WJF00545 WJF00197 6.213 6.104 AVANT 3878777362 1191612605 300022404 00041459 GHNWYRT3ESF
7 WJRP3638 WJF00450 5.602 6.204 CV-4500 AVANT 0720778210 MISSING_DATA 400052411 MISSING_DATA G8KRCPZ3ESF DO NOT MIGRATE - user_id + hw_id need dongle read
8 WJF00052 WJF00461 6.103 6.213 AVANT 3270314998 3878777362 400012504 00044757 G2PMG3D4ESF new bay (was misattributed to WJF00545 in old CSV)
9 WJF00084 WJF00545 6.103 6.213 AVANT 1476212857 3268459559 500022512 00045652 G6MJG3D4ESF user_id refreshed 2026-05-24 (was 3878777362)
10 WJF00083 WJRP0423 6.103 6.0 AVANT CV-3100 2934506987 3669340917 720104 00025834 GGDBWRT3ESF old bay - device-map name 'NewCVSV' is Mitutoyo internal for CV-3100
11 WJRP3025 WJRP2035 6.0 CV-3200 CV-4500 2292822471 200011406 0008232 G6W7JK44ESF live binary is 5.7.0.82 - migrating to original 6.0 target
12 WJF00197 WJRP2335 6.104 6.0 AVANT CV-4500 1191612605 1780916688 800011510 00011911 G4B48FZ3ESF live binary is 5.7.0.82 - migrating to original 6.0 target
13 WJRP4802 WJRP2347 6.002 6.0 AVANT CV-4500 0920866935 3585172946 800021510 00011674 GDR6B8B3ESF live binary is 5.7.0.82 - migrating to original 6.0 target
14 WJRP2347 WJRP2659 6.0 CV-4500 3585172946 2709054503 000021608 00015700 G33N20R3ESF live binary is 5.7.0.82 - migrating to original 6.0 target
15 WJRP2035 WJRP2660 6.0 CV-4500 2292822471 236598621 000011607 00015588 GGGMF1V3ESF live binary is 5.7.0.92 - migrating to original 6.0 target
16 WJRP2335 WJRP3638 6.0 5.602 CV-4500 1780916688 0720778210 400031808 00024395 GFDBWRT3ESF
17 WJRP3689 5.510 CV-4500 3744284509 400021807f 00024390 G4HCKF33ESF live binary is 5.6.0.40 (release 5.602) - migrating to original 5.510 target
18 WJRP4802 6.002 AVANT 0920866935 100062108 00034683 G5W7R704ESF live binary is 5.7.0.92 - migrating to original 6.002 target