Add 40 Windows MSI Fleet-maintained apps - #46793
Conversation
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).
There was a problem hiding this comment.
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 Report❌ Patch coverage is 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
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.
| }, | ||
| "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", |
| "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" |
|
Caution Review failedPull request was closed or merged during review WalkthroughThis 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
Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
|
Summary
Adds 40 new Windows Fleet-maintained apps, sourced from winget and restricted to apps whose real installer is a machine-scope MSI (winget
msiorwix). 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)
How identity was verified
Per the
new-fmaskill'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_publisherset only where the MSIManufacturerdiffers from the winget locale Publisher (VeraCrypt →AM Crypto, WinDirStat →WinDirStat Team).fuzzy_match_name: trueused 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.) soprograms.name LIKE '<base> %'survives version bumps.MongoDB Server,LibreOffice,PDF24 Creator,TightVNC,Devolutions Remote Desktop Manager. Identity derived from the winget manifest (AppsAndFeaturesEntries / PackageName); please confirmprograms.name/publisheron a real host.Yarn,WinFsp,Wazuh Agent.unique_identifierisWinFsp 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.msionly appears in wingetAppsAndFeaturesEntriesmetadata): Apache OpenOffice, Foxit Reader, Splashtop Business, Veeam Agent, Dell Command Update, TeraCopy, Advanced IP Scanner, Radmin VPN.zip(ingester has no nested-installer support without custom scripts): RealVNC Viewer, RealVNC Server, Paint.NET.RingCentralwas generated but dropped from the final set as part of trimming to verified, lower-risk apps.Icons
Generated 24 new app icons (+
LibreOfficealready existed) viatools/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
apps.jsondescriptions filled (sentence case).index.ts+ new icon components pass Prettier/ESLint.Summary by CodeRabbit