Skip to content

Add VC++ Redistributable (x64) as a Windows FMA - #46935

Merged
allenhouchins merged 3 commits into
mainfrom
allenhouchins-vc-redist-fma
Jun 5, 2026
Merged

Add VC++ Redistributable (x64) as a Windows FMA#46935
allenhouchins merged 3 commits into
mainfrom
allenhouchins-vc-redist-fma

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jun 5, 2026

Copy link
Copy Markdown
Member

Add support for Microsoft Visual C++ Redistributable (x64) via winget: new installer and uninstaller PowerShell scripts that handle the WiX "burn" bootstrapper, a winget input manifest, an app entry in outputs/apps.json, and a detailed outputs/vc-redist-x64/windows.json with version metadata (14.51.36231.0), installer URL, SHA256 and embedded script refs. The uninstall script targets the bundle ProductCode (falls back to the Package Cache) and normalizes /uninstall, /quiet and /norestart handling; the install script runs the bootstrapper with /quiet /norestart and treats reboot codes (3010, 1641) as success.

Summary by CodeRabbit

  • New Features
    • Added support for installing and managing Microsoft Visual C++ 2013 and 2015-2022 Redistributables (x64).
    • Added Visual C++ Redistributable icon and UI integration for software identification and display.

Add support for Microsoft Visual C++ Redistributable (x64) via winget: new installer and uninstaller PowerShell scripts that handle the WiX "burn" bootstrapper, a winget input manifest, an app entry in outputs/apps.json, and a detailed outputs/vc-redist-x64/windows.json with version metadata (14.51.36231.0), installer URL, SHA256 and embedded script refs. The uninstall script targets the bundle ProductCode (falls back to the Package Cache) and normalizes /uninstall, /quiet and /norestart handling; the install script runs the bootstrapper with /quiet /norestart and treats reboot codes (3010, 1641) as success.
fleet-release
fleet-release previously approved these changes Jun 5, 2026
Add a new VcRedistX64 React SVG component (embedding the icon as a base64 image), include the PNG asset under website/assets/images, and register the icon in the icons index mapping as "microsoft visual c++" so the software list can display the Visual C++ Redistributable x64 icon.
fleet-release
fleet-release previously approved these changes Jun 5, 2026
@codecov

codecov Bot commented Jun 5, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 67.02%. Comparing base (4311a44) to head (84c0862).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
...ages/SoftwarePage/components/icons/VcRedistX64.tsx 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #46935      +/-   ##
==========================================
- Coverage   67.02%   67.02%   -0.01%     
==========================================
  Files        2861     2862       +1     
  Lines      224836   224838       +2     
  Branches    11738    11596     -142     
==========================================
+ Hits       150703   150704       +1     
- Misses      60480    60481       +1     
  Partials    13653    13653              
Flag Coverage Δ
frontend 56.93% <50.00%> (-0.01%) ⬇️

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.

Introduce a maintained app entry for Microsoft Visual C++ 2013 Redistributable (x64): new winget input, outputs/vc-redist-2013-x64/windows.json with installer metadata, version, install/uninstall script refs, and a 2x icon asset. Also rename the existing vc-redist-x64 input to "Microsoft Visual C++ 2015-2022 Redistributable (x64)" and update apps.json to split the 2013 and 2015-2022 entries and adjust descriptions accordingly.
@allenhouchins
allenhouchins marked this pull request as ready for review June 5, 2026 19:03
@allenhouchins
allenhouchins requested a review from a team as a code owner June 5, 2026 19:03
Copilot AI review requested due to automatic review settings June 5, 2026 19:03
@fleet-release
fleet-release requested a review from eashaw June 5, 2026 19:03

@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.

@allenhouchins
allenhouchins merged commit 3c6b05f into main Jun 5, 2026
28 of 29 checks passed
@allenhouchins
allenhouchins deleted the allenhouchins-vc-redist-fma branch June 5, 2026 19:03
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Lost in the diff? Review this PR in Change Stack to follow the change map from intent to exact ranges.

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: f7bfa204-8ace-4f42-acce-cadc45dfcaab

📥 Commits

Reviewing files that changed from the base of the PR and between 3a21e31 and 84c0862.

⛔ Files ignored due to path filters (2)
  • website/assets/images/app-icon-vc-redist-2013-x64-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-vc-redist-x64-60x60@2x.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • ee/maintained-apps/inputs/winget/scripts/vc_redist_x64_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/vc_redist_x64_uninstall.ps1
  • ee/maintained-apps/inputs/winget/vc-redist-2013-x64.json
  • ee/maintained-apps/inputs/winget/vc-redist-x64.json
  • ee/maintained-apps/outputs/apps.json
  • ee/maintained-apps/outputs/vc-redist-2013-x64/windows.json
  • ee/maintained-apps/outputs/vc-redist-x64/windows.json
  • frontend/pages/SoftwarePage/components/icons/VcRedistX64.tsx
  • frontend/pages/SoftwarePage/components/icons/index.ts

