ShellBoost

Change Log

This list gives details about important updates in versions of ShellBoost:

v1.8.3.0

Added a feature to be able to update a ShellItem’s properties from the Shell’s “Details” pane or the “Properties” dialog. This is now possible overriding the ShellFolder’s OnOperate method with a new ShellOperation.SetProperties operation.

Added a feature to the OnDemandLocalFileSystem class to avoid canceling a hydration request when it’s coming from another process than the cloud sync engine, in certain cases.

Enhanced the “New item” + immediate “Rename” scenario for the EndPointSynchronizer class so it only propagates a “New item with final name” operation to the other file system implementations, avoiding possible retries depending on various timeouts.

Fixed an issue where the FileDialogEventType.OnButtonOk event was not fired during certain Common Dialog scenarios.

Fixed an issue where some ShellItem’s context menu items could not be invoked on Shortcuts.

Breaking Changes: many NotifyXXX methods of the OnDemandLocalFileSystem class have been modified to include a flags parameter. The OnDemandCancelHydrateDataFlags class has been renamed to OnDemandCancelFlags.

v1.8.2.0

Enhanced the Browser and View Roundtrip API classes to support Common Dialog Shell Views, and Shell Views hosted in custom Dialogs, when viewing a ShellBoost Shell Namespace Extension in a 3rd party application.

Enhanced “New folder” support in Common Dialog views.

Added retry support for the OnDemandLocalFileSystem class in case of hydration timeouts.

Fixed an issue with the FileDialogEventArgs class where the ResultsIdLists, ItemsIdLists, ResultIdList and ItemIdList properties values could be null when multiple items were selected.

Fixed another issue with the OnDemandLocalFileSystem class where files of .ODT type were causing containing folders to appear not in-sync, on machines with Microsoft Office installed.

v1.8.1.4

Enhanced the OnDemandLocalFileSystem class to support changing the pinned/unpinned state (“Always keep on this device”) during a download.

Fixed a flickering issue with the OnDemandLocalFileSystem class Shell progress/status column update.

Fixed an issue with the OnDemandLocalFileSystem class where files of .ODT type were causing containing folders to appear not in-sync.

Fixed an issue where selections (items, folders) in namespace extensions could be mismatched when more than 1 item was selected.

v1.8.1.2

Added the new Cloud Folder Proxy sample that uses WinFSP - Windows File System Proxy  to create a virtual Windows drive/directory over the Cloud Folder Site sample backend. It demonstrates a customized Shell Namespace Extension over this drive or directory, that sees its items and folders as it were physical items and folders. This namespace extension also demonstrates a custom use of the “Status” column.

Enhanced the Cloud Folder Client sample project with per-column list view sorting capabilities.

Enhanced the LocalFileSystem and OnDemandLocalFileSystem classes so they log possible errors raised by the underlying file system watcher.

Fixed an issue with the Cloud Folder Site sample project where SQL Server connection where not closed when using the SQL Server back-end.

Fixed an issue with the MultiPointSynchronizer class where difference could be detected for files with time difference lesser than a millisecond (ticks).

Fixed an issue with the LocalFileSystemWatcher class where large sets of simultaneous events prevented new events from being sent. This also indirectly fixes an issue with the LocalFileSystem and OnDemandLocalFileSystem classes where large sets of simultaneous local file events (for example caused by lots of file movements) may be lost.

Breaking Change: the legacy OnDemandSynchronizer class and associated classes has been removed from this version of ShellBoost. If you were still using it, you must migrate your code to the MultiPointSynchronizer class coupled with the OnDemandLocalFileSystem class. The AmalgaDrive sample, which is based on the legacy classes, will not be updated any more. You should focus on the Cloud Folder samples suite instead.

v1.8.1.1

Added a C++/CLI version of the Overview sample.

Added support for hooking non Common Dialog boxes (custom Dialog Boxes) if they contain standard Shell Views, OK and/or Cancel buttons. Other controls (such as FileName Text Box) are not supported.

Enhanced LocalFileSystemWatcher class when handling the event of a folder creation. If this folder has children and possibly grandchildren, it will send a synthetized creation event for all children of this folder, recursively. This happens for example when a folder is cut outside of the watched directory and pasted inside the watched directory. This indirectly enhances LocalFileSystem and OnDemandLocalFileSystem classes behavior so they can support that type of scenario.

