Add Windows FMAs (letter I): 17 apps - #49923
Conversation
- IBM Semeru Runtime Open Edition JDK 8/11/17/21 and JRE 8/11/17/21 (MSI; Temurin-style per-major exists query keyed on name+publisher+version-major) - IronPython 3 (MSI; fuzzy 'IronPython 3%' to exclude the EOL v2) - ImageGlass (dual-scope MSI; custom ALLUSERS=1 install) - install4j (install4j exe, bundled JRE) - IrfanView (custom installer /silent /allusers=1; fuzzy 'IrfanView%') - iMazing HEIC Converter, IsoBuster, ImpExpPro, Infix PDF Editor (Inno) - Ibis Calculeren voor Bouw (InstallShield; uninstall via MSI UpgradeCode) apps.json descriptions follow the '<Name> is a ...' convention. Ibis, ImpExpPro, and Infix ship without a catalog icon (no clean >=256px first-party logo found); the 8 Semeru apps share the IBM Semeru logo. Dropped (recorded in the workstream tracker): IBM Aspera Connect (per-user MSI + rolling URL), IcedTea-Web (unbundled JRE dependency), IronPython 2 (EOL), install4j 9 (legacy), IrfanView PlugIns (add-on, no ARP entry), Intermedia Unite + Teams plugin (non-versioned 'latest' URLs).
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #49923 +/- ##
==========================================
- Coverage 67.92% 67.91% -0.01%
==========================================
Files 3906 3920 +14
Lines 249670 249698 +28
Branches 13300 13300
==========================================
+ Hits 169576 169590 +14
- Misses 64820 64834 +14
Partials 15274 15274
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
Adds a new “I” batch of Windows Fleet-maintained apps (FMAs) and wires up matching software icons in the Software page so these titles render with branded icons where possible.
Changes:
- Added 17 new Windows FMA definitions (winget inputs, install/uninstall scripts, generated outputs).
- Updated the maintained-apps
apps.jsoncatalog with new Windows entries and descriptions. - Added and mapped new Software Page icons for the Windows titles (including IBM Semeru JDK/JRE variants).
Reviewed changes
Copilot reviewed 64 out of 78 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| frontend/pages/SoftwarePage/components/icons/index.ts | Adds icon imports and name→icon mappings for the new Windows titles (incl. Semeru, ImageGlass, IrfanView, etc.). |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJdk11.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJdk17.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJdk21.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJdk8.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJre11.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJre17.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJre21.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/IbmSemeruJre8.tsx | Adds IBM Semeru logo icon component. |
| frontend/pages/SoftwarePage/components/icons/Imageglass.tsx | Adds ImageGlass icon component. |
| frontend/pages/SoftwarePage/components/icons/ImazingHeicConverter.tsx | Adds iMazing HEIC Converter icon component. |
| frontend/pages/SoftwarePage/components/icons/Install4J.tsx | Adds install4j icon component. |
| frontend/pages/SoftwarePage/components/icons/Irfanview.tsx | Adds IrfanView icon component. |
| frontend/pages/SoftwarePage/components/icons/Ironpython.tsx | Adds IronPython icon component. |
| frontend/pages/SoftwarePage/components/icons/Isobuster.tsx | Adds IsoBuster icon component. |
| ee/maintained-apps/outputs/apps.json | Adds new Windows app catalog entries for the “I” batch. |
| ee/maintained-apps/outputs/ibis-calculeren-voor-bouw/windows.json | Generated Windows output manifest for Ibis Calculeren voor Bouw. |
| ee/maintained-apps/outputs/ibm-semeru-jdk-11/windows.json | Generated Windows output manifest for IBM Semeru JDK 11. |
| ee/maintained-apps/outputs/ibm-semeru-jdk-17/windows.json | Generated Windows output manifest for IBM Semeru JDK 17. |
| ee/maintained-apps/outputs/ibm-semeru-jdk-21/windows.json | Generated Windows output manifest for IBM Semeru JDK 21. |
| ee/maintained-apps/outputs/ibm-semeru-jdk-8/windows.json | Generated Windows output manifest for IBM Semeru JDK 8. |
| ee/maintained-apps/outputs/ibm-semeru-jre-11/windows.json | Generated Windows output manifest for IBM Semeru JRE 11. |
| ee/maintained-apps/outputs/ibm-semeru-jre-17/windows.json | Generated Windows output manifest for IBM Semeru JRE 17. |
| ee/maintained-apps/outputs/ibm-semeru-jre-21/windows.json | Generated Windows output manifest for IBM Semeru JRE 21. |
| ee/maintained-apps/outputs/ibm-semeru-jre-8/windows.json | Generated Windows output manifest for IBM Semeru JRE 8. |
| ee/maintained-apps/outputs/imageglass/windows.json | Generated Windows output manifest for ImageGlass. |
| ee/maintained-apps/outputs/imazing-heic-converter/windows.json | Generated Windows output manifest for iMazing HEIC Converter. |
| ee/maintained-apps/outputs/impexppro/windows.json | Generated Windows output manifest for ImpExpPro. |
| ee/maintained-apps/outputs/infix-pdf-editor/windows.json | Generated Windows output manifest for Infix PDF Editor. |
| ee/maintained-apps/outputs/install4j/windows.json | Generated Windows output manifest for install4j. |
| ee/maintained-apps/outputs/irfanview/windows.json | Generated Windows output manifest for IrfanView. |
| ee/maintained-apps/outputs/ironpython/windows.json | Generated Windows output manifest for IronPython 3. |
| ee/maintained-apps/outputs/isobuster/windows.json | Generated Windows output manifest for IsoBuster. |
| ee/maintained-apps/inputs/winget/ibis-calculeren-voor-bouw.json | Winget input definition for Ibis Calculeren voor Bouw. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jdk-11.json | Winget input definition for IBM Semeru JDK 11. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jdk-17.json | Winget input definition for IBM Semeru JDK 17. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jdk-21.json | Winget input definition for IBM Semeru JDK 21. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jdk-8.json | Winget input definition for IBM Semeru JDK 8. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jre-11.json | Winget input definition for IBM Semeru JRE 11. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jre-17.json | Winget input definition for IBM Semeru JRE 17. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jre-21.json | Winget input definition for IBM Semeru JRE 21. |
| ee/maintained-apps/inputs/winget/ibm-semeru-jre-8.json | Winget input definition for IBM Semeru JRE 8. |
| ee/maintained-apps/inputs/winget/imageglass.json | Winget input definition for ImageGlass. |
| ee/maintained-apps/inputs/winget/imazing-heic-converter.json | Winget input definition for iMazing HEIC Converter. |
| ee/maintained-apps/inputs/winget/impexppro.json | Winget input definition for ImpExpPro. |
| ee/maintained-apps/inputs/winget/infix-pdf-editor.json | Winget input definition for Infix PDF Editor. |
| ee/maintained-apps/inputs/winget/install4j.json | Winget input definition for install4j. |
| ee/maintained-apps/inputs/winget/irfanview.json | Winget input definition for IrfanView. |
| ee/maintained-apps/inputs/winget/ironpython.json | Winget input definition for IronPython 3. |
| ee/maintained-apps/inputs/winget/isobuster.json | Winget input definition for IsoBuster. |
| ee/maintained-apps/inputs/winget/scripts/ibis-calculeren-voor-bouw_install.ps1 | Install script for Ibis Calculeren voor Bouw. |
| ee/maintained-apps/inputs/winget/scripts/imageglass_install.ps1 | Install script for ImageGlass (ALLUSERS=1). |
| ee/maintained-apps/inputs/winget/scripts/imazing-heic-converter_install.ps1 | Install script for iMazing HEIC Converter. |
| ee/maintained-apps/inputs/winget/scripts/imazing-heic-converter_uninstall.ps1 | Uninstall script for iMazing HEIC Converter. |
| ee/maintained-apps/inputs/winget/scripts/impexppro_install.ps1 | Install script for ImpExpPro. |
| ee/maintained-apps/inputs/winget/scripts/impexppro_uninstall.ps1 | Uninstall script for ImpExpPro. |
| ee/maintained-apps/inputs/winget/scripts/infix-pdf-editor_install.ps1 | Install script for Infix PDF Editor. |
| ee/maintained-apps/inputs/winget/scripts/infix-pdf-editor_uninstall.ps1 | Uninstall script for Infix PDF Editor. |
| ee/maintained-apps/inputs/winget/scripts/install4j_install.ps1 | Install script for install4j. |
| ee/maintained-apps/inputs/winget/scripts/install4j_uninstall.ps1 | Uninstall script for install4j. |
| ee/maintained-apps/inputs/winget/scripts/irfanview_install.ps1 | Install script for IrfanView. |
| ee/maintained-apps/inputs/winget/scripts/irfanview_uninstall.ps1 | Uninstall script for IrfanView. |
| ee/maintained-apps/inputs/winget/scripts/isobuster_install.ps1 | Install script for IsoBuster. |
| ee/maintained-apps/inputs/winget/scripts/isobuster_uninstall.ps1 | Uninstall script for IsoBuster. |
Comments suppressed due to low confidence (1)
frontend/pages/SoftwarePage/components/icons/index.ts:1644
- Same matching issue for Semeru JRE icons: the FMAs detect installed software with
name LIKE 'IBM Semeru Runtime Open Edition (JRE)%', so keys like"ibm semeru runtime open edition jre 11"won’t match the program title if the DisplayName isIBM Semeru Runtime Open Edition (JRE)(major comes fromversion). Add a key for the parenthesized prefix so icons can be found viamatchLoosePrefixToKey.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "ibm semeru runtime open edition jdk 11": IbmSemeruJdk11, | ||
| "ibm semeru runtime open edition jdk 17": IbmSemeruJdk17, | ||
| "ibm semeru runtime open edition jdk 21": IbmSemeruJdk21, | ||
| "ibm semeru runtime open edition jdk 8": IbmSemeruJdk8, |
iMazing HEIC Converter's Inno installer has a postinstall [Run] entry that launches the GUI and is not flagged skipifsilent, so it fires under /VERYSILENT. Start-Process -Wait waits on descendants, so the install step never returned even though the install succeeded. Pass the installer's own /nolaunch switch, wait on Setup itself, and stop any GUI that slipped through. Ibis Calculeren voor Bouw and ImpExpPro are dropped: both hosts reject the Go default User-Agent that DownloadInstaller sends (403 and 465), so Fleet cannot download either installer.
Script Diff Resultsee/maintained-apps/outputs/ibm-semeru-jdk-11/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jdk-17/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jdk-21/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jdk-8/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jre-11/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jre-17/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jre-21/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ibm-semeru-jre-8/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/imageglass/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/imazing-heic-converter/windows.json=== Install // 3d9f90a6 -> bc1dc807 ===
--- /tmp/old.5Zq79j 2026-07-25 02:14:59.203925824 +0000
+++ /tmp/new.Fim3rq 2026-07-25 02:14:59.203925824 +0000
@@ -1,21 +1,63 @@
# Learn more about .exe install scripts:
# http://fleetdm.com/learn-more-about/exe-install-scripts
#
-# iMazing HEIC Converter uses an Inno Setup installer; these switches run it silently machine-wide.
+# iMazing HEIC Converter ships an Inno Setup 6.1 installer. Its [Run] section
+# has a postinstall entry that launches "{app}\iMazing HEIC Converter.exe" and
+# is NOT flagged "skipifsilent", so the GUI starts even under /VERYSILENT.
+# PowerShell's "Start-Process -Wait" waits for the process AND its descendants,
+# so that lingering GUI keeps the install step blocked on a headless host even
+# though the install itself succeeds.
+#
+# So we pass "/nolaunch" (a switch the installer's own script parses, alongside
+# "/silent" and "/verysilent") to keep the postinstall launch from firing, wait
+# on the Setup process ITSELF rather than its descendants, and stop the GUI if
+# it started anyway. "/nolaunch" is lowercase to match the literal the
+# installer script compares against.
$exeFilePath = "${env:INSTALLER_PATH}"
+$timeoutSeconds = 300
+
+# Recursively stop the Setup process and any children (e.g. Inno's setup.tmp
+# helper) so the installer file lock is released.
+function Stop-ProcessTree {
+ param([int]$ParentId)
+ Get-CimInstance Win32_Process -Filter "ParentProcessId = $ParentId" -ErrorAction SilentlyContinue |
+ ForEach-Object { Stop-ProcessTree -ParentId $_.ProcessId }
+ Stop-Process -Id $ParentId -Force -ErrorAction SilentlyContinue
+}
+
try {
+ if (-not (Test-Path $exeFilePath)) {
+ Write-Host "Error: Installer file not found at: $exeFilePath"
+ Exit 1
+ }
+
+ # NOTE: intentionally launched WITHOUT -Wait; see comment above.
+ $process = Start-Process -FilePath "$exeFilePath" `
+ -ArgumentList "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART /nolaunch" -PassThru
+ Write-Host "Launched iMazing HEIC Converter installer (PID: $($process.Id))"
+
+ $exited = $process.WaitForExit($timeoutSeconds * 1000)
+
+ # Stop the app in case the installer launched it anyway, so it can't hold a
+ # file lock or interfere with the rest of the run. This only ends the
+ # running process; it does not uninstall anything.
+ Stop-Process -Name "iMazing HEIC Converter" -Force -ErrorAction SilentlyContinue
+
+ if (-not $exited) {
+ Write-Host "Installer did not exit within ${timeoutSeconds}s; stopping it."
+ Stop-ProcessTree -ParentId $process.Id
+ Exit 1
+ }
-$process = Start-Process -FilePath "$exeFilePath" `
- -ArgumentList "/VERYSILENT /SUPPRESSMSGBOXES /NORESTART" -PassThru -Wait
-$exitCode = $process.ExitCode
-Write-Host "Install exit code: $exitCode"
+ $exitCode = $process.ExitCode
+ Write-Host "Install exit code: $exitCode"
-if ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }
-Exit $exitCode
+ if ($exitCode -eq 3010 -or $exitCode -eq 1641) { Exit 0 }
+ Exit $exitCode
} catch {
- Write-Host "Error: $_"
- Exit 1
+ Write-Host "Error: $_"
+ Exit 1
}
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/infix-pdf-editor/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/install4j/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/irfanview/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/ironpython/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===ee/maintained-apps/outputs/isobuster/windows.json=== Install Script (no changes) ===
=== Uninstall Script (no changes) === |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (14)
📒 Files selected for processing (57)
WalkthroughAdds Windows maintained-app definitions for eight IBM Semeru JDK/JRE variants and seven additional applications. The changes include Winget input manifests, PowerShell install and uninstall scripts, generated Windows metadata with detection queries and installer references, entries in the maintained-app catalog, and React SVG icons mapped to the new software names. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Related issue: N/A — part of the ongoing Windows Fleet-maintained apps (FMA) parity workstream (letter I).
What this does
Adds 17 Windows Fleet-maintained apps for the letter-I batch. apps.json descriptions follow the house
"<Name> is a …"convention.IBM Semeru Runtime Open Edition (Java) — 8 apps (MSI, machine, x64): JDK 8/11/17/21 and JRE 8/11/17/21. Per-major detection follows the Eclipse Temurin pattern —
name LIKE 'IBM Semeru Runtime Open Edition (JDK|JRE)%' AND publisher = 'Semeru' AND version LIKE '<major>.%'— so majors and JDK/JRE never cross-match. All 8 share the IBM Semeru logo.Other apps (9):
IronPython 3%(excludes the EOL v2)ALLUSERS=1install-q/silent /allusers=1; versioned+arch name → fuzzyIrfanView%/VERYSILENT)uninstall_type: msi)Dropped from this batch (recorded in the workstream tracker)
ALLUSERS=2/MSIINSTALLPERUSER=1, no machine switch in the manifest) + a rolling/latest/URL that 404s on the next release.Notes
ignore_hash; winget re-ingestion tracks future drift.new-fmaskill against the winget-pkgs manifests, with several DisplayNames confirmed viainnoextract/msitools.Testing
Summary by CodeRabbit