Lorsqu’on déploie le client HTML5 de Bureau à distance, l’erreur « RD Web Access does not appear to be installed » peut bloquer la mise en production : ce guide exhaustif détaille chaque cause possible, les vérifications à effectuer et les commandes PowerShell pour rétablir un environnement RDS sain.
Erreur : « RD Web Access does not appear to be installed » lors de Publish‑RDWebClientPackage
Vue d’ensemble du problème
Sur un hôte Windows Server 2019, exécuter :
Publish‑RDWebClientPackage ‑Type Production ‑Latest
affiche la séquence :
WARNING: The requested Remote Desktop web client is already installed.
ERROR : RD Web Access does not appear to be installed on the system.
Pourtant :
- Le module
RDWebClientManagementest chargé (Get‑Command -Module RDWebClientManagement). - Le Gestionnaire de serveur signale que les rôles RDS sont installés.
Pourquoi cette incohérence ?
Publish‑RDWebClientPackage procède à six contrôles préalables :
- Présence de la fonctionnalité
RDS-Web-Access. - Existence du site IIS
Default Web Site\RDWeb. - Associations de certificat valides (HTTPS : TLS 1.0+).
- Version minimale du module
RDWebClientManagement(≥ 1.0.5). - Application
/webclientnon verrouillée par un processus IIS. - Appartenance de la machine au déploiement RDS courant.
Si l’un de ces tests échoue, la cmdlet renvoie l’erreur ci‑dessus, même si l’interface graphique RDS semble correcte.
Tableau des causes probables
| Cause possible | Explication rapide |
|---|---|
| Rôle RD Web Access absent ou incomplet | Le package vérifie la fonctionnalité RDS-Web-Access et le site IIS « RDWeb ». |
| Mauvais serveur cible | La cmdlet doit être exécutée sur le serveur qui héberge RD Web Access. |
| Installation RDS partielle / corrompue | La console RDS peut répertorier un rôle supprimé manuellement ; les binaires IIS ne sont plus présents. |
| Version obsolète du module | Avant la version 1.0.5, la détection de RD Web Access est lacunaire. |
| Bindings IIS incorrects | Certificat périmé, port 443 absent ou application dissociée. |
Étapes de résolution détaillées
1. Vérifier / (ré)installer la fonctionnalité RD Web Access
# Contrôle
Get-WindowsFeature RDS-Web-Access
# Installation si nécessaire
Install-WindowsFeature RDS-Web-Access –IncludeManagementTools –Restart
Après redémarrage, ouvrez IIS : le site RDWeb doit apparaître sous Default Web Site. Absence ? La fonctionnalité ne s’est pas correctement inscrite ; réexécutez Install-WindowsFeature et surveillez le journal CBS.log.
2. Exécuter les cmdlets sur le bon serveur
Dans un déploiement à plusieurs hôtes (broker, gateway, web access), la confusion est fréquente. Ouvrez PowerShell en mode administrateur sur le serveur où IIS héberge RDWeb :
Get-Website | Where-Object { $_.Name -like "*RDWeb*" }
Si la commande renvoie un résultat, vous êtes sur le bon hôte ; sinon, basculez vers l’autre nœud.
3. Mettre à jour ou réinstaller le module RDWebClientManagement
Find-Module RDWebClientManagement | Select-Object Version,Repository
Uninstall-Module RDWebClientManagement -AllVersions -Force
Install-Module RDWebClientManagement -RequiredVersion 1.0.5 # ou la plus récente
Import-Module RDWebClientManagement
Assurez‑vous que le chargement ne déclenche pas d’erreur ; le module doit figurer dans $env:PSModulePath.
4. Contrôler la cohérence du déploiement RDS
# Liste complète
Get-RDServer | Format-Table Server,Roles
# URL et bindings Web Access
Get-RDWebAccessConfiguration
Un serveur fantôme apparaît ? Supprimez‑le :
Remove-RDServer -Server "SRV-ANCIEN" -Role RDS-Web-Access
Répétez l’opération pour chaque rôle absent physiquement.
5. Reconstruire le site IIS RDWeb
Si les fichiers physiques sont corrompus (extensions .aspx manquantes, pool d’applications inopérant), réinstallez :
# Sauvegarde éventuelle du certificat
Export-PfxCertificate -Cert "Cert:\LocalMachine\My\" -FilePath C:\backup\rdweb.pfx -Password (Read-Host -AsSecureString "Mot de passe")
# Désinstallation + réinstallation
Remove-WindowsFeature RDS-Web-Access
Install-WindowsFeature RDS-Web-Access –IncludeManagementTools
# Réimport du certificat
Import-PfxCertificate -FilePath C:\backup\rdweb.pfx -CertStoreLocation Cert:\LocalMachine\My -Password (Read-Host -AsSecureString "Mot de passe")
Vérifiez ensuite :
Test-NetConnection -ComputerName localhost -Port 443
6. Activer TLS 1.2 avant la publication
Par défaut, Windows Server 2019 active TLS 1.0/1.1/1.2. Toutefois, si TLS 1.2 a été désactivé via des GPO « hardening », la publication peut échouer car les cmdlets contactent les services WU via HTTPS.
# Pour forcer TLS1.2 dans .NET 4+
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Ou modifiez la ruche :
# Activation permanente côté OS
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -PropertyType "DWord" -Force
7. Nettoyer d’anciens packages HTML5
Une publication antérieure incomplète peut bloquer la nouvelle :
Get-RDWebClientPackage | Format-Table PackageType,Version,InstallDate
Uninstall-RDWebClientPackage -Type Production -Version "1.0.34.8"
Puis relancez :
Publish-RDWebClientPackage -Type Production -Latest -Verbose
8. Vérifier les journaux pour diagnostiquer finement
| Chemin | Intérêt |
|---|---|
Event Viewer > Applications and Services Logs > Microsoft > Windows > TerminalServices-RemoteConnectionManager | Échecs de rôle RDS lors de l’initialisation. |
IISLogs\W3SVC1 | Détails HTTP/HTTPS, erreurs 404 sur /RDWeb. |
%SystemRoot%\Logs\RDWebClientManagement | Trace fine des cmdlets Publish‑RDWebClientPackage. |
9. Cas des fermes à équilibrage de charge
Dans un scénario NLB ou avec un équilibreur externe :
- Installez RD Web Access sur chaque nœud.
- Publiez le client HTML5 sur un nœud, puis répliquez le répertoire
%SystemDrive%\inetpub\wwwroot\RDWeb\webclientsur les autres (robusité). - Veillez à ce que le certificat wildcard ou SAN couvre l’adresse VIP, sinon la page blanche « Cannot fetch client configuration » s’affiche.
10. Checklist finale avant re‑mise en production
- Fonctionnalité
RDS-Web-Access: ✔ - Site IIS
RDWebaccessible en HTTPS et renvoyant le contenu par défaut : ✔ - Module
RDWebClientManagementà jour : ✔ - Serveur exécutant la cmdlet ≡ serveur hébergeant RD Web Access : ✔
- Aucune version obsolète du client HTML5 installée : ✔
- TLS 1.2 activé et certificat non expiré : ✔
Bonnes pratiques pour un environnement RD Web Access robuste
Sécurisation HTTPS et HSTS
Activez HSTS et redirigez HTTP → HTTPS dans le gestionnaire IIS pour éviter les requêtes non chiffrées. Pensez à renouveler les certificats (ACME, gestion automatisée) avant la date d’expiration ; le client HTML5 refusera les connexions si le certificat n’est plus valide.
Surveillance et alertes
Configurez un journal unique (Microsoft‑Windows‑TerminalServices‑RemoteConnectionManager/Operational) et des alertes SCOM ou scripts PowerShell (Register-ScheduledJob) envoyant un e‑mail dès qu’une erreur 500 ou 503 apparaît.
Gestion des mises à jour
Le client HTML5 évolue régulièrement ; la cmdlet Publish‑RDWebClientPackage -Latest récupère la version publiée par Microsoft. Pour éviter une panne intempestive :
- Testez toujours sur une collection de validation avant de pousser en production.
- Documentez la version précédente pour un éventuel rollback :
Publish-RDWebClientPackage -Type Test -Version "1.0.34.8" -Verbose
Automatisation DevOps
Intégrez vos scripts dans une pipeline (Azure DevOps/YAML ou GitHub Actions). Exemple minimal :
steps:
- powershell: |
Install-Module RDWebClientManagement -Force
Publish-RDWebClientPackage -Type Production -Latest -Verbose
displayName: 'Deploy HTML5 RDWeb client'
Versionnez le fichier RDWebClientSettings.json pour reproduire la configuration (UI brandée, langues désactivées, etc.).
Sauvegarde quotidienne du site RDWeb
$backupDir = "D:\Backup\RDWeb_$(Get-Date -Format 'yyyyMMdd')"
Copy-Item "C:\inetpub\wwwroot\RDWeb" -Destination $backupDir -Recurse -Force
Stockez au moins sept versions ; un simple robocopy /MIR restaure le site en cas de corruption.
Foire aux questions (FAQ)
Le rôle RD Web Access est installé mais le site IIS RDWeb n’existe pas. Pourquoi ?
Bien que rare, l’installation peut échouer si IIS a été désinstallé puis réinstallé sans supprimer le rôle RDS. Dans ce cas, la fonctionnalité RDS-Web-Access est marquée installée mais les scripts post‑install n’ont pas généré le site. Réinstallez la fonctionnalité comme indiqué plus haut.
La cmdlet Publish‑RDWebClientPackage reste bloquée sur « Checking RDWeb ».
Cela se produit souvent si le pool d’applications RDWebAccessAppPool est arrêté ou si un proxy sortant bloque l’appel HTTP à Windows Update. Redémarrez le pool et vérifiez netsh winhttp show proxy.
Puis‑je installer RD Web Access sur un serveur ne faisant pas partie du domaine ?
Non. Le rôle exige l’adhésion au domaine Active Directory pour fonctionner avec le broker et récupérer les collections.
Conclusion
En résumé, l’erreur « RD Web Access does not appear to be installed » est presque toujours liée à un décalage entre la réalité IIS/Windows Feature et l’état enregistré dans la base WMI de RDS. En suivant pas à pas les vérifications de ce guide—installation de la fonctionnalité, intégrité du site IIS, cohérence du déploiement RDS et mise à jour des modules PowerShell—vous éliminerez les causes racines et redonnerez à vos utilisateurs un accès web HTML5 fiable à leurs bureaux et applications distants.

