rodneyviana / ODSyncService

OneDrive service/DLL for Sync State
MIT License
93 stars 26 forks source link

WRong StatusString with FileOnDemand enabled in onedrive #3

Closed srzelic-zz closed 4 years ago

srzelic-zz commented 6 years ago

We got wrong StatusString with FileOnDemand enabled in onedrive. When we disable that option it works as expected.

ChinookSnowdevil commented 6 years ago

Same Problem Status with FileOnDemand is Show as "NotInstalled" but OneDrive is working

rodgerzeisler commented 5 years ago

I am having the same issue when using the File-on-Demand feature. The StatusString is not reporting the correct status when FOD is enabled. When I disabled, the StatusString that is reported is correct.

robinmalik commented 5 years ago

I came across this problem also, and noticed some odd results when troubleshooting the issue. Running Windows 10, 1809, Build 17763.253.

Results with 'Files on Demand' enabled for both a OneDrive Personal install, and OneDrive for Business install that is synchronising my own OneDrive and a shared SharePoint library. As we can see, only the SharePoint library shows as UpToDate.

StatusString : UpToDate
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : NotInstalled
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : NotInstalled
LocalPath    : C:\Users\Me\OneDrive
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Personal

Unticked files on demand for my PERSONAL OneDrive installation and checked the result again:

StatusString : UpToDate
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : SharedSync
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : Syncing
LocalPath    : C:\Users\Me\OneDrive
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Personal

What I find strange is that files on demand was only unticked for my personal OneDrive, and yet my business OneDrive had now changed to 'SharedSync'.

I then put the following into a 5 second loop: do { Get-ODStatus ; start-sleep -seconds 5 } until($x -eq 1)

After a minute or so, I got a more expected result:

StatusString : UpToDate
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : NotInstalled
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : UpToDate
LocalPath    : C:\Users\Me\OneDrive
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Personal

... so the business OneDrive showing as NotInstalled when files on demand is ticked.

I am hoping to prevent users from logging off whilst a sync is in progress, but files on demand is an essential part of the deployment so this issue is quite important if we're to use the .dll.

reberrj commented 5 years ago

Is there a resolution to the Files On Demand issue with this script? I would really like to use this, but need to leave FoD on for the users while we run this.

printzm commented 5 years ago

I'd love to know what the resolution is too, as I want to use this, but we're using FOD as well.

toffitomek commented 5 years ago

Hi, same here, Files On Demand are used and we would love to hear how this tool deals with them...

yatesa commented 5 years ago

Yep I'm too now getting this StatusString NotInstalled. Is this project abandoned, appears to be no update for two years?

fuzzysb commented 5 years ago

Not working for latest OD Client with Files on Demand. we need a method that works. any progress?

yatesa commented 5 years ago

Looking at the code it looks to me that it check for a particular icon status and if none match from the list then it returns NotInstalled. Well looking at the reg keys for FileSyncShell64.dll there are four other status types that exist but are not checked against: -

{1BF42E4C-4AF4-4CFD-A1A0-CF2960B8F63E} - UpToDateOverlay {7AFDFDDB-F914-11E4-8377-6C3BE50D980C} - ErrorOverlay {82CA8DE3-01AD-4CEA-9D75-BE4C51810A9E} - SyncingOverlay {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C} - UpToDateUnpinnedOverlay

Also in the ShellconOverlayIdentifiers reg key there are 7 for OneDrive, the code for this dll only checks for the first 6, the seventh one is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.

So my guess is that having Files On Demand enabled is making use of this new status, but the dll doesn't match against it, so it returns NotInstalled instead.

If had a clue how to update the code and recompile a new dll I would have a go. Anyone else know how to do it?

rodneyviana commented 5 years ago

Hi Yatesa,

I have a version that can test a particular overlay: https://github.com/rodneyviana/ODSyncService/tree/master/DebugAndTraces

I ran this test on an On-Demand environment and no overlay seems to match. I am trying to get it figured out, but these are the GUIDs I tested to no avail:

