Re-add Dell Display and Peripheral Manager Windows FMA, validate on client-OS runner (#50313)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** NA (Windows FMA workstream; follow-up to #49127, which dropped DDPM) Re-adds **Dell Display and Peripheral Manager** (`Dell.DisplayAndPeripheralManager` 2.2.2.8) as a Windows Fleet-maintained app, and adds a `requires_client_os` routing override so its CI validation always runs on the `windows-11-arm` runner. ## Why DDPM was dropped before, and why it's viable now DDPM was dropped from the earlier re-add because its InstallShield setup aborted with `0x80042000` under every documented silent switch, which was diagnosed at the time as a .NET-prerequisite/headless-chaining problem. A new debug run with Dell's own `/CreateDebugLog` switch shows the real cause: the setup evaluates the OS at `OFUIBefore` and terminates because the runner reports **Microsoft Windows Server 2025**. DDPM is a Windows 10/11 client application and refuses to install on Server SKUs — which is exactly what GitHub's x64 `windows-latest` image is. ``` OSetUMode() 0 AP:2.2.2.8 OFUIBefore Os Major10 Minor0 OS - 44444 // End Log File... ``` ## `requires_client_os` CI routing - New optional winget input field `requires_client_os: true` (documented in `ee/maintained-apps/README.md` and on the Go input struct; ignored by ingestion). - `.github/scripts/partition-fma-apps.sh` routes any app with this flag to `windows-11-arm` — the only GitHub-hosted client-OS Windows runner — regardless of `installer_arch`. The x64 installer runs there under Prism emulation; DDPM's gate is the OS SKU, not the architecture. - Verified locally: partitioning the full 421-app Windows catalog reroutes only `dell-display-and-peripheral-manager/windows`. ## App identity (verified against the real installer) - Downloaded `DDPM-Setup_2.2.2.8.exe` from `dl.dell.com` (Chrome UA per #49123); SHA256 matches the winget manifest. - Embedded InstallShield `[Application]` block: `Name=Dell Display and Peripheral Manager`, `Company=Dell Technologies`; ProductCode matches the manifest GUID. The setup log reports `AP:2.2.2.8` as the registering version. - Installs with Dell's documented managed-deployment switches `/Silent /HeadlessMode=true /TelemetryConsent=false /TurnOffCA` — the final pre-drop iteration (6d0f2c00af), which also declines telemetry and disables DDPM's self-updater on Fleet-managed hosts. Uninstalls via `msiexec /x` on the ProductCode looked up in the registry by DisplayName. Input/uninstall script/icon are restored from the pre-drop state; the install script is the final pre-drop iteration with its root-cause comment corrected (Server-SKU OS gate, not headless-SYSTEM chaining). Output regenerated (winget still at 2.2.2.8; script refs verified). # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] 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. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] QA'd all new/changed functionality manually (partition script exercised locally over the full catalog and a mixed PR-style slug list; ingester regenerated with no output drift; `go test ./ee/maintained-apps/ingesters/winget/` passes) - [ ] `test-fma-windows-pr-only` validates DDPM on the `windows-11-arm` runner in this PR's CI <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Dell Display and Peripheral Manager to the Windows software catalog, including installation, uninstallation, detection, metadata, and an app icon. * Added support for routing applications that require a Windows client operating system to the appropriate Windows 11 ARM test environment. * **Documentation** * Documented Windows client operating system routing behavior and test environment architecture details. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -11,6 +11,13 @@
|
||||
# ee/maintained-apps/inputs/winget/7-zip.json (.installer_arch).
|
||||
# Slugs whose input file or installer_arch is missing default to
|
||||
# the x64 runner.
|
||||
#
|
||||
# Exception: inputs with "requires_client_os": true always route
|
||||
# to windows-11-arm regardless of installer_arch. The x64 runner
|
||||
# image is Windows Server, and some installers (e.g. Dell Display
|
||||
# and Peripheral Manager) refuse to install on Server SKUs;
|
||||
# windows-11-arm is the only GitHub-hosted client-OS Windows
|
||||
# runner, and it runs x64/x86 installers under Prism emulation.
|
||||
# darwin All apps run on macos-latest (arm64; x86-only casks run under
|
||||
# Rosetta 2, matching how customer Macs run them). No architecture
|
||||
# partitioning is needed.
|
||||
@@ -112,11 +119,20 @@ case "$PLATFORM" in
|
||||
name="${slug%/windows}"
|
||||
input_file="${WINGET_INPUTS_DIR}/${name}.json"
|
||||
arch=""
|
||||
requires_client_os="false"
|
||||
if [ -f "$input_file" ]; then
|
||||
arch=$(jq -r '.installer_arch // empty' "$input_file" 2>/dev/null || echo "")
|
||||
requires_client_os=$(jq -r '.requires_client_os // false' "$input_file" 2>/dev/null || echo "false")
|
||||
else
|
||||
echo "Warning: no winget input file for '$slug' at $input_file, assuming x64" >&2
|
||||
fi
|
||||
if [ "$requires_client_os" == "true" ]; then
|
||||
# The app won't install on Windows Server (the x64 runner
|
||||
# image), so validate it on the client-OS arm64 runner.
|
||||
arm64_slugs+=("$slug")
|
||||
echo " - $slug -> windows-11-arm (requires_client_os)"
|
||||
continue
|
||||
fi
|
||||
case "$arch" in
|
||||
arm64)
|
||||
arm64_slugs+=("$slug")
|
||||
|
||||
Reference in New Issue
Block a user