Impossible de désinstaller Office : corriger SaRACmd.exe « expired » (code 11) et réussir une désinstallation silencieuse

SaRACmd.exe affiche « expired » (code 11) et bloque la désinstallation silencieuse de Microsoft Office ? Voici un guide complet pour mettre à jour l’outil, lancer OfficeScrub en mode unattended, automatiser à distance et fiabiliser le processus, avec alternatives et check‑lists.

Sommaire

Vue d’ensemble de la question

Lorsqu’on lance le Microsoft Support and Recovery Assistant en ligne de commande (SaRACmd.exe) pour désinstaller Office, l’outil peut retourner le code d’erreur 11 – version expirée. Le besoin est double :

  • Obtenir et déployer une version valide de SaRACmd pour éliminer l’erreur 11.
  • Exécuter la désinstallation silencieuse (unattended) sur des postes locaux et distants, de façon idempotente et traçable.

Ce que signifie vraiment le code 11 « expired »

Le code 11 indique uniquement que le binaire est trop ancien : SaRACmd.exe a atteint sa date d’expiration et doit être remplacé par la build courante. Il ne s’agit pas d’un problème d’Office ni d’une erreur de scénario ; aucune autre investigation n’est nécessaire tant que l’exécutable n’a pas été mis à jour.

Réponse rapide (mode opératoire condensé)

  1. Mettre à jour SaRACmd en téléchargeant la version courante de l’édition « Command Line ». Conservez le même répertoire d’exécution pour éviter l’utilisation de DLL obsolètes mises en cache.
  2. Lancer le scénario prêt à l’emploi OfficeScrub en silencieux :
    SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet
    • -AcceptEula supprime toute invite.
    • -Quiet (ou -Silent) désactive l’interface graphique.
  3. Automatiser via un script PowerShell (unattended) côté local, distant, MDT/SCCM/Intune, etc. (exemples plus bas).

Réponses & solutions proposées (tableau récapitulatif)

ÉtapeActionDétails pratiques
A. Mettre à jour SaRACmd.exeTélécharger et déployer la dernière édition « Command Line » (SaRA_CommandLine.exe), puis remplacer SaRACmd.exe existant.• L’erreur 11 disparaît après mise à jour.
• Conserver le même dossier d’exécution pour éviter d’anciennes DLL en cache.
B. Scénario « Uninstall Office »Lancer :
SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet
-AcceptEula évite toute interaction.
-Quiet/-Silent : aucune fenêtre.
C. AutomatisationScript PowerShell pour télécharger/décompresser/ exécuter SaRA, localement ou à distance.• Idempotent : relançable sans risque.
• Compatible MDT/SCCM/Intune et exécution distante.
D. Alternatives si SaRA échoueSetupProd_OffScrub.exe (GUI, exécutable avec /quiet).
• Scripts OffScrub*.vbs (Office 2007/2010/2013…)
Utile si SaRA est bloqué par la politique de sécurité, en présence de co‑installations ou d’anciennes suites MSI.

Pré‑requis et bonnes pratiques

  • Droits d’exécution : lancer dans une console élevée (administrateur) pour éviter des échecs de suppression de services/fichiers.
  • Édition/architecture : peu importe que l’Office original soit 32/64 bits ; OfficeScrubScenario gère les variantes Click‑to‑Run.
  • Réseau et proxy : si votre environnement passe par un proxy, utilisez les paramètres -Proxy, -ProxyUser et -ProxyPassword (voir plus bas).
  • Traçabilité : connaître les emplacements de logs et les codes de retour (section dédiée).
  • Fenêtre de maintenance : planifier le créneau ; la suppression peut interrompre des applications Office en cours.

Mise à jour de SaRACmd.exe (éliminer le code 11)

Remplacez l’ancienne copie de SaRACmd.exe par la version la plus récente de l’édition « Command Line ». Pour éviter les DLL orphelines du précédent build, réutilisez le même répertoire lors de la mise à jour (copie “par‑dessus”). Ensuite, vérifiez le binaire :

SaRACmd.exe -Version

Si la version s’affiche sans erreur et que -S est reconnu, l’outil est prêt.

Désinstaller Office en mode silencieux (scénario OfficeScrub)

Le scénario OfficeScrubScenario supprime de manière automatisée les installations Microsoft Office (Click‑to‑Run), et prend en charge les artefacts usuels (fichiers, services, composants partagés). Commande type :

SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet

Variantes :

  • -Silent : équivalent silencieux selon les versions.
  • -Proxy http(s)://proxy:port -ProxyUser <utilisateur> -ProxyPassword <motdepasse> : si nécessaire dans votre réseau.

Automatiser sur un poste local (script robuste)

Exemple de script PowerShell idempotent : il (1) télécharge l’édition ligne de commande, (2) la décompresse, (3) exécute OfficeScrub en silencieux, (4) remonte le code de sortie.

# Exécution en console admin recommandée
# Paramètres optionnels de proxy : -ProxyUri 'http://proxy:8080' -ProxyCredential (Get-Credential)
param(
  [string]$WorkDir = "$env:TEMP\SaRA-CL",
  [string]$ProxyUri,
  [pscredential]$ProxyCredential
)