Get-ODStatus -clsid '{BBACC218-34EA-4666-9D7A-C78F2274A524}' # OneDrive1 Get-ODStatus -clsid '{5AB7172C-9C11-405C-8DD5-AF20F3606282}' # OneDrive2 Get-ODStatus -clsid '{A78ED123-AB77-406B-9962-2A5D9D2F7F30}' # OneDrive3 Get-ODStatus -clsid '{F241C880-6982-4CE5-8CF7-7085BA96DA5A}' # OneDrive4 Get-ODStatus -clsid '{A0396A93-DC06-4AEF-BEE9-95FFCCAEF20E}' # OneDrive5 Get-ODStatus -clsid '{9AA2F32D-362A-42D9-9328-24A483E2CCC3}' # OneDrive6 Get-ODStatus -clsid '{C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}' # OneDrive7 Get-ODStatus -clsid '{8BA85C75-763B-4103-94EB-9470F12FE0F7}' # SkyDrivePro1 (ErrorConflict) Get-ODStatus -clsid '{CD55129A-B1A1-438E-A425-CEBC7DC684EE}' # SkyDrivePro2 (SyncInProgress) Get-ODStatus -clsid '{E768CD3B-BDDC-436D-9C13-E1B39CA257B1}' # SkyDrivePro3 (InSync) Get-ODStatus -clsid '{D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}' # EnhancedStorageShell Get-ODStatus -clsid '{4E77131D-3629-431c-9818-C5679DC83E81}' # Offline Files