Walkthrough

This PR adds comprehensive support for two Microsoft Visual C++ Redistributable x64 packages (2013 and 2015-2022) to Fleet's maintained-apps system. The implementation spans PowerShell scripts that handle silent installation and uninstallation (including registry-based detection and Package Cache fallback), Winget input manifests that define package metadata and script references, Windows output definitions that embed complete script logic and detection queries, app registry entries that make the packages discoverable, and a frontend icon component with UI integration.

Possibly related PRs

  • fleetdm/fleet#46424: Extends SOFTWARE_NAME_TO_ICON_MAP with a new icon entry for a different maintained app.
  • fleetdm/fleet#46875: Updates SOFTWARE_NAME_TO_ICON_MAP to register additional software icon components.
  • fleetdm/fleet#46381: Modifies the shared SOFTWARE_NAME_TO_ICON_MAP registry for icon resolution.
✨ 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 allenhouchins-vc-redist-fma

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.

Adds Windows Fleet Maintained App (FMA) support for Microsoft Visual C++ Redistributables via winget, including metadata outputs and PowerShell install/uninstall automation (WiX “burn” bundle handling).

Changes:

  • Added new Windows app entries and output metadata for VC++ Redistributable (2015–2022 x64 and 2013 x64).
  • Added winget input manifests plus shared PowerShell install/uninstall scripts (quiet install; uninstall via bundle bootstrapper).
  • Added a new frontend icon component and icon mapping entry for Microsoft Visual C++.

Reviewed changes

Copilot reviewed 9 out of 11 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers the new VC++ icon and maps a software-name key to it
frontend/pages/SoftwarePage/components/icons/VcRedistX64.tsx Adds the VC++ icon asset as an SVG wrapper around an embedded base64 PNG
ee/maintained-apps/outputs/vc-redist-x64/windows.json Adds versioned output metadata + embedded install/uninstall scripts for VC++ 2015–2022 x64
ee/maintained-apps/outputs/vc-redist-2013-x64/windows.json Adds versioned output metadata + embedded install/uninstall scripts for VC++ 2013 x64
ee/maintained-apps/outputs/apps.json Adds the two VC++ Redistributable app entries to the global catalog
ee/maintained-apps/inputs/winget/vc-redist-x64.json Adds winget input manifest for VC++ 2015–2022 x64
ee/maintained-apps/inputs/winget/vc-redist-2013-x64.json Adds winget input manifest for VC++ 2013 x64
ee/maintained-apps/inputs/winget/scripts/vc_redist_x64_uninstall.ps1 Adds shared uninstall script targeting WiX burn bundle uninstall strings / package cache
ee/maintained-apps/inputs/winget/scripts/vc_redist_x64_install.ps1 Adds shared install script invoking the bootstrapper silently and accepting reboot-required codes
Comments suppressed due to low confidence (1)

frontend/pages/SoftwarePage/components/icons/VcRedistX64.tsx:1

  • Embedding a very large base64 PNG string inside a TSX component will bloat the JS bundle and can noticeably impact page load/perf (especially if this icon component is included in a broadly-imported icons index). Prefer a real SVG path (if available) or move the PNG to a static asset and reference it (or lazy-load it) so it’s not inlined into the bundle.
import * as React from "react";

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

"microsoft outlook": MicrosoftOutlook,
"microsoft powerpoint": MicrosoftPowerPoint,
"microsoft teams": Teams,
"microsoft visual c++": VcRedistX64,
import type { SVGProps } from "react";

const VcRedistX64 = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" width={32} height={32} {...props}>
@@ -0,0 +1,38 @@
# Learn more about .exe install scripts:
# http://fleetdm.com/learn-more-about/exe-install-scripts
# the bundle by its ProductCode (injected by the ingester) and fall back to the
# cached bootstrapper in the Package Cache.

$productCode = ${PACKAGE_ID}
Comment on lines +2580 to +2593
{
"name": "Microsoft Visual C++ 2013 Redistributable (x64)",
"slug": "vc-redist-2013-x64/windows",
"platform": "windows",
"unique_identifier": "Microsoft Visual C++ 2013 Redistributable (x64)",
"description": "Microsoft Visual C++ 2013 Redistributable (x64) installs the runtime components of the Visual C++ libraries required to run 64-bit applications built with Visual C++ 2013."
},
{
"name": "Microsoft Visual C++ 2015-2022 Redistributable (x64)",
"slug": "vc-redist-x64/windows",
"platform": "windows",
"unique_identifier": "Microsoft Visual C++ 2015-2022 Redistributable (x64)",
"description": "Microsoft Visual C++ 2015-2022 Redistributable (x64) installs the runtime components of the Visual C++ libraries required to run 64-bit applications built with Visual C++ 2015, 2017, 2019, and 2022."
},
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.

3 participants