function Invoke-DownloadSaRA {
param([string]$OutDir, [string]$ProxyUri, [pscredential]$ProxyCredential)

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

$zip = Join-Path $OutDir 'SaRA.zip'

$wc = New-Object System.Net.WebClient
if ($ProxyUri) {
$wc.Proxy = New-Object System.Net.WebProxy($ProxyUri,$true)
if ($ProxyCredential) { $wc.Proxy.Credentials = $ProxyCredential.GetNetworkCredential() }
}

# Télécharger l'édition Command Line depuis la source Microsoft (URL interne à votre référentiel ou portail d'entreprise)

# 

throw "Renseignez la source de téléchargement approuvée (dépôt interne, partage sécurisé, etc.)."

# Exemple d'extraction si vous disposez déjà du fichier ZIP :

# Expand-Archive -Path $zip -DestinationPath $OutDir -Force

}

function Invoke-OfficeScrub {
param([string]$SaRAFolder)

$sara = Get-ChildItem -Path $SaRAFolder -Recurse -Filter 'SaRACmd.exe' -ErrorAction SilentlyContinue | Select-Object -First 1
if (-not $sara) { throw "SaRACmd.exe introuvable dans $SaRAFolder" }

$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.FileName  = $sara.FullName
$psi.Arguments = '-S OfficeScrubScenario -AcceptEula -Quiet'
$psi.UseShellExecute = $false
$psi.RedirectStandardOutput = $true
$psi.RedirectStandardError  = $true

$p = [System.Diagnostics.Process]::Start($psi)
$p.WaitForExit()

Write-Host $p.StandardOutput.ReadToEnd()
Write-Host $p.StandardError.ReadToEnd()

return $p.ExitCode
}

# -- Exécution --

# 1) Téléchargement & décompression (personnaliser la source interne)

# Invoke-DownloadSaRA -OutDir $WorkDir -ProxyUri $ProxyUri -ProxyCredential $ProxyCredential

# 2) Supposons que le dossier $WorkDir contient déjà SaRACmd.exe (copié par vos soins)

$code = Invoke-OfficeScrub -SaRAFolder $WorkDir
Write-Host "Code de sortie SaRA : $code"
exit $code 

Astuce : dans un environnement fermé, stockez l’archive SaRA dans un dépôt interne (file share, Artifactory, etc.), signez vos scripts et poussez‑les via votre outil de gestion (MDT/SCCM/Intune).

Automatiser sur des postes distants

Plusieurs approches sont possibles ; ci‑dessous un canevas générique avec PowerShell Remoting (WinRM activé).

$computers = @('PC-001','PC-002','PC-003')

$scriptBlock = {
param($PkgShare)

$work = "$env:TEMP\SaRA-CL"
if (-not (Test-Path $work)) { New-Item -ItemType Directory -Force -Path $work | Out-Null }
Copy-Item -Path (Join-Path $PkgShare '*') -Destination $work -Recurse -Force

$exe = Get-ChildItem -Path $work -Filter 'SaRACmd.exe' -Recurse | Select-Object -First 1
if (-not $exe) { throw "SaRACmd.exe introuvable" }

$args = '-S OfficeScrubScenario -AcceptEula -Quiet'
$p = Start-Process -FilePath $exe.FullName -ArgumentList $args -PassThru -WindowStyle Hidden -Wait
[PSCustomObject]@{ ComputerName = $env:COMPUTERNAME; ExitCode = $p.ExitCode }
}

$pkgShare = '\Serveur\Logiciels\SaRA-CL'  # dossier contenant SaRACmd.exe récent
Invoke-Command -ComputerName $computers -ScriptBlock $scriptBlock -ArgumentList $pkgShare | Format-Table 

Si vous préférez, un outil d’exécution à distance peut relayer la même commande, ou vous pouvez intégrer le package dans une tâche MDT/SCCM/Intune.

Journalisation, suivi et codes de retour

  • Où trouver les logs ? %localappdata%\Temp\SaRA\Logs\*.log. C’est le premier réflexe en cas d’échec.
  • Vérifier la version sans exécuter de scénario : SaRACmd.exe -Version.
  • Codes de retour connus : CodeSignificationAction 0SuccèsAucune 11Version expiréeMettre à jour SaRACmd AutreÉchec génériqueLire les logs SaRA et vérifier les droits

Vérifier que la désinstallation a réussi

Contrôles pratiques après exécution :

  • Applications : Office n’apparaît plus dans Applications & fonctionnalités / Programmes et fonctionnalités.
  • Services : le service Microsoft Office Click‑to‑Run n’est plus présent/actif.
  • Dossiers : absence de C:\Program Files\Common Files\microsoft shared\ClickToRun (ou équivalent 32 bits).
  • Processus : aucun OfficeClickToRun.exe en cours.

Exemple de détection PowerShell pour un outil de gestion (renvoie 0 si Office est absent) :

