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
|
not `build_windows.sh`'s real default) fails `candle.exe` with
|
||||||
CNDL0108/CNDL0010. Not a real bug, just don't pass a version with
|
CNDL0108/CNDL0010. Not a real bug, just don't pass a version with
|
||||||
a suffix.
|
a suffix.
|
||||||
- [ ] `light.exe` (final MSI linking) did not finish within 15 minutes
|
- [x] `light.exe` (final MSI linking) did not finish within 15 minutes
|
||||||
on this VM (4 CPU / 8GB RAM) before the RAM-conscious auto-
|
on a first retry (4 CPU / 8GB RAM VM) before the RAM-conscious
|
||||||
shutdown killed it -- process was genuinely active (343MB
|
auto-shutdown killed it -- turned out to be genuinely just slow
|
||||||
working set, not hung on a dialog), just slow, likely from the
|
(process was active, 343MB working set, not hung on a dialog),
|
||||||
~1GB+ bulk-copied mingw64 runtime (see README's own "dist tree is
|
not a real bug: retried with a 40-minute budget and it finished
|
||||||
fat, not lean" note) combined with this VM's disk/CPU being
|
`light.exe` itself in a few more minutes.
|
||||||
shared with the host. Needs either a longer timeout on a retry,
|
- [ ] ...and then failed for a REAL reason right at the very end:
|
||||||
or the dist-tree-trimming work the README already flags as a
|
`light.exe`'s ICE80 validation rejected essentially every
|
||||||
known follow-up (tracing the real DLL/typelib closure instead of
|
harvested file -- "This 32BitComponent ... uses 64BitDirectory".
|
||||||
bulk-copying all of mingw64) to make `light.exe` have less to
|
`heat.exe`'s harvest command had no `-platform x64`, so every
|
||||||
compress in the first place.
|
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)
|
## 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
|
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%
|
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 (
|
if errorlevel 1 (
|
||||||
echo [build.bat] FAILED: heat.exe harvest failed >> %LOG%
|
echo [build.bat] FAILED: heat.exe harvest failed >> %LOG%
|
||||||
copy %LOG% Z:\build.log.failed >nul
|
copy %LOG% Z:\build.log.failed >nul
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user