Breaking change: FileDialogEventType.OnClose event type has been removed. FileDialogEventType.OnClosed can be used instead.

v1.8.1.0

Added a feature that allows an Information Bar to be added at any time, on-demand, to a Shell View opened on a ShellBoost Namespace extension ShellFolder.

Enhanced Shell Item association and perceived type implicit support. This allows for example Explorer Preview Pane automatic support for image or text Shell Items, including virtual ones.

Enhanced overall performance of ShellItem’s selection when selecting many items.

Added an AddSelfToContextMenu option to ShellFolderInitializationOptions enumeration to be able to merge a ShellFolder’s context menu items to this folder’s context menu in the Explorer Tree View.

Fixed an issue where a specific System.PropList.InfoTip property value for a ShellItem or ShellFolder is not taken into account by the Windows Shell when provided.

Breaking change: ShellItem’s PerceivedType and KindList are now get-only properties. They can be overridden in cases where their value must be different than the default ShellBoost-provided one, which depends on the ItemType property.

v1.8.0.0

Added another implementation of a backend file system in the Cloud Folder Site sample. This implementation simply uses a Windows physical path, and allows testing with files larger than 2G, which is a current limitation of the SQL Server file system implementation.

Improved LocalFileSystem and OnDemandLocalFileSystem classes so they can handle paths longer than MAX_PATH (256) characters. Note it will cause all full paths that may be used in method arguments to be prepended with the long file name prefix (“\\?\”).

Improved MultiPointSynchronizer implementation so progress doesn’t need to be reported anymore using the IProgressSink interface. Existing code will still compile but will do nothing.

Fixed an issue with MultiPointSynchronizer and OnDemandLocalFileSystem classes where a file quickly moved (not copied) into a new folder ended up being deleted on the local file system.

Breaking Change: some Shell Change implicit notifications (calls to native SHChangeNotify method after calls to .NET server) have been removed from the ShellBoost native proxy. This allows greater flexibility on the .NET side when sending notifications but may require additional calls to ShellItem’s NotifyXXX methods on existing code to ensure the Shell or listening apps are aware of Shell Items and/or Shell Folders change.

v1.7.0.4

Added automatic support for Windows Shell’s (Explorer, etc.) dragging images to the OnDemandDataObject class.

Added support for the native IOleCommandTarget COM interface to a Shell Folder. From .NET, it can be implemented using the new OnCommandQueryStatus and OnCommandExec methods or associated events. This can also be used to call a ShellBoost Namespace Extension programmatically from an external program in any language.

Enhanced overall performance of the State Provider database for the MultiPointSynchronizer class.

Modified the ShellFolder’s DataObject handling to reduce the number of calls when possible.

Fixed an issue where using the specific Open Common Dialogs’ “Select” context menu item did not raise any Common Dialog events.

Breaking Change: when using custom a OnDemandDataObject instance for copy/paste or drag & drop operations, the ShellDataObject instance provided by the DragDropTargetEventArgs event argument cannot be modified (ShellBoost Exception SHB0045) and the Data and ConvertedData properties of the ShellDataObjectFormat format instances cannot be accessed (ShellBoost Exceptions SHB0048, SHB0049). In these cases, the custom data format can be accessed instead directly through the OnDemandDataFormat property value of the ShellDataObjectFormat class.

v1.7.0.3

Added support for thumbnail provider to the OnDemandLocalFileSystem class. This allows thumbnails to be displayed for image-type files without hydrating the placeholder’s content.

v1.7.0.2

Added a FolderPicker (Vista+ look and feel) common dialog utility class.

Added a “Replace content” feature to the Cloud Folder Client sample tool.

Added support for merging context menu when no context folder is provided by the Shell (for example when right-clicking in the Explorer “This PC” List View extension item). In this case, the root Shell Folder is used.

Added Shell Progress updates when hydrating large files from the OnDemandLocalFileSystem class.

Fixed an issue where an external dehydration request was causing a lock in the OnDemandLocalFileSystem class.

Fixed an issue where appended menu items separators may not be shown after merging a context menu.

Fixed an issue with the Google Drive Folder sample that didn’t reported download progress to the file system due to a limitation in Google Drive API.

