top of page

Automating Dell Software Updates with Dell Command Update and Intune

  • Fredrik
  • Feb 21
  • 6 min read

Making sure the devices have updated device drivers, firmware and software from the OEM is a natural part of any device management teams responsibilities. In this post I will demonstrate how to deploy and configure Dell Command Update with Intune to configure and automate devices updates.



Contents:


For managing software updates Dell currently offers Dell Command Update (DCU), Dell Support Assist and the new Dell Client Device Manager (DCDM). Though Dell currently recommends using Dell Command Update to manage updates for enterprises, and to consider migrating to the new Dell Client Device Manager in the future. Yes, Dell currently has an extreme amount of tools that does all sorts of things. Its great to hear that Dell is doing something about this and combining their many tools, though the only downside is that it is estimated to take around 2 years to complete (more on that down the road).


Obtaining Software

At the time of writing Dell Command Update 5.6.0 is the latest version. This also requires the .NET 8 Desktop Runtime. We will package this application in Intune using the Win32 Content Prep Tool.


  1. Download Command Update 5.6.0 from Dells website here.

  2. Download .NET Windows Desktop Runtime from Microsoft here.

  3. Download the Intune Win32 Content Prep Tool from GitHub here.

  4. Open the Dell Command Update .exe file and choose to extract the contents to a folder.


Importing ADMX Templates Into Intune

First open the folder where Dell Command Update was extracted to. You should see a folder called Templates, within this folder are several ADMX and ADML files, these are the ones we need to upload to Intune.


In Intune Navigate to Devices -> Configuration -> Import ADMX then click Import.


Select the Dell.ADMX file and the corresponding ADML file within the en-us folder. Do not upload multiple files at once, and make sure you upload in the correct order: Dell, Dell Command Update and finally Dell Unified User Consent.



Configure Dell Command Settings in Intune

Lets create a new policy to configure the settings we want. Start by navigating to the Configuration pane and creating a new Policy. Make sure to select Windows 10 and later for the Platform and Templates as the policy type. The template name should be the Imported Administrative Templates.




Once we get to the Configuration Settings step, make the configuration changes that you require. The folder called Update Settings is probably a good place to start. If you have an environment that consists of multiple PC vendors, I recommend creating a filter so that these policies only apply to Dell PCs when deploying.



Packaging .NET Windows Desktop Runtime

Lets first package Windows Desktop Runtime that is a prerequisite for Dell Command Update. With the previous version (Dell Command Update 5.5.0) you had to have a Windows Desktop Runtime between version 8.0.8 and 8.0.17. This limitation seems to be removed in 5.6.0 as the official documentation states that Microsoft .NET Desktop Runtime 8 or later is required and not a specific range. At the time of writing the latest version is 8.0.24 so we will be using that.


Start by putting the Windows Desktop Runtime (windowsdesktop-runtime-8.0.24-win-x64.exe) in its own folder such as C:\Temp\DesktopRuntime.

Next launch the Intune Content Prep Tool (IntuneWinAppUtil.exe) from a Command or PowerShell prompt. Typing the following:


.\IntuneWinAppUtil.exe -c C:\Temp\DesktopRuntime -s windowsdesktop-runtime-8.0.24-win-x64.exe -o C:\Temp

-c is the source folder

-s source setup file

-o output folder


If done correctly you should see a new file called windowsdesktop-runtime-8.0.24-win-x64.intunewin in the C:\Temp folder. We now need to upload this file into Intune.


In Intune navigate to Apps and Create a new application, select Windows app (Win32) as the App Type.


  1. Select the App Package File and choose the intunewin file that we just created.



  1. Give the application a name and provide additional software details. In production environments i always add a logo and specify as much details as i possibly can.


  2. Add the command lines to install the application: Install: windowsdesktop-runtime-8.0.24-win-x64.exe /install /quiet /norestart Uninstall: windowsdesktop-runtime-8.0.24-win-x64.exe /uninstall /quiet /norestart


  3. Define the requirements. Since .NET Desktop Runtime is supported on Windows 10 and Windows 11 clients I will choose Windows 10 1607.


  4. For the detection method i find is easiest to use a script as it provides me with more flexibility, especially in this case where any version of the .NET Desktop Runtime 8 would work. This script uses a simple regex to detect if the .NET Desktop Runtime 8 is installed. It will accept any version that starts with 8.0.x.


$desktopRuntimePath = "C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App"
if (Test-Path $desktopRuntimePath) {
    $versions = Get-ChildItem $desktopRuntimePath | Where-Object { $_.PSIsContainer } | Select-Object -ExpandProperty Name
    if ($versions -match '^8\.0\.\d{2}$') {
        Write-Output "Found .NET Desktop Runtime 8"
        exit 0
    }
} else {
    Write-Output ".NET Desktop Runtime 8 NOT Found"
    exit 1
}

  1. For Dependencies, Supersedence and Assignments just skip them by clicking the Next button. We will not deploy this package directly, we will do that as a dependency when when we deploy our main application Dell Command Update in the next step.

  2. Finally click Create and wait for the intunewin package to upload to Intune.

Packaging Dell Command Update

With the .NET Desktop Runtime out of the way lets package Dell Command Update.


As before make sure the Dell Command Update .exe (Dell-Command-Update-Application_5CR1Y_WIN64_5.6.0_A00) is in its own folder such as C:\Temp\DCU.


Before we run the Intune Content Prep Tool we will add a PowerShell script that will handle the removal of any older versions and install Dell Command Update 5.6.0 itself. Here is the install.ps1 script that I am using:


