Skip to content

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

Merged
allenhouchins merged 2 commits into
mainfrom
add-windows-fmas-letter-d
Jul 10, 2026
Merged

Add Windows FMAs (letter D): 12 apps#49086
allenhouchins merged 2 commits into
mainfrom
add-windows-fmas-letter-d

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jul 9, 2026

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

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.
  • DiRoots ProSheets (DiRoots.ProSheets): validated install but its Advanced Installer bootstrapper uninstall hung to the timeout and it drags bundled PDF24 Creator entries into inventory (dropped at validation).
  • DroidCam Client (dev47apps.DroidCam): NSIS /S install hung headless to the timeout (inline vc_redist); 3DxWare/Citrix headless-hang class (dropped at validation).

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)

Summary by CodeRabbit

  • New Features
    • Added Windows catalog support for 12 applications, including DataSpell, DAX Studio, DevPod, Directory Opus, and DYMO ID.
    • Added installation, upgrade detection, and silent uninstallation workflows for the new applications.
    • Added recognizable software icons for the newly supported applications in the software catalog.

fleet-release
fleet-release previously approved these changes Jul 9, 2026
@codecov

codecov Bot commented Jul 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 11 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.03%. Comparing base (4a219a2) to head (a097eaa).
⚠️ Report is 20 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 ⚠️
...end/pages/SoftwarePage/components/icons/Dngrep.tsx 50.00% 1 Missing ⚠️
...SoftwarePage/components/icons/DraftableDesktop.tsx 50.00% 1 Missing ⚠️
...end/pages/SoftwarePage/components/icons/Drofus.tsx 50.00% 1 Missing ⚠️
... and 1 more
Additional details and impacted files
@@           Coverage Diff           @@
##             main   #49086   +/-   ##
=======================================
  Coverage   68.03%   68.03%           
=======================================
  Files        3743     3754   +11     
  Lines      237236   237272   +36     
  Branches    12488    12500   +12     
=======================================
+ Hits       161393   161421   +28     
- Misses      61270    61278    +8     
  Partials    14573    14573           
Flag Coverage Δ
frontend 59.33% <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.

…heets and DroidCam Client after validation

DAX Studio's uninstall script had a mangled registry path ('CurrentVersion
ninstall' — a backslash-escape lost during script generation), so the glob
matched nothing and uninstall reported 'not found'. Rewrote it cleanly and
made it search HKLM + WOW6432Node + HKCU. DiRoots ProSheets' Advanced Installer
bootstrapper uninstall hung to the validator timeout; DroidCam Client's NSIS
install hung headless. Both dropped.
@allenhouchins allenhouchins changed the title Add Windows FMAs (letter D): 14 apps Add Windows FMAs (letter D): 12 apps Jul 10, 2026
@allenhouchins

Copy link
Copy Markdown
Member Author

Validation run 1: 12/14 — two dropped, one uninstall fixed (a097eaa)

  • DAX Studio (fixed, stays in): uninstall reported 'not found' because its script had a corrupted registry path (CurrentVersion\UninstallCurrentVersion ninstall, a backslash-escape lost during script generation), so the glob hit a nonexistent key. Rewrote the uninstall cleanly and made it search HKLM + WOW6432Node + HKCU. (Install and detection had passed.)
  • DiRoots ProSheets (dropped): install + detection passed, but the Advanced Installer bootstrapper uninstall hung to the timeout, and it installs bundled PDF24 Creator entries that pollute inventory. Deferred.
  • DroidCam Client (dropped): NSIS /S install hung headless to the 10-min timeout (inline vc_redist); same headless-hang class as 3DxWare/Citrix. Deferred.

The remaining 12 all pass install + uninstall. The 4 'validated with warnings' (digiSeal, Draftable, dRofus, DYMO ID) are the benign no-new-Program-Files-dir notices for x86/(x86)-path installs.

@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/dataspell/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/dax-studio/windows.json

=== Install Script (no changes) ===
=== Uninstall // 4fcc295e -> 23e6b8df ===

