Skip to content

Use JetBrains build numbers in FMA patch policies on Windows - #47484

Merged
allenhouchins merged 1 commit into
mainfrom
47478-fma-patch-policies-false-fail-for-jetbrains-ides-marketing-version-vs-build-number-mismatch
Jun 12, 2026
Merged

Use JetBrains build numbers in FMA patch policies on Windows#47484
allenhouchins merged 1 commit into
mainfrom
47478-fma-patch-policies-false-fail-for-jetbrains-ides-marketing-version-vs-build-number-mismatch

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 12, 2026

Copy link
Copy Markdown
Member

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

  • Chores
    • Updated patch version detection and comparison thresholds for all supported JetBrains IDEs (CLion, DataGrip, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine, RustRover, WebStorm) to improve Windows package management accuracy.
    • Enhanced version handling configuration to properly identify patched installations across JetBrains product releases.

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
@allenhouchins
allenhouchins marked this pull request as ready for review June 12, 2026 02:47
Copilot AI review requested due to automatic review settings June 12, 2026 02:47
@allenhouchins
allenhouchins merged commit e1c7d71 into main Jun 12, 2026
13 of 14 checks passed
@allenhouchins
allenhouchins deleted the 47478-fma-patch-policies-false-fail-for-jetbrains-ides-marketing-version-vs-build-number-mismatch branch June 12, 2026 02:47
@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 25e09dae-2445-4cea-a029-c620c80f9ab6

📥 Commits

Reviewing files that changed from the base of the PR and between 5f14fb0 and c829426.

📒 Files selected for processing (24)
  • ee/maintained-apps/inputs/winget/clion.json
  • ee/maintained-apps/inputs/winget/datagrip.json
  • ee/maintained-apps/inputs/winget/goland.json
  • ee/maintained-apps/inputs/winget/intellij-idea-ce.json
  • ee/maintained-apps/inputs/winget/intellij-idea.json
  • ee/maintained-apps/inputs/winget/phpstorm.json
  • ee/maintained-apps/inputs/winget/pycharm-ce.json
  • ee/maintained-apps/inputs/winget/pycharm.json
  • ee/maintained-apps/inputs/winget/rider.json
  • ee/maintained-apps/inputs/winget/rubymine.json
  • ee/maintained-apps/inputs/winget/rustrover.json
  • ee/maintained-apps/inputs/winget/webstorm.json
  • ee/maintained-apps/outputs/clion/windows.json
  • ee/maintained-apps/outputs/datagrip/windows.json
  • ee/maintained-apps/outputs/goland/windows.json
  • ee/maintained-apps/outputs/intellij-idea-ce/windows.json
  • ee/maintained-apps/outputs/intellij-idea/windows.json
  • ee/maintained-apps/outputs/phpstorm/windows.json
  • ee/maintained-apps/outputs/pycharm-ce/windows.json
  • ee/maintained-apps/outputs/pycharm/windows.json
  • ee/maintained-apps/outputs/rider/windows.json
  • ee/maintained-apps/outputs/rubymine/windows.json
  • ee/maintained-apps/outputs/rustrover/windows.json
  • ee/maintained-apps/outputs/webstorm/windows.json

Walkthrough

This 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 use_display_version_for_patch: true flag, while each Windows output file's patch detection query updates its version threshold from the marketing version format to the corresponding build number format that osquery reports.

Possibly related PRs

  • fleetdm/fleet#46257: Introduced IntelliJ IDEA CE and Ultimate Edition as Fleet-Maintained Apps with winget input manifests that this PR extends with the display version flag.
  • fleetdm/fleet#44384: Previously updated patch detection threshold logic in maintained-app manifests by changing version_compare conditions; this PR extends that pattern to JetBrains IDEs with build number thresholds.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 47478-fma-patch-policies-false-fail-for-jetbrains-ides-marketing-version-vs-build-number-mismatch

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 patched SQL 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: true to 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,
Comment on lines 4 to +7
"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);"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FMA patch policies false-fail for JetBrains IDEs (marketing version vs build number mismatch)

3 participants