Breaking Change: the legacy OnDemandSynchronizer class and associated classes will be removed in a next version of ShellBoost. If you’re still using it, you must migrate your code to the MultiPointSynchronizer class coupled with the OnDemandLocalFileSystem class.

v1.7.0.1

Enhanced the Cloud Folder Site sample to add renaming and moving features. Note the Change table schema has been changed, so it must be deleted, and the sample will recreate it automatically.

Enhanced the Google Drive Folder sample and Cloud Folder Sync sample to use the new OnDemandLocalFileSystemRegistration’s hydration and population policies.

Added synchronization policies (hydration, population, etc.) options to the OnDemandLocalFileSystemRegistration class.

Added automatic Shell Notifications to the OnDemandLocalFileSystem class to notify the Windows Shell when local files and/or folders change.

Added LocalFileSystemWatcher, LocalFileSystem , and OnDemandLocalFileSystem classes the capacity to synthetize Cut + Paste  commands into a Rename event, instead of a Delete and a Create events.

Fixed an issue where multiple Shell Items specifying a distinct icon overlay could be displayed using the same one.

v1.7.0.0

Enhanced detection of ShellBoost Views from the ShellContext class.

Enhanced the Menu class of the Roundtrip API to be able to extract or show the default context menu.

Enhanced the Google Drive Folder sample so it doesn’t use an embedded browser for Sign In anymore (per Google’s recommendations).

Added numerous enhancements to Data Object (for Drag & Drop, Copy / Paste) support and handling.

Added owner window handle to the GetDataObjectEventArgs event class.

Added a Win32Window class in utility API to ease usage of native windows.

Added a FolderViewEvents class to detect Shell View events.

Added a Link and a FolderShortcut classes to the Roundtrip API to program the Windows’ Shell shortcuts (.lnk) files from .NET.

Added a method to change an existing context menu state.

Added Server Start options to start the .NET Server from the proxy if the proxy cannot communicate with the .NET Server (in Beta).

Fixed an issue in the OnDemandLocalFileSystem class that prevented files in sub folders from being created as placeholders for On-Demand files support.

Fixed issues in SevenZip Folder sample.

v1.6.0.4

Enhanced the MultipointSynchronizer to be able to have an EndPointSynchronizer wait for parent (folder, directory etc.) creation before content (document, file, etc.) uploading.

Added the new Cloud Folder Sync sample that demonstrates “One-Drive-like” Windows 10 On-Demand bi-directional synchronization between a local folder and the Cloud Folder Site sample.

Fixed display issues of RPC error text and refresh button in high DPI (“Make everything bigger”) and high text scale (“Make text bigger”) modes.

v1.6.0.3

Enhanced some clipboard formats parsing.

Enhanced roundtrip API classes.

Add Hidden attribute to synchronization classes.

Added the new Mirror sample that demonstrates a namespace extension which displays a windows directory.

Added the new Device Manager Folder sample using .NET Core and WinRT DeviceWatcher classes.

Added unique Guid PIDLs enhancements to support more than one hierarchy level. This fixes an issue in the Cloud Folder sample.

Added the ISyncFileSystemWriteAsync to the On-Demand synchronization feature interface to support more .NET async scenarios.

Added a ShellBindContext to the ShellFolder’s TryGetItem method to enhanced Common Dialog Save As scenarios.

Fixed a bug where a ShellBoostView instance couldn’t be retrieved from ShellContext.

Fixed an issue where some namespace folders could not be reached using Windows Explorer’s address bar.

Fixed issue with native proxy discovery when current execution directory was not the same as the .NET server executable path.

v1.6.0.0

Added support for unique Guid PIDLs.

Added customization of Common Dialog events that are sent back to the namespace extension.

Added support for not using Common Dialog hook for dialog events. This removes OnButtonOk, OnButtonCancel, OnClose, OnOpened, and Custom (not in the .NET enum type) events.

Added new Menu and MenuItem classes in the roundtrip API to be able to extract context and “New” menus for a given item.

Added new TreeNamespaceControl class in the roundtrip API to be able to interact with Explorer’s tree view.

Added a new Cloud Folder sample including an ASP.NET Core app and .NET Core Console client, using SQL Server as a web backend.

Fixed the possibility to disable the Shell Item cache.

v1.5.0.4

Fixed drag / drop & copy / paste automatic mode issue.

v1.5.0.3

