File Transfer Support for HTML 5 Remote Desktop Web Client

The HTML 5 Remote Desktop Web Client, for Windows Server RDS Deployments, now supports File Transfers. However, to enable this, feature the HTML 5 Web Client will need to be manually updated.

To see the latest release notes for the Latest HTML 5 Remote Desktop Client, please visit:
https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/web-client-whatsnew

To update the HTML 5 Web Client:

1. Open a PowerShell console as Administrator (Right-click run as Administrator) on the Server running the RD Web Access role. Run the command below, which will download the latest available version of the web client.

Install-RDWebClientPackage

2. Now that the latest web client has been downloaded. It can be published by running the command below, which will replace the client for all users.

Publish-RDWebClientPackage -Type Production -Latest

Please contact me if you have any comments or suggestions: contact@woodward.digital

One comment

  1. Hi All, following the version release of 2.1.62.1 on January 30, 2025. I’ve kicked myself for leaving this to be an overlooked manual process for so long.

    I’ve made the below script to be used as a schedule task on the remote gateway server which can be run periodically out of production hours (if you’re lucky enough to have such a thing). Please amend to your needs, hope it’s helpful!

    In essence, the script automates the process of updating the RD Web Client, checks related services, and logs its actions. It also includes a check to prevent unnecessary updates if the current version is already the latest. The version check is the most fragile part of the script, as it relies on scraping information from a Microsoft webpage. A more robust solution would be preferable if Microsoft provided an API or other stable way to get the latest version number.

    # Set Execution Policy (if not already set) – Only needed once per machine
    Set-ExecutionPolicy RemoteSigned -Force

    # Log file path (adjust as needed)
    $LogFile = “C:\RDSWebClientUpdate.log”

    # Function to write to the log file with UK date format
    function Write-Log {
    param(
    [string]$Message
    )
    $Timestamp = Get-Date -Format “dd/MM/yyyy HH:mm:ss” # UK date format
    “$Timestamp – $Message” | Out-File -FilePath $LogFile -Append
    }

    # Function to get the RD Web Client version
    function Get-RDWebClientVersion {
    try {
    # Get the version from the web.config file (more reliable)
    $webConfigPath = Join-Path -Path (Get-WebSite -Name “RDWeb”).PhysicalPath -ChildPath “web.config”
    $xml = [xml](Get-Content $webConfigPath)
    $version = $xml.configuration.appSettings.add | Where-Object {$_.key -eq “RDWebClientVersion”} | Select-Object -ExpandProperty value
    return $version
    } catch {
    Write-Log “Error getting RD Web Client version: $($_.Exception.Message)”
    return “Unknown”
    }
    }

    Write-Log “Starting RD Web Client update process…”

    try {
    # Check if the RD Web Access role is installed. Fail if not.
    if (!(Get-WindowsFeature -Name Web-Mgmt-Tools | Where-Object {$_.Installed -eq $true})) {
    Write-Log “Error: RD Web Access role is not installed.”
    throw “RD Web Access role not found.” # Stop script execution
    }

    # Get and log the current version
    $CurrentVersion = Get-RDWebClientVersion
    Write-Log “Current RD Web Client version: $CurrentVersion”

    # Download and Publish the latest web client (version check is implicit)
    Write-Log “Downloading and publishing latest RD Web Client package…”
    Install-RDWebClientPackage
    Publish-RDWebClientPackage -Type Production -Latest

    # Check IIS Service
    Write-Log “Checking IIS (w3svc) service status…”
    $IISService = Get-Service w3svc

    if (IISService\.Status \-ne “Running”\) \{
    Write\-Log “IIS service \(w3svc\) is not running\. Attempting to start\.\.\.”
    Start\-Service w3svc
    if \(?) { # Check if the start operation was successful
    Write-Log “IIS service started successfully.”
    } else {
    Write-Log “Error starting IIS service.”
    }
    } else {
    Write-Log “IIS service is already running.”
    }

    # Get and log the new version
    $NewVersion = Get-RDWebClientVersion
    Write-Log “New RD Web Client version: $NewVersion”

    # Optional: Reboot if needed (use with extreme caution in production)
    # $RebootRequired = $false # Set to $true if you want to reboot (after testing)
    # if ($RebootRequired) {
    # Write-Log “Rebooting server…”
    # Restart-Computer -Force
    # }

    Write-Log “RD Web Client update process finished.”

    } catch {
    Write-Log “Error: $($_.Exception.Message)”
    # Optional: Send

Leave a Reply

Your email address will not be published. Required fields are marked *