I got this by running this fromj PowerShell: $regs = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers" $regs | % { Write-Host "Get-ODStatus -clsid '$($.GetValue(''))' `# $($.PSChildName)" }

As soon as I figure out, I will let you know.

Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10


From: yatesa notifications@github.com Sent: Wednesday, May 15, 2019 3:06:08 AM To: rodneyviana/ODSyncService Cc: Subscribed Subject: Re: [rodneyviana/ODSyncService] WRong StatusString with FileOnDemand enabled in onedrive (#3)

Looking at the code it looks to me that it check for a particular icon status and if none match from the list then it returns NotInstalled. Well looking at the reg keys for FileSyncShell64.dll there are four other status types that exist but are not checked against: -

{1BF42E4C-4AF4-4CFD-A1A0-CF2960B8F63E} - UpToDateOverlay {7AFDFDDB-F914-11E4-8377-6C3BE50D980C} - ErrorOverlay {82CA8DE3-01AD-4CEA-9D75-BE4C51810A9E} - SyncingOverlay {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C} - UpToDateUnpinnedOverlay

Also in the ShellconOverlayIdentifiers reg key there are 7 for OneDrive, the code for this dll only checks for the first 6, the seventh one is {C5FF006E-2AE9-408C-B85B-2DFDD5449D9C}.

So my guess is that having Files On Demand enabled is making use of this new status, but the dll doesn't match against it, so it returns NotInstalled instead.

If had a clue how to update the code and recompile a new dll I would have a go. Anyone else know how to do it?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana%2FODSyncService%2Fissues%2F3%3Femail_source%3Dnotifications%26email_token%3DAGT5MAXJYQNZE2LXQCIX653PVO77BA5CNFSM4EUTRUX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVN32VQ%23issuecomment-492551510&data=02%7C01%7C%7C876e4e4485004394048d08d6d90c303a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636935043697496231&sdata=LFemn4IaHZAi02EvbO%2BiRenCG7IBTHHQGFd2PrOMYtI%3D&reserved=0, or mute the threadhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGT5MAXTWM6RRFZDO5XC2NTPVO77BANCNFSM4EUTRUXQ&data=02%7C01%7C%7C876e4e4485004394048d08d6d90c303a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636935043697506240&sdata=V42USUAJIsRr9kJVrcV0%2FTpZOlkXxX5RU9TKTonyFJs%3D&reserved=0.

rodneyviana commented 5 years ago

I put together another version here: https://github.com/rodneyviana/ODSyncService/tree/master/Binaries/PowerShell

yatesa commented 5 years ago

Hi there, just tried the new dll. I now get: - StatusString : OnDemandOrUnknown

I'm guessing you weren't able to specifically identify the OnDemand status then because even if I close OneDrive it still returns OnDemandOrUnknown.

Unfortunately that would not work for us either as we check the status to determine if OneDrive is active (and connected) before automatically adding a sync for Sharepoint site. If we continued on the basis that the status was OnDemandOrUnknown then that would fail if OneDrive wasn't actually active and connected.

I appreciate you trying to fix and understand you are completely limited by what the operating system/onedrive returns to you without a proper API. I was hoping that one of the other overlays would indicate the required status, but I guess not. Hopefully MS will sort out a proper API soon!

rodneyviana commented 5 years ago

I am working on the OnDemand workaround and will update the dll soon. It is already working with the version you have but it can be slow. I am on a client this week and will update it soon: either with a more efficient version or publishing the workaround

Get Outlook for iOShttps://aka.ms/o0ukef


From: yatesa notifications@github.com Sent: Tuesday, May 21, 2019 12:13:37 PM To: rodneyviana/ODSyncService Cc: Rodney Viana; Comment Subject: Re: [rodneyviana/ODSyncService] WRong StatusString with FileOnDemand enabled in onedrive (#3)

Hi there, just tried the new dll. I now get: - StatusString : OnDemandOrUnknown

I'm guessing you weren't able to specifically identify the OnDemand status then because even if I close OneDrive it still returns OnDemandOrUnknown.

Unfortunately that would not work for us either as we check the status to determine if OneDrive is active (and connected) before automatically adding a sync for Sharepoint site. If we continued on the basis that the status was OnDemandOrUnknown then that would fail if OneDrive wasn't actually active and connected.

I appreciate you trying to fix and understand you are completely limited by what the operating system/onedrive returns to you without a proper API. I was hoping that one of the other overlays would indicate the required status, but I guess not. Hopefully MS will sort out a proper API soon!

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana%2FODSyncService%2Fissues%2F3%3Femail_source%3Dnotifications%26email_token%3DAGT5MAWVJLPWN6D6GZTQ4B3PWQNTDA5CNFSM4EUTRUX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODV4NIMI%23issuecomment-494457905&data=02%7C01%7C%7Cf42a80c38781418a246908d6de074917%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636940520197591282&sdata=EhdVM6RLX4MlQt4hbeV%2By1gDwtyVPJ2kRgIaVWChlco%3D&reserved=0, or mute the threadhttps://apc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGT5MAVH2AVXIMV2OGJ5HPDPWQNTDANCNFSM4EUTRUXQ&data=02%7C01%7C%7Cf42a80c38781418a246908d6de074917%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636940520197611285&sdata=cWXaV7ZG4EbiKiSGIwEIxc4KqJIBEQkziSxUr%2FIIWK8%3D&reserved=0.

fuzzysb commented 5 years ago

@rodneyviana

i was testing your update with files on demand. it works in english OS, but fails on spanish OS, just defaults to NotInstalled.

not sure if i'm missing something

robinmalik commented 5 years ago

Did some testing with the latest dll. Currently on Windows 10 1903 Build 18362.145). Files On Demand is enabled. These are the results for a synchronised SharePoint library (from an O365 group) and my individual OneDrive for Business.

Fully sychronised state:

StatusString : UpToDate
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : SharedSync
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

Whilst writing data to disk, into my individual OneDrive for Business folder:

StatusString : OnDemandOrUnknown
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : OnDemandOrUnknown
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

After writing to disk is complete, and whilst uploading:

StatusString : UpToDate
LocalPath    : D:\My Company Name\PRJ0000000 - Project Title - Documents
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1

StatusString : OnDemandOrUnknown
LocalPath    : D:\OneDrive - My Company Name
UserSID      : S-1-5-21-3459830550-2606870820-3563523489-1001
UserName     : COMPUTER\Me
ServiceType  : Business1
yatesa commented 5 years ago

I am working on the OnDemand workaround and will update the dll soon. It is already working with the version you have but it can be slow. I am on a client this week and will update it soon: either with a more efficient version or publishing the workaround

Hi @rodneyviana, have you managed to get some time to update the dll with "more efficient version" as we still get "OnDemandOrUnknown" for most users. Or if not is it possible to publish the workaround?

rodneyviana commented 5 years ago

It is. I will try later this week.

Get Outlook for iOShttps://aka.ms/o0ukef


From: yatesa notifications@github.com Sent: Tuesday, June 11, 2019 5:03:19 AM To: rodneyviana/ODSyncService Cc: Rodney Viana; Mention Subject: Re: [rodneyviana/ODSyncService] WRong StatusString with FileOnDemand enabled in onedrive (#3)

I am working on the OnDemand workaround and will update the dll soon. It is already working with the version you have but it can be slow. I am on a client this week and will update it soon: either with a more efficient version or publishing the workaround

Hi @rodneyvianahttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020235675&sdata=Z0MolWDItW%2B5QhH6VB9n8xumuf75zhB9WUAVZa4JuAs%3D&reserved=0, have you managed to get some time to update the dll with "more efficient version" as we still get "OnDemandOrUnknown" for most users. Or if not is it possible to publish the workaround?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana%2FODSyncService%2Fissues%2F3%3Femail_source%3Dnotifications%26email_token%3DAGT5MATXUIZUPVYW44STQJLPZ6A7PA5CNFSM4EUTRUX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXMX7FI%23issuecomment-500793237&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020235675&sdata=rjTXkLvMLUA0zNl58CTFsTrW9bpUyc7Xow3nt9ltcEM%3D&reserved=0, or mute the threadhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGT5MAXRV3QB7TNEW6VQDJDPZ6A7PANCNFSM4EUTRUXQ&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020245683&sdata=suf3Mn7UrymdYzIqs47k3KUNxvO2WVyKfJSTYgcMD6s%3D&reserved=0.

rodneyviana commented 5 years ago

Yatesa,

The last update version has a workaround for On Demand. I am still to write about it. For a large number of files it causes high CPU. So use it with care for now.

Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10


From: Rodney Viana Sent: Tuesday, June 11, 2019 11:01:49 PM To: rodneyviana/ODSyncService; rodneyviana/ODSyncService Cc: Mention Subject: Re: [rodneyviana/ODSyncService] WRong StatusString with FileOnDemand enabled in onedrive (#3)

It is. I will try later this week.

Get Outlook for iOShttps://aka.ms/o0ukef


From: yatesa notifications@github.com Sent: Tuesday, June 11, 2019 5:03:19 AM To: rodneyviana/ODSyncService Cc: Rodney Viana; Mention Subject: Re: [rodneyviana/ODSyncService] WRong StatusString with FileOnDemand enabled in onedrive (#3)

I am working on the OnDemand workaround and will update the dll soon. It is already working with the version you have but it can be slow. I am on a client this week and will update it soon: either with a more efficient version or publishing the workaround

Hi @rodneyvianahttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020235675&sdata=Z0MolWDItW%2B5QhH6VB9n8xumuf75zhB9WUAVZa4JuAs%3D&reserved=0, have you managed to get some time to update the dll with "more efficient version" as we still get "OnDemandOrUnknown" for most users. Or if not is it possible to publish the workaround?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Frodneyviana%2FODSyncService%2Fissues%2F3%3Femail_source%3Dnotifications%26email_token%3DAGT5MATXUIZUPVYW44STQJLPZ6A7PA5CNFSM4EUTRUX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXMX7FI%23issuecomment-500793237&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020235675&sdata=rjTXkLvMLUA0zNl58CTFsTrW9bpUyc7Xow3nt9ltcEM%3D&reserved=0, or mute the threadhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAGT5MAXRV3QB7TNEW6VQDJDPZ6A7PANCNFSM4EUTRUXQ&data=02%7C01%7C%7Cdbfa86f109f54fb8fb5a08d6ee5c6a72%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636958478020245683&sdata=suf3Mn7UrymdYzIqs47k3KUNxvO2WVyKfJSTYgcMD6s%3D&reserved=0.

yatesa commented 5 years ago

Yatesa, The last update version has a workaround for On Demand. I am still to write about it. For a large number of files it causes high CPU. So use it with care for now.

Thanks for update.

One thing I've noticed (since before applying this latest update), is that the status result is more often correct than it was previously. I'm not sure if this is related to your previous dll update or if its since Microsoft updated OneDrive (19.086.0502.0006 - where it shows the new style icon) but if I have On Demand enabled and nothing is actively syncing, then it shows the correct status.

However, I can still make it show OnDemandOrUnknown. The easiest way I can re-create the issue is by opening a csv file in my OneDrive as that seems to keep OneDrive in a syncing/Processing Changes state, with the cloud icon showing the circle and arrows overlaid. The new dll doesn't seem to change or improve this particular issue.

I need to do some more testing on other machines that had the issue to see what actually improves the status result, OneDrive update or new OneDrive status dll, but if we can get the correct status when OneDrive is running with On Demand but not actively syncing then that may be enough for us.

fuzzysb commented 4 years ago

I have this working in a different manor. For files on demand when I get not installed as the result, I then view the status column wording on the top level folder. Not great languages but for English it works well

sba923 commented 4 years ago

I always get "OnDemandOrUnknown" with the latest OneDrive client and Files-on-Demand enabled.

Both on home systems (consumer) and at work (ODFB).

Any plans to update the code to fix this?

(I might find some time to look at it myself...)

sharannishant commented 3 years ago

I am running below error while running on Citrix VDA based on Server 2019 with FOD enabled.

Import-Module C:\TCS\ODTool\OneDriveLib.dll Get-ODStatus Get-ODStatus : Unable to find an entry point named '?GetShellInterfaceFromGuid@@YAJPEAHPEA_W1@Z' in DLL 'ODNative.dll'. At line:1 char:1