Fix WiX ICE80 mismatch: heat.exe never marked components as 64-bit
light.exe's ICE80 validation rejected essentially every harvested file
("This 32BitComponent ... uses 64BitDirectory") on the first build that
got far enough to reach it -- heat.exe's harvest command had no
-platform x64, so every component defaulted to 32-bit, while
product.wxs's own INSTALLFOLDER is correctly under
ProgramFiles64Folder (a 64-bit mingw64 toolchain is what's actually
being packaged). Real, on-disk mismatch, not a transient VM issue.
Also confirmed the earlier light.exe "timeout" wasn't a real bug either
-- a longer-budget retry finished linking fine in a few more minutes,
it was just slow, not hung.
Not yet re-verified against a live build (found right as this
session's VM time was already heavily spent) -- logged in TODO.md as
the next thing to confirm.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
22fbb33923
commit
d3246328e8
34
TODO.md
34
TODO.md
@ -300,17 +300,29 @@ each confirmed live against the real VM, not just read off a diff:
|
||||
not `build_windows.sh`'s real default) fails `candle.exe` with
|
||||
CNDL0108/CNDL0010. Not a real bug, just don't pass a version with
|
||||
a suffix.
|
||||
- [ ] `light.exe` (final MSI linking) did not finish within 15 minutes
|
||||
on this VM (4 CPU / 8GB RAM) before the RAM-conscious auto-
|
||||
shutdown killed it -- process was genuinely active (343MB
|
||||
working set, not hung on a dialog), just slow, likely from the
|
||||
~1GB+ bulk-copied mingw64 runtime (see README's own "dist tree is
|
||||
fat, not lean" note) combined with this VM's disk/CPU being
|
||||
shared with the host. Needs either a longer timeout on a retry,
|
||||
or the dist-tree-trimming work the README already flags as a
|
||||
known follow-up (tracing the real DLL/typelib closure instead of
|
||||
bulk-copying all of mingw64) to make `light.exe` have less to
|
||||
compress in the first place.
|
||||
- [x] `light.exe` (final MSI linking) did not finish within 15 minutes
|
||||
on a first retry (4 CPU / 8GB RAM VM) before the RAM-conscious
|
||||
auto-shutdown killed it -- turned out to be genuinely just slow
|
||||
(process was active, 343MB working set, not hung on a dialog),
|
||||
not a real bug: retried with a 40-minute budget and it finished
|
||||
`light.exe` itself in a few more minutes.
|
||||
- [ ] ...and then failed for a REAL reason right at the very end:
|
||||
`light.exe`'s ICE80 validation rejected essentially every
|
||||
harvested file -- "This 32BitComponent ... uses 64BitDirectory".
|
||||
`heat.exe`'s harvest command had no `-platform x64`, so every
|
||||
component it generated defaulted to 32-bit, while
|
||||
`product.wxs`'s own `INSTALLFOLDER` is correctly under
|
||||
`ProgramFiles64Folder` (a 64-bit mingw64 toolchain is what's
|
||||
actually being packaged) -- a real, on-disk mismatch, not a
|
||||
transient VM issue. Fixed: added `-platform x64` to `build.bat`'s
|
||||
`heat.exe` invocation. NOT YET re-verified against a live build
|
||||
(found right as this session's VM time/cycles were already
|
||||
heavily spent -- next run should get all the way to a real
|
||||
`.msi`, but that's still a claim, not yet a confirmed result).
|
||||
Once confirmed, revisit the still-slow `light.exe` step itself
|
||||
(the ~1GB+ bulk-copied mingw64 dist tree, see README's own "not
|
||||
lean" note) as a separate, real perf follow-up -- 40 minutes for
|
||||
one MSI link is a lot, even once it stops failing outright.
|
||||
|
||||
## OCR: new fire-support-request grammar gaps (from real user-pasted messages)
|
||||
|
||||
|
||||
@ -49,7 +49,12 @@ REM here (see this file's top-of-file note).
|
||||
robocopy C:\msys64\mingw64 C:\build\dist\mingw64 /e /xd include share\doc share\man share\gtk-doc /nfl /ndl /njh /njs >> %LOG% 2>&1
|
||||
|
||||
echo [build.bat] harvesting WiX components ... >> %LOG%
|
||||
C:\wix\heat.exe dir C:\build\dist -cg AppFiles -gg -scom -sreg -sfrag -srd -sw5150 -dr INSTALLFOLDER -var var.DistDir -out C:\build\files.wxs >> %LOG% 2>&1
|
||||
REM -platform x64: confirmed live (real light.exe run, not guessed) --
|
||||
REM without it heat.exe defaults every harvested component to 32-bit,
|
||||
REM which light.exe's ICE80 validation then rejects wholesale (~every
|
||||
REM single harvested file) once it's placed under INSTALLFOLDER, a
|
||||
REM 64-bit directory (this is a 64-bit mingw64 toolchain being packaged).
|
||||
C:\wix\heat.exe dir C:\build\dist -platform x64 -cg AppFiles -gg -scom -sreg -sfrag -srd -sw5150 -dr INSTALLFOLDER -var var.DistDir -out C:\build\files.wxs >> %LOG% 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [build.bat] FAILED: heat.exe harvest failed >> %LOG%
|
||||
copy %LOG% Z:\build.log.failed >nul
|
||||
|
||||
Loading…
Reference in New Issue
Block a user