./ee/maintained-apps/script-diff.sh: line 72: warning: command substitution: ignored null byte in input
--- /tmp/old.iBrLDx	2026-07-10 13:43:29.582987862 +0000
+++ /tmp/new.e7YILd	2026-07-10 13:43:29.582987862 +0000
@@ -1,89 +1,83 @@
-# Fleet extracts name from installer (EXE) and saves it to PACKAGE_ID
-# variable
-# DAX Studio registers a versioned DisplayName in the registry
-# (e.g. "DAX Studio 3.5.2"), so we match on the stable prefix.
-$softwareName = "DAX Studio"
-
-# The registry DisplayName is versioned, so match on the prefix.
-$softwareNameLike = "$softwareName*"
-
-# Inno Setup installers require /VERYSILENT flag for silent uninstall
-$uninstallArgs = "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART"
-
-$machineKey = `
- 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersionninstall\*'
-$machineKey32on64 = `
- 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersionninstall\*'
+# Locates DAX Studio's Inno Setup uninstaller from the registry and runs it
+# silently. DAX Studio embeds the version in its DisplayName (e.g.
+# "DAX Studio 3.5.2.1205"), so we match by prefix and require the publisher.
+# The ARP entry can land in HKLM or (when the Inno installer writes per-user
+# registry while placing files machine-wide) in the installing user's hive, so
+# we search HKLM, the WOW6432Node view, and HKCU.
+
+$softwareNameLike = "DAX Studio*"
+$publisherLike    = "DAX Studio*"
+
+$paths = @(
+  'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
+  'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall',
+  'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
+)
 
+# 0 = success; 3010/1641 = success but reboot required.
+$ExpectedExitCodes = @(0, 3010, 1641)
 $exitCode = 0
 
 try {
 
 [array]$uninstallKeys = Get-ChildItem `
-    -Path @($machineKey, $machineKey32on64) `
+    -Path $paths `
     -ErrorAction SilentlyContinue |
-        ForEach-Object { Get-ItemProperty $_.PSPath }
+        ForEach-Object { Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue }
 
-$foundUninstaller = $false
+$selected = $null
 foreach ($key in $uninstallKeys) {
-    if ($key.DisplayName -like $softwareNameLike) {
-        $foundUninstaller = $true
-        # Get the uninstall command. Some uninstallers do not include
-        # 'QuietUninstallString' and require a flag to run silently.
-        $uninstallCommand = if ($key.QuietUninstallString) {
-            $key.QuietUninstallString
-        } else {
-            $key.UninstallString
-        }
-
-        # The uninstall command may contain command and args, like:
-        # "C:\Program Files\Softwareninstall.exe" /SILENT
-        # Split the command and args
-        $splitArgs = $uninstallCommand.Split('"')
-        if ($splitArgs.Length -gt 1) {
-            if ($splitArgs.Length -eq 3) {
-                $uninstallArgs = "$( $splitArgs[2] ) $uninstallArgs".Trim()
-            } elseif ($splitArgs.Length -gt 3) {
-                Throw `
-                    "Uninstall command contains multiple quoted strings. " +
-                        "Please update the uninstall script.`n" +
-                        "Uninstall command: $uninstallCommand"
-            }
-            $uninstallCommand = $splitArgs[1]
-        }
-        Write-Host "Uninstall command: $uninstallCommand"
-        Write-Host "Uninstall args: $uninstallArgs"
-
-        $processOptions = @{
-            FilePath = $uninstallCommand
-            PassThru = $true
-            Wait = $true
-        }
-        if ($uninstallArgs -ne '') {
-            $processOptions.ArgumentList = "$uninstallArgs"
-        }
-
-        # Start process and track exit code
-        $process = Start-Process @processOptions
-        $exitCode = $process.ExitCode
-
-        # Prints the exit code
-        Write-Host "Uninstall exit code: $exitCode"
-        # Exit the loop once the software is found and uninstalled.
+    if ($key.DisplayName -and $key.DisplayName -like $softwareNameLike -and $key.Publisher -like $publisherLike) {
+        $selected = $key
         break
     }
 }
 