Added Shell Item name validation (for rename operations) methods: OnGetNameValidCharactersEvent and OnGetNameMaxLengthEvent.

Added the IShellItemEnumerator interface to get additional options (window handle) when enumerating a Shell Folder’s items.

Fixed Explorer’s TreeView context menu item invoke event not firing under certain conditions.

Fixed “not implemented” (0x80004001) error dialog box that can be shown to end-users after Shell Item deletion.

Fixed icons discrepancy between what a Shell Folder displays and what an Explorer View displays for Details view mode by default.

v1.5.0.2

Improved enumeration performance for sub folders.

Added a new GetFolderAsRoot method on the ShellFolderServer class that can be used instead of the GetRootFolder method. This allows to have all ShellFolder instances derive from the same base class instead of having to specialize the root folder vs the other folders. The RootShellFolder class is not needed anymore but is preserved for compatibility reasons.

v1.5.0.1

Improved enumeration performance.

v1.5.0.0

Introducing support for multiple ShellBoost Namespace Extension hosting in one .NET server.

Added Thumbnail class in roundtrip API.

Enhanced the IconUtilities class.

v1.4.1.2

Enhanced roundtrip view matching (ShellBoostView’s GetFromContextAsync method).

Enhanced roundtrip API.

Added automatic selection and name editing of a physical Shell Item created using the New menu.

v1.4.1.1

Fixed duplicate “New” menus issue.

Fixed possible “SHB0010: A Server with the same interface has already been started” error in some multiple ShellBoost extensions deployment scenarios.

v1.4.1.0

Enhanced the Roundtrip Shell programming API with stream support.

Added a multi-user per-machine supported scenario.

v1.4.0.0

Added “Dynamic column” feature to be able to add column without an associated windows-registered Property (beta).

Added “Roundtrip Shell programming” feature to be able to call use ShellBoost folder views from a ShellBoost .NET server (beta).

Breaking change: The KnownFolder class has been moved to the ShellBoost.Core.WindowsShell namespace.

v1.3.3.0

Enhanced OnDemandLocalFileSystem to honor end-user On-Demand state requests (“Always keep on this device”, “Free up space”, etc.) and to check all entries states at initialization.

v1.3.2.0

Enhanced Context menus support (added late events and capacity to avoid using the default Shell menu).

v1.3.1.0

Enhanced MultiPointSynchronizer. Fixed some Google Drive Folder sample issues.

Added a GetFolderSettings event on the ShellFolder class to be able to customize the folder view (empty text, view mode, folder flags, etc.).

v1.3.0.1

Added support for using the native proxy in an AppDomain different from the default one. Only in .NET Framework as .NET core does not support multiple AppDomains.

v1.3.0.0

Introducing the new MultiPointSynchronizer class for Files On-Demand support. This class is in beta, but the OnDemandSynchronizer class should not be used for new projects.

The Google Drive Folder sample has been rewritten to support the new MultiPointSynchronizer class.

Enhanced implicit support for Common Dialogs. Physical Overview sample has been simplified.

v1.2.9.2

Enhanced File-OnDemand support provided by the OnDemandSynchronizer class.

v1.2.9.1

Enhanced File-OnDemand support provided by the OnDemandSynchronizer class. Migrated Amalga Drive server side to .NET Core 3.

v1.2.9.0

Enhanced File-OnDemand support provided by the OnDemandSynchronizer class. Added a new Google Drive Folder sample that demonstrates “One-Drive-like” Windows 10 On-Demand bi-directional synchronization between a local folder and Google Drive.

v1.2.8.0

Enhanced drag & drop support. Added ChangedNotifier class. Added a new Physical Overview sample.

v1.2.7.2

Misc. bug fixes.

v1.2.6.0

Added support for Common Dialog context.

v1.2.5.0

Added support for .NET core 3. (.NET core 1 and 2 are not supported).

v1.2.4.0

Added ARM64 native proxy (beta).

v1.2.3.0

Fixed root folder custom context menu issue.

Fixed some issues in the documentation.

v1.2.2.0

Added support for Windows Explorer Notification Banner, or Information Bars.

Fixed some issues in the documentation.

v1.2.1.0

Added support for Projected File System (ProjFS) feature.

v1.1.2.0

Fixed some Drag & Drop issues.

v1.1.1.0

Added support for Files-On-Demand (aka “Like OneDrive”) feature.