Use JetBrains build numbers in FMA patch policies on Windows - #47484
Conversation
JetBrains NSIS installers write the build number (e.g. 252.28238.7) as the registry DisplayVersion, while the winget PackageVersion is the marketing version (e.g. 2025.2.5). The auto-generated patch policy compared osquery's programs.version (build number) against the marketing version, so up-to-date installs always failed the policy and queued unnecessary reinstalls. Opt the 12 JetBrains IDE FMAs into use_display_version_for_patch so the patch policy compares against the build number published in the winget manifest's AppsAndFeaturesEntries. JetBrains Toolbox is excluded: its manifest has no DisplayVersion and it is not affected. Fixes #47478
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (24)
WalkthroughThis PR updates patch detection for 12 JetBrains IDE applications (CLion, DataGrip, GoLand, IntelliJ IDEA CE, IntelliJ IDEA, PhpStorm, PyCharm CE, PyCharm, Rider, RubyMine, RustRover, WebStorm) by configuring patch policies to use build numbers instead of marketing versions. Each winget input manifest receives the Possibly related PRs
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates JetBrains Windows app patch-detection logic to use the installed “display/build” version rather than the marketing version string, and wires this behavior through Winget input configs.
Changes:
- Switch
patchedSQL checks in generated Windows outputs to compare against JetBrains build versions (e.g.,261.25134.101) instead of marketing versions (e.g.,2026.1.3). - Add
use_display_version_for_patch: trueto Winget input definitions for affected JetBrains apps.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| ee/maintained-apps/outputs/webstorm/windows.json | Patch query now compares against build/display version for WebStorm. |
| ee/maintained-apps/outputs/rustrover/windows.json | Patch query now compares against build/display version for RustRover. |
| ee/maintained-apps/outputs/rubymine/windows.json | Patch query now compares against build/display version for RubyMine. |
| ee/maintained-apps/outputs/rider/windows.json | Patch query now compares against build/display version for Rider. |
| ee/maintained-apps/outputs/pycharm/windows.json | Patch query now compares against build/display version for PyCharm Pro. |
| ee/maintained-apps/outputs/pycharm-ce/windows.json | Patch query now compares against build/display version for PyCharm CE. |
| ee/maintained-apps/outputs/phpstorm/windows.json | Patch query now compares against build/display version for PhpStorm. |
| ee/maintained-apps/outputs/intellij-idea/windows.json | Patch query now compares against build/display version for IntelliJ IDEA Ultimate. |
| ee/maintained-apps/outputs/intellij-idea-ce/windows.json | Patch query now compares against build/display version for IntelliJ IDEA CE. |
| ee/maintained-apps/outputs/goland/windows.json | Patch query now compares against build/display version for GoLand. |
| ee/maintained-apps/outputs/datagrip/windows.json | Patch query now compares against build/display version for DataGrip. |
| ee/maintained-apps/outputs/clion/windows.json | Patch query now compares against build/display version for CLion. |
| ee/maintained-apps/inputs/winget/webstorm.json | Enables display-version-based patch checks for WebStorm generation. |
| ee/maintained-apps/inputs/winget/rustrover.json | Enables display-version-based patch checks for RustRover generation. |
| ee/maintained-apps/inputs/winget/rubymine.json | Enables display-version-based patch checks for RubyMine generation. |
| ee/maintained-apps/inputs/winget/rider.json | Enables display-version-based patch checks for Rider generation. |
| ee/maintained-apps/inputs/winget/pycharm.json | Enables display-version-based patch checks for PyCharm Pro generation. |
| ee/maintained-apps/inputs/winget/pycharm-ce.json | Enables display-version-based patch checks for PyCharm CE generation. |
| ee/maintained-apps/inputs/winget/phpstorm.json | Enables display-version-based patch checks for PhpStorm generation. |
| ee/maintained-apps/inputs/winget/intellij-idea.json | Enables display-version-based patch checks for IntelliJ IDEA Ultimate generation. |
| ee/maintained-apps/inputs/winget/intellij-idea-ce.json | Enables display-version-based patch checks for IntelliJ IDEA CE generation. |
| ee/maintained-apps/inputs/winget/goland.json | Enables display-version-based patch checks for GoLand generation. |
| ee/maintained-apps/inputs/winget/datagrip.json | Enables display-version-based patch checks for DataGrip generation. |
| ee/maintained-apps/inputs/winget/clion.json | Enables display-version-based patch checks for CLion generation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "package_identifier": "JetBrains.WebStorm", | ||
| "unique_identifier": "WebStorm", | ||
| "fuzzy_match_name": true, | ||
| "use_display_version_for_patch": true, |
| "version": "2026.1.3", | ||
| "queries": { | ||
| "exists": "SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.';", | ||
| "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '2026.1.3') < 0);" | ||
| "patched": "SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM programs WHERE name LIKE 'WebStorm %' AND publisher = 'JetBrains s.r.o.' AND version_compare(version, '261.25134.101') < 0);" |
JetBrains NSIS installers write the build number (e.g. 252.28238.7) as the registry DisplayVersion, while the winget PackageVersion is the marketing version (e.g. 2025.2.5). The auto-generated patch policy compared osquery's programs.version (build number) against the marketing version, so up-to-date installs always failed the policy and queued unnecessary reinstalls.
Opt the 12 JetBrains IDE FMAs into use_display_version_for_patch so the patch policy compares against the build number published in the winget manifest's AppsAndFeaturesEntries. JetBrains Toolbox is excluded: its manifest has no DisplayVersion and it is not affected.
Fixes #47478
Summary by CodeRabbit