-if (-not $foundUninstaller) {
-    Write-Host "Uninstaller for '$softwareName' not found."
-    # Change exit code to 0 if you don't want to fail if uninstaller is not
-    # found. This could happen if program was already uninstalled.
-    $exitCode = 1
+if (-not $selected -or -not $selected.UninstallString) {
+    Write-Host "Uninstall entry not found for $softwareNameLike"
+    Exit 1
 }
 
-} catch {
-    Write-Host "Error: $_"
-    $exitCode = 1
+# Best-effort: stop the app so the uninstaller doesn't fail on locked files.
+Stop-Process -Name "daxstudio" -Force -ErrorAction SilentlyContinue
+
+$uninstallCommand = if ($selected.QuietUninstallString) {
+    $selected.QuietUninstallString
+} else {
+    $selected.UninstallString
+}
+
+# Parse uninstaller exe path (Inno quotes the path because it lives under
+# "Program Files").
+$exePath = ""
+$existingArgs = ""
+if ($uninstallCommand -match '^\s*"([^"]+)"\s*(.*)$') {
+    $exePath = $matches[1]
+    $existingArgs = $matches[2].Trim()
+} elseif ($uninstallCommand -match '(?i)^\s*(.+?\.exe)\s*(.*)$') {
+    $exePath = $matches[1]
+    $existingArgs = $matches[2].Trim()
+} else {
+    Throw "Could not parse uninstall string: $uninstallCommand"
+}
+
+# Inno Setup uninstallers take /VERYSILENT for a silent uninstall.
+if ($existingArgs -notmatch '(?i)/VERYSILENT') {
+    $existingArgs = ("$existingArgs /VERYSILENT /SUPPRESSMSGBOXES /NORESTART").Trim()
 }
 
+Write-Host "Selected entry DisplayName: $($selected.DisplayName)"
+Write-Host "Uninstall command: $exePath"
+Write-Host "Uninstall args: $existingArgs"
+
+$process = Start-Process -FilePath $exePath -ArgumentList $existingArgs -PassThru -Wait
+$exitCode = $process.ExitCode
+Write-Host "Uninstall exit code: $exitCode"
+
+if ($ExpectedExitCodes -contains $exitCode) { Exit 0 }
 Exit $exitCode
+
+} catch {
+    Write-Host "Error: $_"
+    Exit 1
+}

ee/maintained-apps/outputs/delinea-connection-manager/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/devolutions-launcher/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/devolutions-workspace/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/devpod/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/digiseal-reader/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/directory-opus/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/dngrep/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/draftable-desktop/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/drofus/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/dymo-id/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

@allenhouchins allenhouchins marked this pull request as ready for review July 10, 2026 13:54
@allenhouchins allenhouchins requested a review from a team as a code owner July 10, 2026 13:54
Copilot AI review requested due to automatic review settings July 10, 2026 13:54
@fleet-release fleet-release requested a review from eashaw July 10, 2026 13:54
@allenhouchins allenhouchins merged commit b18b0c2 into main Jul 10, 2026
30 checks passed
@allenhouchins allenhouchins deleted the add-windows-fmas-letter-d branch July 10, 2026 13:55

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

Adds a new “D*” batch of Windows Fleet-maintained apps (FMAs) to the catalog, including their manifests, install/uninstall scripts, and corresponding UI icons so they render with branded imagery on the Software page.

Changes:

  • Added/updated Windows FMA output manifests (queries, installer URLs, scripts, hashes/ignore_hash) for 12 apps.
  • Added new winget input definitions and PowerShell install/uninstall scripts for those apps.
  • Added new software icon components and updated the software-name → icon map.

Reviewed changes

