Skip to content

Add Windows FMAs (letter D): 14 apps#49086

Draft
allenhouchins wants to merge 1 commit into
mainfrom
add-windows-fmas-letter-d
Draft

Add Windows FMAs (letter D): 14 apps#49086
allenhouchins wants to merge 1 commit into
mainfrom
add-windows-fmas-letter-d

Conversation

@allenhouchins

Copy link
Copy Markdown
Member

Related issue: N/A — part of the Windows Fleet-maintained apps catalog expansion (letter D batch; follows #48872, #48881, #48950, #48969).

Adds fourteen new Windows Fleet-maintained apps:

App winget package Installer Notes
DataSpell JetBrains.DataSpell NSIS (install4j), machine, x64 Mirrors the DataGrip FMA pattern: fuzzy_match_name + use_display_version_for_patch (registry version is a JetBrains build number; marketing version parsed from the name).
dnGrep dnGrep.dnGrep MSI, machine, x64 Versioned+arch ARP name ("dnGrep 5.0.9 (x64)") → fuzzy match.
Draftable Desktop Draftable.Draftable MSI, machine, x64 Uses the machine-scope DraftableDesktopSystem MSI. Caveat: hard winget dependency on .NET 10 Desktop Runtime — installs fine but won't launch without it (same class as the BleachBit VCRedist dependency).
dRofus dRofus.dRofus MSI, machine, x64 Versioned ARP name ("dRofus 2.18") → fuzzy match.
Devolutions Launcher Devolutions.Launcher MSI, machine, x64 Distinct ARP identity from the existing Remote Desktop Manager FMA.
Devolutions Workspace Devolutions.Workspace MSI, machine, x64 Product renamed: ARP DisplayName is "Devolutions Password Manager" (set as unique_identifier). program_publisher overridden to "Devolutions Inc." (capital I) — verified via msiinfo; the locale-derived lowercase would not match.
Delinea Connection Manager Delinea.DelineaConnectionManager MSI, machine, x64 Dual-purpose MSI defaults to per-user (ALLUSERS=2 + MSIINSTALLPERUSER=1); custom install script forces ALLUSERS=1 MSIINSTALLPERUSER="". program_publisher = "Delinea Inc.." (double period, as stored in the MSI). Unversioned URL → ignore_hash.
DAX Studio DaxStudio.DaxStudio Inno, machine, x64 /ALLUSERS for machine scope; versioned ARP name → fuzzy.
DevPod LoftLabs.DevPod MSI, machine, x64 Uses the WiX MSI variant (the manifest also has an NSIS per-user one).
Directory Opus GPSoftware.DirectoryOpus Inno, machine, x64 Standard Inno silent install/uninstall.
DroidCam Client dev47apps.DroidCam NSIS, machine, x86 Classic 6.5.x client; installs to Program Files (x86).
DYMO ID DYMO.DYMOID InstallShield→MSI, machine, x86 /S /V"/qn /norestart"; uninstall via msiexec by ProductCode.
digiSeal Reader secrypt.digiSealreader EXE (self-extracting), machine, x86 installer_scope: "" (manifest declares no scope); -silent install, shipped uninstaller with -silent. Unversioned URL → ignore_hash.
DiRoots ProSheets DiRoots.ProSheets Advanced Installer→MSI, machine, x64 Revit add-in; Advanced Installer // command syntax. Bundles PDF24 Creator + a virtual printer (their own ARP entries, intentionally left on uninstall).

Considered but not added (recorded in the workstream tracker):

  • Datadog Agent (Datadog.Agent): winget PackageVersion is 7.81.0.1 but the MSI and registry report 7.81.0.0, so the patch policy would flag every install as perpetually outdated. use_display_version_for_patch can't fix it (the manifest has no AppsAndFeaturesEntries); it needs a version-normalizing ingester ref (like onepassword_version_shortener). Deferred pending that helper (task spawned).
  • Dell Display and Peripheral Manager (Dell.DisplayAndPeripheralManager, covers both "Dell Display Manager" and "Dell Peripheral Manager"): the winget-pinned host dl.dell.com returns 403 to non-browser User-Agents, and Fleet's downloader sends Go-http-client (same failure that dropped Crestron AirMedia in letter C). The downloads.dell.com mirror serves the identical path to any UA, but there's no input field to override the manifest URL. Deferred pending a downloader User-Agent fix (task spawned — would also unblock Crestron).
  • Dell EMC System Update (Dell.SystemUpdate): registers its ARP entry under HKCU (per-user) under a SYSTEM install; legacy product Dell steers users away from (toward Dell Command Update, already an FMA); firmware/driver DUP bootstrapper.
  • Devolutions Remote Desktop Manager Agent (Devolutions.RemoteDesktopManagerAgent): legacy/superseded by "Devolutions Agent" (2026.1); winget manifest frozen at 2025.2.28.0 since Sept 2025; vendor docs page 404s.
  • Dedoose (Dedoose.Dedoose): per-user-only scope, x86, latest-pointer URL (CloudShow class).
  • Defraggler (Piriform.Defraggler): abandoned (final release 2020, no winget commits since 2023); legacy defrag tool with an unverified ARP publisher string.

Identities verified per app (msiinfo Property tables; installer PE/version resources; winget AppsAndFeaturesEntries; uninstall-database corroboration). Two publisher-casing mismatches (Devolutions Workspace, Delinea) were caught by direct MSI inspection and fixed with program_publisher before they could silently break the exists queries. SHAs verified against manifests for pinned URLs; ignore_hash used only where the manifest is demonstrably actively maintained. Icons via tools/software/icons/generate-icons.sh (the pre-existing DataSpell icon component is reused untouched).

Checklist for submitter

  • Input data is properly validated, SELECT * is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters.
  • Timeouts are implemented and retries are limited to avoid infinite loops

Testing

  • QA'd all new/changed functionality manually (relying on the FMA CI validator for Windows install/uninstall validation)

@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.02%. Comparing base (4a219a2) to head (a7e743c).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
.../pages/SoftwarePage/components/icons/DaxStudio.tsx 50.00% 1 Missing ⚠️
...Page/components/icons/DelineaConnectionManager.tsx 50.00% 1 Missing ⚠️
...twarePage/components/icons/DevolutionsLauncher.tsx 50.00% 1 Missing ⚠️
...warePage/components/icons/DevolutionsWorkspace.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Devpod.tsx 50.00% 1 Missing ⚠️
...s/SoftwarePage/components/icons/DigisealReader.tsx 50.00% 1 Missing ⚠️
...es/SoftwarePage/components/icons/DirectoryOpus.tsx 50.00% 1 Missing ⚠️
...SoftwarePage/components/icons/DirootsProsheets.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Dngrep.tsx 50.00% 1 Missing ⚠️
...SoftwarePage/components/icons/DraftableDesktop.tsx 50.00% 1 Missing ⚠️
... and 3 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #49086      +/-   ##
==========================================
- Coverage   68.03%   68.02%   -0.01%     
==========================================
  Files        3743     3756      +13     
  Lines      237236   237262      +26     
  Branches    12488    12343     -145     
==========================================
+ Hits       161393   161406      +13     
- Misses      61270    61283      +13     
  Partials    14573    14573              
Flag Coverage Δ
frontend 59.30% <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.

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