CI: restore the MSI now that the 32-bit bundlers can resolve their paths
Build App / compute-version (pull_request) Successful in 3s
Build Container / build-container (pull_request) Successful in 32s
Build App / build-macos (pull_request) Successful in 2m26s
Build App / build-windows (pull_request) Successful in 4m51s
Build App / build-linux (pull_request) Successful in 6m11s
Build App / create-tag (pull_request) Skipped
Build App / sync-to-github (pull_request) Skipped

Dropping the MSI did not help: makensis.exe is 32-bit like candle.exe
and failed the same way ("Unable to start child process, error 0x2").
The cause was WOW64 redirection sending 32-bit processes reading
C:\Windows\System32 to SysWOW64, where the toolset directory does not
exist.

The build VM now carries junctions from the SysWOW64 view of
systemprofile\AppData\Local\tauri and systemprofile\.cache to the
System32 originals. Verified on the runner: candle.exe reports WiX
3.14.1.8722 and makensis reports v3.11, both exiting 0 from the path
that previously failed.

Both targets build again, so the .msi comes back. Artifact collection
fails if either installer is missing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-09 22:34:59 -07:00
co-authored by Claude Opus 5
parent fdc161fd9c
commit 0aa8315514
+13 -11
View File
@@ -454,23 +454,25 @@ jobs:
TAURI_CONFIG: "{\"build\":{\"beforeBuildCommand\":\"\"}}" TAURI_CONFIG: "{\"build\":{\"beforeBuildCommand\":\"\"}}"
run: | run: |
set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%" set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%"
rem NSIS only: the MSI target needs WiX, whose candle.exe/light.exe are rem Every Tauri bundler it downloads - candle.exe, light.exe and
rem 32-bit. On a runner running as SYSTEM, Tauri caches WiX under rem makensis.exe - is 32-bit. A runner running as SYSTEM has
rem %LOCALAPPDATA% = C:\Windows\system32\config\systemprofile\..., and rem %LOCALAPPDATA% under C:\Windows\system32\config\systemprofile, and
rem WOW64 redirection points 32-bit processes at SysWOW64, where that rem WOW64 redirection sends 32-bit processes reading System32 to
rem directory does not exist - so candle cannot see its own folder and rem SysWOW64, so they cannot see their own directory: candle exits
rem dies with 0x80131700. Tauri aborts the whole bundle when one target rem 0x80131700 and makensis reports "Unable to start child process,
rem fails, so the MSI was also costing us the NSIS installer. rem error 0x2".
rem rem
rem NSIS is what the project ships for Windows upgrades anyway. To bring rem The build VM carries junctions from the SysWOW64 view of
rem the MSI back, run the runner as a normal user (whose LOCALAPPDATA is rem systemprofile\AppData\Local\tauri and systemprofile\.cache to the
rem outside System32) and restore --bundles msi,nsis. rem System32 originals, which makes the redirected view resolve. A
cargo tauri build --bundles nsis rem runner running as a normal user needs no such patch.
cargo tauri build --bundles msi,nsis
- name: Collect artifacts - name: Collect artifacts
run: | run: |
set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%" set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%"
mkdir artifacts mkdir artifacts
copy app\src-tauri\target\release\bundle\msi\*.msi artifacts\ || exit /b 1
copy app\src-tauri\target\release\bundle\nsis\*.exe artifacts\ || exit /b 1 copy app\src-tauri\target\release\bundle\nsis\*.exe artifacts\ || exit /b 1
dir artifacts\ dir artifacts\