Copilot reviewed 49 out of 60 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
frontend/pages/SoftwarePage/components/icons/index.ts Registers new icon components and maps software names to icons.
frontend/pages/SoftwarePage/components/icons/DaxStudio.tsx Adds DAX Studio icon component.
frontend/pages/SoftwarePage/components/icons/DelineaConnectionManager.tsx Adds Delinea Connection Manager icon component.
frontend/pages/SoftwarePage/components/icons/DevolutionsLauncher.tsx Adds Devolutions Launcher icon component.
frontend/pages/SoftwarePage/components/icons/DevolutionsWorkspace.tsx Adds Devolutions Workspace icon component.
frontend/pages/SoftwarePage/components/icons/Devpod.tsx Adds DevPod icon component.
frontend/pages/SoftwarePage/components/icons/DigisealReader.tsx Adds digiSeal reader icon component.
frontend/pages/SoftwarePage/components/icons/DirectoryOpus.tsx Adds Directory Opus icon component.
frontend/pages/SoftwarePage/components/icons/Dngrep.tsx Adds dnGrep icon component.
frontend/pages/SoftwarePage/components/icons/DraftableDesktop.tsx Adds Draftable Desktop icon component.
frontend/pages/SoftwarePage/components/icons/Drofus.tsx Adds dRofus icon component.
frontend/pages/SoftwarePage/components/icons/DymoId.tsx Adds DYMO ID icon component.
ee/maintained-apps/outputs/apps.json Adds new Windows app entries to the maintained app catalog list.
ee/maintained-apps/outputs/dataspell/windows.json Updates/introduces Windows DataSpell manifest metadata.
ee/maintained-apps/outputs/dax-studio/windows.json Adds Windows DAX Studio output manifest (installer + queries + scripts).
ee/maintained-apps/outputs/delinea-connection-manager/windows.json Adds Windows Delinea Connection Manager output manifest (ignore_hash + custom MSI properties).
ee/maintained-apps/outputs/devolutions-launcher/windows.json Adds Windows Devolutions Launcher output manifest.
ee/maintained-apps/outputs/devolutions-workspace/windows.json Adds Windows Devolutions Workspace output manifest (unique identifier is Password Manager).
ee/maintained-apps/outputs/devpod/windows.json Adds Windows DevPod output manifest.
ee/maintained-apps/outputs/digiseal-reader/windows.json Adds Windows digiSeal reader output manifest (ignore_hash).
ee/maintained-apps/outputs/directory-opus/windows.json Adds Windows Directory Opus output manifest (Inno exe scripts).
ee/maintained-apps/outputs/dngrep/windows.json Adds Windows dnGrep output manifest (MSI + upgrade code uninstall).
ee/maintained-apps/outputs/draftable-desktop/windows.json Adds Windows Draftable Desktop output manifest (MSI + upgrade code uninstall).
ee/maintained-apps/outputs/drofus/windows.json Adds Windows dRofus output manifest (MSI + upgrade code uninstall).
ee/maintained-apps/outputs/dymo-id/windows.json Adds Windows DYMO ID output manifest (InstallShield exe wrapper + MSI uninstall by ProductCode).
ee/maintained-apps/inputs/winget/dataspell.json Adds Windows DataSpell winget input definition.
ee/maintained-apps/inputs/winget/dax-studio.json Adds Windows DAX Studio winget input definition.
ee/maintained-apps/inputs/winget/delinea-connection-manager.json Adds Windows Delinea Connection Manager winget input definition.
ee/maintained-apps/inputs/winget/devolutions-launcher.json Adds Windows Devolutions Launcher winget input definition.
ee/maintained-apps/inputs/winget/devolutions-workspace.json Adds Windows Devolutions Workspace winget input definition.
ee/maintained-apps/inputs/winget/devpod.json Adds Windows DevPod winget input definition.
ee/maintained-apps/inputs/winget/digiseal-reader.json Adds Windows digiSeal reader winget input definition.
ee/maintained-apps/inputs/winget/directory-opus.json Adds Windows Directory Opus winget input definition.
ee/maintained-apps/inputs/winget/dngrep.json Adds Windows dnGrep winget input definition.
ee/maintained-apps/inputs/winget/draftable-desktop.json Adds Windows Draftable Desktop winget input definition.
ee/maintained-apps/inputs/winget/drofus.json Adds Windows dRofus winget input definition.
ee/maintained-apps/inputs/winget/dymo-id.json Adds Windows DYMO ID winget input definition.
ee/maintained-apps/inputs/winget/scripts/dataspell_install.ps1 Adds DataSpell install script (NSIS).
ee/maintained-apps/inputs/winget/scripts/dataspell_uninstall.ps1 Adds DataSpell uninstall script (registry-based NSIS uninstall).
ee/maintained-apps/inputs/winget/scripts/dax-studio_install.ps1 Adds DAX Studio install script (Inno /ALLUSERS).
ee/maintained-apps/inputs/winget/scripts/dax-studio_uninstall.ps1 Adds DAX Studio uninstall script (registry-based Inno uninstall).
ee/maintained-apps/inputs/winget/scripts/delinea-connection-manager_install.ps1 Adds Delinea Connection Manager install script (forces per-machine MSI properties).
ee/maintained-apps/inputs/winget/scripts/delinea-connection-manager_uninstall.ps1 Adds Delinea Connection Manager uninstall script (msiexec by ProductCode).
ee/maintained-apps/inputs/winget/scripts/digiseal-reader_install.ps1 Adds digiSeal reader install script (-silent).
ee/maintained-apps/inputs/winget/scripts/digiseal-reader_uninstall.ps1 Adds digiSeal reader uninstall script (parses uninstall string and appends -silent).
ee/maintained-apps/inputs/winget/scripts/directory-opus_install.ps1 Adds Directory Opus install script (Inno /VERYSILENT).
ee/maintained-apps/inputs/winget/scripts/directory-opus_uninstall.ps1 Adds Directory Opus uninstall script (registry-based Inno uninstall).
ee/maintained-apps/inputs/winget/scripts/dngrep_install.ps1 Adds dnGrep install script (MSI logging wrapper).
ee/maintained-apps/inputs/winget/scripts/drofus_install.ps1 Adds dRofus install script (MSI logging wrapper).
ee/maintained-apps/inputs/winget/scripts/draftable-desktop_uninstall.ps1 Adds Draftable Desktop uninstall script (upgrade-code based MSI removal).
ee/maintained-apps/inputs/winget/scripts/devpod_uninstall.ps1 Adds DevPod uninstall script (upgrade-code based MSI removal).
ee/maintained-apps/inputs/winget/scripts/dymo-id_install.ps1 Adds DYMO ID install script (InstallShield wrapper with msiexec args).
ee/maintained-apps/inputs/winget/scripts/dymo-id_uninstall.ps1 Adds DYMO ID uninstall script (msiexec by ProductCode from ARP key).

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

