Source repository: https://github.com/aelyo-softworks/ShellBoost-Samples
A Winforms application that is an
equivalent of One Drive for Google Drive. It demonstrates the File On-Demand
ShellBoost feature. It’s not currently exposing a Shell Namespace Extension,
but the sample could be modified to integrate the code that can be found in the
Physical Overview sample.
The sample only run on Windows 10 version
1709 (or “Fall Creators Update”) because the “Files On-Demand” only run on this
version of Windows or higher.
Note: This is only a sample code,
provided as is. Data loss may arise, so we recommend you use a Google Drive
account where data is not important when testing this sample.
1)Since the sample connects to Google Drive, it
needs API credentials. There are many ways to integrate with Google Drive, but
the sample uses OAuth 2. So it needs a Google Drive Secrets .json file. The
easiest way is to go to the https://developers.google.com/drive/api/v3/quickstart/dotnet page and Enable the Drive API, as shown here:
2)Once you have downloaded a Secrets .json file,
compile and run the sample. By default, it should show you this:
3)This is normal. Now, use the File / Configure
Secrets File menu item and choose the .json file you have downloaded from the
Google developers’ site. You should now see this:
4)The Secrets .json file has been configured ok,
so the sample can now connect to the Google Drive API, on behalf of a Google
Drive account / user. There is no account synchronized yet, so use the File /
Add Account menu item. You should see something like this:
5)Enter your email, click Next, enter your
password, and you should see the user Consent Screen, something like this:
6)Accept (Allow). The dialog box should close itself and now you
should see something like this:
This log shows the sample is synchronizing
the file it has found on the Google Drive of the added account with the local
Once the program is started, it will, by
default, synchronize files automatically:
from Google Drive to the local drive every 300
from the local drive to Google Drive
Here is the Google Drive view of our
account (it has 3 files and 2 folders):
And here is our local drive after the first
As you can see all files are created, but they
don’t take any space on the physical disk (beyond the metadata like its name
and size), just like with Microsoft’s OneDrive. If you open a file (right
click, context menu, open, or double-click), Windows will automatically require
the sample to download the file. The sample will download it from Google Drive
and the application associated with this file will open. Now the explorer view
will show this:
Note that if you had exited the sample and
opened the file, Windows would have told you it cannot do this, as it needs the
sample app to run to fetch data.
You can observe the icon has changed. It
means the file is now downloaded and its content is physically stored on the
disk. Now, even if the sample application is closed or does not run, the file
can still be opened, like any other file on the disk.
Synchronization works the other way around.
If you create a file in the local folder, it will be uploaded to the Google
Drive, as soon as possible. Here is the view of the account Google Drive after
a Word document as been created in the local folder:
“Google Docs” (Document, Spreadsheet,
Presentation, etc.) in Google Drive are special type of items (not files) because
they don’t use end-user quota. Because of this, their size cannot be determined
by the Google Drive API, because they just don’t have a size. So, the
application only synchronizes these items from Google Drive to the local
folder, and it creates a .url file (an “Internet Shortcut”) that points to the
Google Doc link on the web, not the file with its content.
Errors (such as Sharing Violation errors) are
often encountered in the application log. This is a sample that demonstrates a
feature and it makes apparent the issues it encounters during the normal course
of its operations. So, these errors are, in general, purely informative.
For storing Google Drive information locally,
the sample use a 100% free and open source project called SQLNado : https://github.com/smourier/SQLNado that allows a .NET program to easily use a SQLite database. Since
Windows 10 provides SQLite native runtime in 32 and 64-bit, the program does
not need SQLite native runtime to be deployed.
The sample supports multiple Google Drive accounts.
The sample currently only synchronizes owned (by
the current logged in account) and non-Trashed (removed) items from Google