Skip to content

Add 40 Windows MSI Fleet-maintained apps - #46793

Closed
allenhouchins wants to merge 1 commit into
mainfrom
windows-fma-msi-batch
Closed

Add 40 Windows MSI Fleet-maintained apps#46793
allenhouchins wants to merge 1 commit into
mainfrom
windows-fma-msi-batch

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 4, 2026

Copy link
Copy Markdown
Member

Summary

Adds 40 new Windows Fleet-maintained apps, sourced from winget and restricted to apps whose real installer is a machine-scope MSI (winget msi or wix). This keeps the batch script-free: the ingester auto-generates the install (msiexec /i /quiet /norestart) and uninstall (upgrade-code or product-code) scripts for machine-scope MSIs, so none of these apps ship custom PowerShell.

Apps added (40)

Developer tools (15): Node.js, Go, CMake, GitHub CLI, PowerShell, Azure CLI, Yarn, Strawberry Perl, Neovim, TortoiseSVN, Mercurial, Vagrant, AWS SAM CLI, Meld, WinFsp

Databases (3): MongoDB Server, MySQL, (MariaDB rejected — see below)

Networking / VPN / remote access (8): WireGuard, OpenVPN, mRemoteNG, TightVNC, Devolutions Remote Desktop Manager, Datadog Agent, Splunk Universal Forwarder, RingCentral (dropped)

Security / monitoring (4): Wazuh Agent, Nessus, VeraCrypt, KeePass

Backup / sync / storage (4): Nextcloud Desktop, Seafile, Synology Drive Client, Duplicati

Productivity / PDF / utilities (8): Pandoc, grepWin, LibreOffice, PDF24 Creator, PDFsam, Power BI Report Builder, Everything, WinDirStat, Paint.NET (dropped)

The category groupings above are descriptive; default_categories in each input uses Fleet's catalog categories (Developer tools / Productivity / Communication / Security).

How identity was verified

Per the new-fma skill's golden rule, identity fields were verified against each app's actual MSI Property table (msiinfo), not winget metadata:

  • unique_identifier = the registry DisplayName osquery reports (programs.name).
  • program_publisher set only where the MSI Manufacturer differs from the winget locale Publisher (VeraCrypt → AM Crypto, WinDirStat → WinDirStat Team).
  • fuzzy_match_name: true used where the DisplayName embeds a version that changes per release (e.g. Go Programming Language amd64 go1.26.4, MySQL Server 8.4, MongoDB 8.3.2 …, KeePass 2.61.1, Everything 1.4.1.1032 (x64), etc.) so programs.name LIKE '<base> %' survives version bumps.

⚠️ Reviewer notes / risks to validate on the Windows host

  • Identity not msiinfo-verified (installer >300 MB or host unreachable): MongoDB Server, LibreOffice, PDF24 Creator, TightVNC, Devolutions Remote Desktop Manager. Identity derived from the winget manifest (AppsAndFeaturesEntries / PackageName); please confirm programs.name/publisher on a real host.
  • Devolutions Remote Desktop Manager additionally declares a winget dependency on .NET Desktop Runtime 10 (not bundled). It may fail to install on hosts without it — validate before merge; drop if it doesn't pass.
  • x86-only MSIs (no x64 published): Yarn, WinFsp, Wazuh Agent.
  • WinFsp unique_identifier is WinFsp 2025 (a release-year label, stable within the line but will change next major release).

Apps evaluated but rejected (kept out intentionally)

  • ARPSYSTEMCOMPONENT=1 → hidden from the registry, undetectable by Fleet: MariaDB Server, ZeroTier One.
  • Real download is an EXE/Inno bootstrapper, not a true MSI (the msi only appears in winget AppsAndFeaturesEntries metadata): Apache OpenOffice, Foxit Reader, Splashtop Business, Veeam Agent, Dell Command Update, TeraCopy, Advanced IP Scanner, Radmin VPN.
  • MSI ships nested inside a winget zip (ingester has no nested-installer support without custom scripts): RealVNC Viewer, RealVNC Server, Paint.NET.
  • RingCentral was generated but dropped from the final set as part of trimming to verified, lower-risk apps.

