Repository navigation
feat(windows): CU-17tkuw63weu report install metadata in the programs table - #132
Conversation
… table Adds system_component, installer_type, install_scope and install_arch, so a backend can apply winget's rules when it matches installed programs. Winget skips SystemComponent entries, refuses an upgrade across installer technologies and requires the installer scope to match. The flags are collected in locals and set only on rows that already have data, so a subkey holding nothing but a flag stays filtered out. MSIX rows carry only installer_type. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🦩 Flamingo Code Review➖ No tests ran on this commit (no lane ran): nothing here proves the change works. 2 findings: 🔴 0 action required · 🟠 1 recommended · 🔵 1 informational Advisory: findings do not block the merge. Checks:
🟠 Recommended (1)
🔵 Informational (1)
✅ What this change does well
Inline comments: 1 new Outside the lines this diff changes (no inline comment possible)
🧪 Tests and mutationTests per lane
Stage 2 ran no lanes: the C++ lane is checks only, with no test or mutation command planned and no check available on this machine. The Windows-only code was not compiled or run. 🤖 Prompt for AI agents: fix every findingNext: commit a suggestion, or hand a comment's prompt to your coding agent. React 👍 on a finding that helped and 👎 on one that is wrong: the reviewer learns from both. Review again. New commits are not reviewed until you ask:
Or comment Updated 2026-11-05 17:11 UTC · reviewed from Denys Slieptsov's machine |
What
Adds four columns to the Windows
programstable.system_component1,0SystemComponent, set only for a non-zero DWORDinstaller_typemsi,exe,portable,msixWindowsInstaller,WinGetInstallerType, MSIX rowsinstall_scopemachine,userHKEY_USERSis user, anything else is machineinstall_arch64,32WOW6432Nodeis 32. Machine scope onlyClickUp: https://app.clickup.com/t/17tkuw63weu. Follows #131.
Why
A backend matching installed programs to winget packages needs the same facts winget uses:
SystemComponententries, so they must not count as manageable.WindowsInstaller = 1as MSI and anything else as EXE, and refuses an upgrade across those. Inno, NSIS and Burn sit in the same compatibility set as EXE, so they are not told apart.install_archis here because it costs one line now and a release later.Behaviour
if (!r.empty()). A subkey holding nothing but a flag still produces no row.installer_type.install_archis empty for user scope: the table reads only the nativeHKEY_USERSpath, and the path says nothing about the architecture.