$apps = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
                        HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* `
        -ErrorAction SilentlyContinue |
        Where-Object { $_.DisplayName -match 'Microsoft Office' -or $_.DisplayName -match 'Microsoft 365' }

if ($apps) { Write-Host 'Office détecté'; exit 1 } else { Write-Host 'Office absent'; exit 0 } 

Gestion du proxy et des environnements restreints

Si une sortie Internet via proxy est requise, ajoutez les paramètres -Proxy, -ProxyUser, -ProxyPassword à la ligne de commande :

SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet -Proxy http(s)://proxy:port -ProxyUser DOMAINE\user -ProxyPassword ******

Bonnes pratiques : évitez de stocker un mot de passe en clair. Utilisez des Credentials sécurisés dans vos scripts (coffre/secret, variables protégées, etc.).

Intégration dans MDT / SCCM / Intune

MDT (Microsoft Deployment Toolkit)

  1. Créez une Application « SaRA OfficeScrub » contenant SaRACmd.exe récent.
  2. Commande : SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet
  3. Positionnez‑la dans la séquence de tâches (avant/ après installation d’une nouvelle suite Office).

SCCM / ConfigMgr

  1. Créez une Application ou Package avec les mêmes fichiers.
  2. Programme : SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet
  3. Détection : script PowerShell (voir plus haut) retournant 0 si Office n’est plus présent.
  4. Déployez en Required pendant une fenêtre de maintenance.

Intune (Win32)

  1. Emballez les fichiers dans un .intunewin.
  2. Commande d’installation : SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet
  3. Règle de détection : script PowerShell identique à celui de SCCM.

Alternatives si SaRA échoue

  1. SetupProd_OffScrub.exe : outil graphique officiel qui supporte un /quiet pour automatiser. Intéressant quand SaRACmd.exe est bloqué par la politique ou rencontre un conflit.
  2. Scripts OffScrub*.vbs : par exemple OffScrub10.vbs (Office 2010), OffScrub07.vbs (Office 2007). Ces scripts MSI sont adaptés aux anciennes suites et nettoient des résidus de registre non couverts par SaRA dans ces versions.

Remarque : dans des environnements mixtes (Click‑to‑Run + MSI), vous pouvez chaîner : d’abord OfficeScrub (SaRA) puis l’OffScrub correspondant à l’ancienne version.

Pièges courants et conseils d’expert

  • Applications Office ouvertes : fermez Word/Excel/Outlook avant de lancer le scénario pour accélérer l’opération.
  • Multilingue : en présence de packs de langue multiples, la durée peut augmenter ; le processus reste idempotent.
  • Visio/Project : si ces produits existent en MSI indépendants, utilisez l’OffScrub adéquat après OfficeScrub.
  • Arrêt des services : en cas d’échec, stoppez ClickToRunSvc puis relancez le scénario.
  • Restes de profils : des données utilisateur (templates, dictionnaires, caches) ne sont pas toujours supprimées ; prévoyez un nettoyage complémentaire si nécessaire.

Checklist opérationnelle (copiable dans un runbook)

  1. Télécharger la version courante de SaRACmd.exe (édition « Command Line »).
  2. Copier/remplacer dans le même dossier que l’ancienne version et vérifier avec -Version.
  3. Exécuter : SaRACmd.exe -S OfficeScrubScenario -AcceptEula -Quiet.
  4. Vérifier les logs sous %localappdata%\Temp\SaRA\Logs et le code de sortie.
  5. Contrôler l’absence d’Office (service, dossiers, entrées « Programmes »).
  6. Automatiser (MDT/SCCM/Intune/PSRemoting) et ajouter une règle de détection.

Cas réel : résultat obtenu

Dans le cas étudié, l’administrateur a mis à jour SaRACmd.exe puis modifié un script PowerShell pour appeler explicitement -S OfficeScrubScenario -AcceptEula -Quiet. La désinstallation silencieuse s’exécute désormais sur l’ensemble du parc visé, sans intervention utilisateur et avec une traçabilité centralisée via les journaux SaRA.

Annexes utiles

  • Vérifier la version SaRA sans lancer de scénario : SaRACmd.exe -Version.
  • Emplacement des logs : %localappdata%\Temp\SaRA\Logs\*.log.
  • Paramètres proxy : -Proxy, -ProxyUser, -ProxyPassword.
  • Anciennes suites : privilégier OffScrub10.vbs / OffScrub07.vbs pour éviter des résidus non gérés par SaRA.

Conclusion

Le code 11 « expired » n’est ni mystérieux ni bloquant : il signale simplement que votre binaire SaRACmd est périmé. En le remplaçant par la version courante, puis en lançant OfficeScrubScenario en mode silencieux, vous obtenez une désinstallation fiable, répétable et industrialisable. Pour les cas limites (anciennes suites MSI, co‑installations, contraintes de sécurité), les outils SetupProd_OffScrub.exe et OffScrub*.vbs constituent d’excellentes roues de secours. En combinant mise à jour + scénario OfficeScrub, vous disposez d’une réponse complète et durable au problème rencontré.

Sommaire