Icons

Generated 24 new app icons (+ LibreOffice already existed) via tools/software/icons/generate-icons.sh. 15 apps still need icons (no clean source was available; need a logo + design review): CMake, Devolutions Remote Desktop Manager, Everything, Meld, Mercurial, PDFsam, Pandoc, Strawberry Perl, TightVNC, VeraCrypt, WinDirStat, WinFsp, Yarn, grepWin, mRemoteNG.

@ the #g-software Product Designer for the new icons.

Testing

  • All input/output JSON validated; apps.json descriptions filled (sentence case).
  • Generated outputs reviewed: SHA, exists/patched queries, and auto-generated install/uninstall scripts present for all 40.
  • Frontend index.ts + new icon components pass Prettier/ESLint.
  • FMA install/uninstall validation runs on the Windows host CI.

Summary by CodeRabbit

  • New Features
    • Added support for 46+ Windows applications to managed software catalog, including developer tools (AWS SAM CLI, Azure CLI, CMake, Node.js, MongoDB), productivity apps (LibreOffice, KeePass), security solutions (Nessus, VeraCrypt, Wazuh Agent), and utilities (OpenVPN, Vagrant, and more).
    • Enhanced UI with new app icons for visual identification in software management interface.

Add 40 new Windows FMAs sourced from winget, restricted to apps whose
real installer is a machine-scope MSI (winget msi/wix) so the ingester
auto-generates install/uninstall scripts (no custom scripts needed).

Identity fields (unique_identifier, program_publisher) were verified
against each app's actual MSI Property table via msiinfo where the
installer was downloadable; large (>300MB) or unreachable installers
fall back to winget manifest identity and are flagged in the PR.

Includes generated outputs, apps.json descriptions, and 24 new app
icons (15 apps still need icons - see PR).
Copilot AI review requested due to automatic review settings June 4, 2026 02:37
@allenhouchins
allenhouchins requested a review from a team as a code owner June 4, 2026 02:37

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@codecov

codecov Bot commented Jun 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 24 lines in your changes missing coverage. Please review.
✅ Project coverage is 66.92%. Comparing base (03e8a2e) to head (1391378).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
.../pages/SoftwarePage/components/icons/AwsSamCli.tsx 50.00% 1 Missing ⚠️
...d/pages/SoftwarePage/components/icons/AzureCli.tsx 50.00% 1 Missing ⚠️
...ges/SoftwarePage/components/icons/DatadogAgent.tsx 50.00% 1 Missing ⚠️
.../pages/SoftwarePage/components/icons/Duplicati.tsx 50.00% 1 Missing ⚠️
.../pages/SoftwarePage/components/icons/GithubCli.tsx 50.00% 1 Missing ⚠️
...rontend/pages/SoftwarePage/components/icons/Go.tsx 50.00% 1 Missing ⚠️
...nd/pages/SoftwarePage/components/icons/Keepass.tsx 50.00% 1 Missing ⚠️
...es/SoftwarePage/components/icons/MongodbServer.tsx 50.00% 1 Missing ⚠️
...tend/pages/SoftwarePage/components/icons/Mysql.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Neovim.tsx 50.00% 1 Missing ⚠️
... and 14 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #46793      +/-   ##
==========================================
- Coverage   66.92%   66.92%   -0.01%     
==========================================
  Files        2837     2861      +24     
  Lines      225236   225284      +48     
  Branches    11656    11656              
==========================================
+ Hits       150739   150763      +24     
- Misses      60810    60834      +24     
  Partials    13687    13687              
Flag Coverage Δ
frontend 56.68% <50.00%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

This PR expands Fleet’s Windows Fleet-maintained app (FMA) catalog by adding a batch of winget-sourced apps (intended to be machine-scope MSIs), and wires up new software icons in the Software page so these apps display appropriate branding.

Changes:

  • Added new Windows FMA winget input manifests for the batch of apps (identity + installer constraints).
  • Added generated Windows FMA output manifests (versions, detection queries, installer URLs, and install/uninstall scripts/refs).
  • Added new frontend icon components and updated the software-name → icon map to include the new apps.