$LogPath = "$env:ProgramData\NC\Log"

if (-not (Test-Path $LogPath)) {
    New-Item -Path $LogPath -ItemType Directory -Force | Out-Null
}

$LogFile = Join-Path -Path $LogPath -ChildPath "DCU_5.6.0_Install.log"
Start-Transcript -Path $LogFile

try {
    # 1. Check & uninstall old versions
    $CurrentVersion = [version]"5.6.0"

    # Registry locations to check
    $UninstallPaths = @(
        "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
        "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
    )

    foreach ($Path in $UninstallPaths) {
        $apps = Get-ItemProperty $Path -ErrorAction SilentlyContinue | Where-Object {
            $_.DisplayName -like "Dell Command*Update*" -or $_.DisplayName -like "Dell Command | Update*"
        }

        foreach ($app in $apps) {
            try {
                if ($app.DisplayVersion) {
                    $installedVersion = [version]$app.DisplayVersion
                    if ($installedVersion -lt $CurrentVersion) {
                        Write-Output "Removing $($app.DisplayName) version $installedVersion (older than $CurrentVersion)"

                        $uninstallString = $app.UninstallString

                        if ($uninstallString) {
                            # Standardize silent execution
                            if ($uninstallString -match "MsiExec") {
                                $Guid = $app.PSChildName
                                $uArguments = "/x $Guid /qn /norestart"
                                Write-Output "Executing MSI Removal: MsiExec.exe"
                                Start-Process -FilePath "MsiExec.exe" -ArgumentList $uArguments -Wait -NoNewWindow
                            } else {
                                $cmd = "$uninstallString /quiet /norestart"
                                Write-Output "Running Command: cmd /c $cmd"
                                Start-Process -FilePath "cmd.exe" -ArgumentList "/c $cmd" -Wait -NoNewWindow
                            }
                        }
                    } else {
                        Write-Output "Keeping $($app.DisplayName) version $installedVersion (>= $CurrentVersion)"
                    }
                }
            } catch {
                Write-Warning "Failed to handle $($app.DisplayName): $_"
            }
        }
    }
} catch { 
    Write-Error "Critical error during uninstallation phase: $($_.Exception.Message)"
    exit 1
}

Start-Sleep -Seconds 10

# 2. Install new version
$Installer = "Dell-Command-Update-Application_5CR1Y_WIN64_5.6.0_A00.EXE"
$InstallerPath = Join-Path -Path $PSScriptRoot -ChildPath $Installer
$Arguments = '/passthrough /i /s /v"/qn"'

try {
    if (Test-Path $InstallerPath) {
        Write-Output "Running installer: $InstallerPath"
        $process = Start-Process -FilePath $InstallerPath -ArgumentList $Arguments -Wait -Passthru
        if ($process.ExitCode -eq 0) {
            Write-Output "Installation completed successfully."
            exit 0
        } else {
            Write-Output "Installer exited with code $($process.ExitCode)."
            exit $process.ExitCode
        }
    } else {
        Write-Output "Installer not found at $InstallerPath"
        exit 1    
    }

}
catch {
    Write-Output "ERROR: $($_.Exception.Message)"
        exit 1
} 
finally {
    Write-Output "--- Transcription stops ---"
    Stop-Transcript
}

You should now have a folder C:\Temp\DCU that contains the Dell-Command-Update-Application_5CR1Y_WIN64_5.6.0_A00.EXE and the install.ps1 script.


Next launch the Intune Content Prep Tool (IntuneWinAppUtil.exe) like before

.\IntuneWinAppUtil.exe -c C:\Temp\DCU -s Dell-Command-Update-Application_5CR1Y_WIN64_5.6.0_A00.exe -o C:\Temp

Another intunewin package will be available in C:\Temp. With that lets get this uploaded to Intune.


In Intune navigate to Apps and Create a new application, select Windows app (Win32) as the App Type.


  1. Upload the intunewin for Dell Command Update and add additional details.



  1. On the Program page, add the install and uninstall commands: Install: powershell.exe -ExecutionPolicy Bypass -File .\install.ps1 Uninstall: MsiExec.exe /X{011F1A5C-BC85-49E6-B7EE-A9CFF8880ACB}


  2. On the Requirements page, select the minimum OS version. Dell Command Update supports Windows 10 if needed.


  1. On the Detection Rules page create a new Detection Rule that looks like this: Intune uses Major.Minor.Build.Revision when comparing versions and so 5.6.0 might not always translate to 5.6.0.0.

    Path: C:\Program Files (x86)\Dell\CommandUpdate File: DellCommandUpdate.exe Detection Method: String Operator: Greater or equal to

    Value: 5.6.0.0


  2. On the Dependencies page add the Microsoft .NET Desktop Runtime application that we packaged earlier. Make sure the Automatic Install is set to Yes.


  3. Click Next on the Supersedence page and go directly to the Assignments page. Assign the application to your Dell devices.


  4. Finally click Create to finish the Application. As before it can take a little while for the intunewin to finish upload.


Verifying our Deployment on a Client


If we launch Dell Command Update after installation we can see we have the correct version - 5.6.0 installed, additionally our settings that we configured in Intune have also been applied. The settings are locked so that no end-user can change them.





Comments


newsletterman.webp

Subscribe to our newsletter • Don’t miss out!

© 2026 - Pragmatic Perspective all rights reserved

Design by Thomre Media

bottom of page