Comment on lines +1369 to 1371
"devolutions launcher": DevolutionsLauncher,
"devolutions workspace": DevolutionsWorkspace,
"devonsphere express": DevonsphereExpress,
@coderabbitai

coderabbitai Bot commented Jul 10, 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: 3c7550f5-2c00-4c27-a6c5-4de58a9bc80d

📥 Commits

Reviewing files that changed from the base of the PR and between 853bb6a and a097eaa.

⛔ Files ignored due to path filters (11)
  • website/assets/images/app-icon-dax-studio-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-delinea-connection-manager-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-devolutions-launcher-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-devolutions-workspace-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-devpod-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-digiseal-reader-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-directory-opus-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-dngrep-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-draftable-desktop-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-drofus-60x60@2x.png is excluded by !**/*.png
  • website/assets/images/app-icon-dymo-id-60x60@2x.png is excluded by !**/*.png
📒 Files selected for processing (49)
  • ee/maintained-apps/inputs/winget/dataspell.json
  • ee/maintained-apps/inputs/winget/dax-studio.json
  • ee/maintained-apps/inputs/winget/delinea-connection-manager.json
  • ee/maintained-apps/inputs/winget/devolutions-launcher.json
  • ee/maintained-apps/inputs/winget/devolutions-workspace.json
  • ee/maintained-apps/inputs/winget/devpod.json
  • ee/maintained-apps/inputs/winget/digiseal-reader.json
  • ee/maintained-apps/inputs/winget/directory-opus.json
  • ee/maintained-apps/inputs/winget/dngrep.json
  • ee/maintained-apps/inputs/winget/draftable-desktop.json
  • ee/maintained-apps/inputs/winget/drofus.json
  • ee/maintained-apps/inputs/winget/dymo-id.json
  • ee/maintained-apps/inputs/winget/scripts/dataspell_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/dataspell_uninstall.ps1
  • ee/maintained-apps/inputs/winget/scripts/dax-studio_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/dax-studio_uninstall.ps1
  • ee/maintained-apps/inputs/winget/scripts/delinea-connection-manager_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/delinea-connection-manager_uninstall.ps1
  • ee/maintained-apps/inputs/winget/scripts/digiseal-reader_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/digiseal-reader_uninstall.ps1
  • ee/maintained-apps/inputs/winget/scripts/directory-opus_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/directory-opus_uninstall.ps1
  • ee/maintained-apps/inputs/winget/scripts/dymo-id_install.ps1
  • ee/maintained-apps/inputs/winget/scripts/dymo-id_uninstall.ps1
  • ee/maintained-apps/outputs/apps.json
  • ee/maintained-apps/outputs/dataspell/windows.json
  • ee/maintained-apps/outputs/dax-studio/windows.json
  • ee/maintained-apps/outputs/delinea-connection-manager/windows.json
  • ee/maintained-apps/outputs/devolutions-launcher/windows.json
  • ee/maintained-apps/outputs/devolutions-workspace/windows.json
  • ee/maintained-apps/outputs/devpod/windows.json
  • ee/maintained-apps/outputs/digiseal-reader/windows.json
  • ee/maintained-apps/outputs/directory-opus/windows.json
  • ee/maintained-apps/outputs/dngrep/windows.json
  • ee/maintained-apps/outputs/draftable-desktop/windows.json
  • ee/maintained-apps/outputs/drofus/windows.json
  • ee/maintained-apps/outputs/dymo-id/windows.json
  • frontend/pages/SoftwarePage/components/icons/DaxStudio.tsx
  • frontend/pages/SoftwarePage/components/icons/DelineaConnectionManager.tsx
  • frontend/pages/SoftwarePage/components/icons/DevolutionsLauncher.tsx
  • frontend/pages/SoftwarePage/components/icons/DevolutionsWorkspace.tsx
  • frontend/pages/SoftwarePage/components/icons/Devpod.tsx
  • frontend/pages/SoftwarePage/components/icons/DigisealReader.tsx
  • frontend/pages/SoftwarePage/components/icons/DirectoryOpus.tsx
  • frontend/pages/SoftwarePage/components/icons/Dngrep.tsx
  • frontend/pages/SoftwarePage/components/icons/DraftableDesktop.tsx
  • frontend/pages/SoftwarePage/components/icons/Drofus.tsx
  • frontend/pages/SoftwarePage/components/icons/DymoId.tsx
  • frontend/pages/SoftwarePage/components/icons/index.ts

Walkthrough

Adds Windows maintained-app definitions for twelve applications, including Winget metadata, installer and uninstaller PowerShell scripts, version detection, installer metadata, hashes, and catalog entries. It also adds React SVG icon components for the applications and registers software-name-to-icon mappings in the SoftwarePage icon registry.

Possibly related PRs

  • fleetdm/fleet#48881 — Adds maintained-app manifests, scripts, and frontend icon mappings through the same infrastructure.
  • fleetdm/fleet#48872 — Extends the shared frontend icon registry with additional software mappings.
  • fleetdm/fleet#47648 — Adds software icon components and corresponding icon registry entries.
✨ 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 add-windows-fmas-letter-d

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.

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