Reviewed changes

Copilot reviewed 106 out of 130 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers new icon components and adds software-name mappings for the new Windows apps.
frontend/pages/SoftwarePage/components/icons/Vagrant.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/Tortoisesvn.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/Powershell.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/PowerBiReportBuilder.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/Neovim.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/MongodbServer.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/GithubCli.tsx New icon component.
frontend/pages/SoftwarePage/components/icons/Duplicati.tsx New icon component.
ee/maintained-apps/inputs/winget/* New/updated winget inputs for the added Windows FMAs (40 files).
ee/maintained-apps/outputs/*/windows.json Generated Windows FMA outputs for the added apps (40 files).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +8 to +12
},
"installer_url": "https://sourceforge.net/projects/keepass/files/KeePass%202.x/2.61.1/KeePass-2.61.1-Setup.exe/download",
"install_script_ref": "8959087b",
"uninstall_script_ref": "1af7adf1",
"sha256": "9923a8b228fe3d8fbe46979991f45d7e0d63f649766596da191eb879b293d38d",
Comment on lines +18 to +20
"refs": {
"1af7adf1": "$product_code = 'KeePassPasswordSafe2_is1'\n$timeoutSeconds = 300 # 5 minute timeout\n\n# Fleet uninstalls app using product code that's extracted on upload\n$process = Start-Process msiexec -ArgumentList @(\"/quiet\", \"/x\", $product_code, \"/norestart\") -PassThru\n\n# Wait for process with timeout\n$completed = $process.WaitForExit($timeoutSeconds * 1000)\n\nif (-not $completed) {\n Stop-Process -Id $process.Id -Force -ErrorAction SilentlyContinue\n Exit 1603 # ERROR_UNINSTALL_FAILURE\n}\n\n# Check exit code and output result\nif ($process.ExitCode -eq 0) {\n Write-Output \"Exit 0\"\n Exit 0\n} else {\n Write-Output \"Exit $($process.ExitCode)\"\n Exit $process.ExitCode\n}\n",
"8959087b": "$logFile = \"${env:TEMP}/fleet-install-software.log\"\n\ntry {\n\n$installProcess = Start-Process msiexec.exe `\n -ArgumentList \"/quiet /norestart /lv ${logFile} /i `\"${env:INSTALLER_PATH}`\"\" `\n -PassThru -Verb RunAs -Wait\n\nGet-Content $logFile -Tail 500\n\nExit $installProcess.ExitCode\n\n} catch {\n Write-Host \"Error: $_\"\n Exit 1\n}\n"
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

This PR adds comprehensive support for 40+ Windows applications to Fleet's maintained-app system. It introduces Winget input metadata for each application, versioned output installers with PowerShell install/uninstall scripts and integrity hashes, integrates the apps into the main catalog, and provides 25 SVG icon components with frontend name-to-icon mappings. Applications include developer tools (AWS SAM CLI, Azure CLI, CMake, Node.js, PowerShell), productivity software (LibreOffice, Duplicati, Seafile), security tools (Nessus, Wazuh Agent, VeraCrypt), and utilities (OpenVPN, MongoDB, MySQL).

Possibly related issues

  • fleetdm/fleet#37326: This PR directly implements the goal of adding Windows FMA maintained-app support by contributing 40+ new app definitions to the catalog.

Possibly related PRs

  • fleetdm/fleet#46259: Both PRs extend the ee/maintained-apps/outputs/apps.json catalog with new Windows app entries using the same JSON structure.
  • fleetdm/fleet#46208: Both PRs extend frontend/pages/SoftwarePage/components/icons/index.ts by adding entries to SOFTWARE_NAME_TO_ICON_MAP for software-to-icon resolution.
  • fleetdm/fleet#46250: Both PRs extend the maintained-app catalog and icon mappings with new app definitions and icon registrations.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch windows-fma-msi-batch

@allenhouchins
allenhouchins deleted the windows-fma-msi-batch branch June 12, 2026 17:35
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.

2 participants