Closed lackovic closed 4 years ago
That's a tough question, because there isn't any part besides the actual uninstall which would wait for something. The script kills the running OneDrive processes, checks OS bitness, launches OneDrive's own uninstall command, waits for it to finish, restarts explorer to free a few directory locks previously held by the OneDrive extension and finally deletes said directories and a few related registry keys.
Initially, I've thought your problem may stem from the processes not being killed in time, but now I've tried it even without killing them beforehand and the uninstallation passed anyway.
1) What exact OS version do you use? (Run command systeminfo
and paste lines starting with "OS Name" and "OS Version")
2) What kind of account to you use? Microsoft / Local / Active Directory?
@lackovic check this one from me. May be it will work. https://github.com/farag2/Windows-10-Setup-Script/blob/0f0aa46d95b6d447237f2ef3abe67449cb5c2643/Win%2010.ps1#L570 Are you signed in OneDrive account whrn trying to uninstall it?
Happened again right now.
I get pass through it by pressing Ctrl
+C
and re-running the script.
- What exact OS version do you use? (Run command
systeminfo
and paste lines starting with "OS Name" and "OS Version")
OS Name: Microsoft Windows 10 Pro
OS Version: 10.0.18363 N/A Build 18363
- What kind of account to you use? Microsoft / Local / Active Directory?
Local.
Are you signed in OneDrive account whrn trying to uninstall it?
I am not signed in.
@lackovic: Put Set-PSDebug -Trace 2
to the beginning of UninstallOneDrive
function in Win10.psm1 and Set-PSDebug -Trace 0
to the end of the same function. You should end up with something like this:
Function UninstallOneDrive {
Write-Output "Uninstalling OneDrive..."
Set-PSDebug -Trace 2
Stop-Process -Name "OneDrive" -Force -ErrorAction SilentlyContinue
Start-Sleep -s 2
$onedrive = "$env:SYSTEMROOT\SysWOW64\OneDriveSetup.exe"
If (!(Test-Path $onedrive)) {
$onedrive = "$env:SYSTEMROOT\System32\OneDriveSetup.exe"
}
Start-Process $onedrive "/uninstall" -NoNewWindow -Wait
Start-Sleep -s 2
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
Start-Sleep -s 2
If ((Get-ChildItem -Path "$env:USERPROFILE\OneDrive" -ErrorAction SilentlyContinue | Measure-Object).Count -eq 0) {
Remove-Item -Path "$env:USERPROFILE\OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
}
Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "$env:PROGRAMDATA\Microsoft OneDrive" -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "$env:SYSTEMDRIVE\OneDriveTemp" -Force -Recurse -ErrorAction SilentlyContinue
If (!(Test-Path "HKCR:")) {
New-PSDrive -Name "HKCR" -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" | Out-Null
}
Remove-Item -Path "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" -Recurse -ErrorAction SilentlyContinue
Set-PSDebug -Trace 0
}
It'll give you more verbosity on what's happening inside the function when you run it. My money is that it's going to get stuck on
DEBUG: 10+ >>>> Start-Process $onedrive "/uninstall" -NoNewWindow -Wait
in which case there has to be something specific to you setup(s) what causes some handles to be locked. Then possibly hitting Ctrl+C will interrupt only the script and keep the OneDrive uninstallation process running and the new run simply skips the part which caused the lockup. That's just a guess, not backed by any evidence.
Sounds silly but this happens to me if I unconsciously click the shell window and it thinks I want to select something. It blocks the output and thus the process. Try e.g. with dir /s c:
"Uninstalling OneDrive" hangs for a long time (waited several minutes) on Windows 10 version 1909, with release 3.8.
At first I thought it was an isolated problem with one machine but then I saw it on different machines, with Windows 10 freshly installed.
What can I provide next time I stumble into this problem to help us troubleshoot this?