CBFS Shell 2024 Changelog
This document provides high-level information about new features, fixes, and functionality changes between minor versions releases of CBFS Shell. The information provided here is also available as an RSS feed.
For more details or if you have any questions please contact support@callback.com
Version: 24.0.9034
Date: September 25, 2024
- Improvements in the samples (ShellFolder/Overview and Shell Menu).
- (Rust) Updated the API to make it more conformant to Rust rules.
Version: 24.0.9013
Date: September 4, 2024
- [NEW] [ShellFolder] Clicking on the
Properties
button,New Folder
button, or on an item in the New submenu of theNew Item
button in the toolbar of a File Explorer window now fires theInvokeMenu
event. Note that theNew...
button in Windows 11 does not work due to the changes in the way File Explorer works comparing to the previous versions of Windows.
Version: 24.0.8974
Date: July 27, 2024
- [NEW] Initial release of version 2024
Version: 22.0.8494
Date: April 4, 2023
- [IMPORTANT] Proxy DLL naming has been changed. Proxy IDs are license-based now, and the licensed installer installs ready-to-deploy licensed proxy DLLs. The trial installer installs trial proxy DLLs.
Version: 22.0.8413
Date: January 13, 2023
- Minor documentation updates
Version: 22.0.8400
Date: December 31, 2022
- [FIX] Minor improvements (ItemType and ItemTypeId properties are set by default now) to help Search perform searching recursively.
- [FIX]
MergeNewMenu
didn't merge menu items' bitmaps. - [FIX] .NET Core and .NET 5/6 have a breaking change in marshaling of GUID variant types (they are not supported). A workaround has been added to the server-side (native) code.
Version: 22.0.8126
Date: April 1, 2022
- [IMPORTANT] CBFS Shell incorporates ShellBoost as one of the components.
- [IMPORTANT] The
CBShellBoost
component should be used to install and uninstall the native proxy DLL to/from Windows Shell. - [IMPORTANT] The customized native proxy DLL doesn't include project information (except project-specific GUIDs). All information is set before and during installation via
CBShellBoost
properties. - [IMPORTANT] Licensing and activation mechanism has been changed (please, refer to the documentation for the details).
Version: 1.8.3.0
- [NEW] 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 theShellFolder
'sOnOperate
method with a newShellOperation.SetProperties
operation. - [NEW] 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. - [NEW] 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. - [FIX] Fixed an issue where the
FileDialogEventType.OnButtonOk
event was not fired during certain Common Dialog scenarios. - [FIX] Fixed an issue where some
ShellItem
's context menu items could not be invoked on Shortcuts. - [IMPORTANT] Breaking Changes: many
NotifyXXX
methods of theOnDemandLocalFileSystem
class have been modified to include aflags
parameter. TheOnDemandCancelHydrateDataFlags
class has been renamed toOnDemandCancelFlags
.
Version: 1.8.2.0
- [NEW] Enhanced the
Browser
andView
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. - [NEW] Enhanced "New folder" support in Common Dialog views.
- [NEW] Added retry support for the
OnDemandLocalFileSystem
class in case of hydration timeouts. - [FIX] Fixed an issue with the
FileDialogEventArgs
class where theResultsIdLists
,ItemsIdLists
,ResultIdList
andItemIdList
properties values could be null when multiple items were selected. - [FIX] 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.
Version: 1.8.1.4
- [NEW] Enhanced the
OnDemandLocalFileSystem
class to support changing the pinned/unpinned state ("Always keep on this device") during a download. - [FIX] Fixed a flickering issue with the
OnDemandLocalFileSystem
class Shell progress/status column update. - [FIX] Fixed an issue with the
OnDemandLocalFileSystem
class where files of .ODT type were causing containing folders to appear not in-sync. - [FIX] Fixed an issue where selections (items, folders) in namespace extensions could be mismatched when more than 1 item was selected.
Version: 1.8.1.2
- [NEW] Added the new
Cloud Folder Proxy sample
that uses WinFPS - Windows File System Proxy to create a virtual Windows drive/directory over theCloud 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. - [NEW] Enhanced the
Cloud Folder Client
sample project with per-column list view sorting capabilities. - [NEW] Enhanced the
LocalFileSystem
andOnDemandLocalFileSystem
classes so they log possible errors raised by the underlying file system watcher. - [FIX] Fixed an issue with the
Cloud Folder Site
sample project where SQL Server connection where not closed when using the SQL Server back-end. - [FIX] Fixed an issue with the
MultiPointSynchronizer
class where difference could be detected for files with time difference lesser than a millisecond (ticks). - [FIX] 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 theLocalFileSystem
andOnDemandLocalFileSystem
classes where large sets of simultaneous local file events (for example caused by lots of file movements) may be lost. - [IMPORTANT] 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 theMultiPointSynchronizer
class coupled with theOnDemandLocalFileSystem
class. TheAmalgaDrive sample
, which is based on the legacy classes, will not be updated any more. You should focus on theCloud Folder samples
suite instead.
Version: 1.8.1.1
- [NEW] Added a C++/CLI version of the
Overview sample
. - [NEW] 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. - [NEW] 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 enhancesLocalFileSystem
andOnDemandLocalFileSystem
classes behavior so they can support that type of scenario. - [IMPORTANT] Breaking change:
FileDialogEventType.OnClose
event type has been removed.FileDialogEventType.OnClosed
can be used instead.
Version: 1.8.1.0
- [NEW] 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
. - [NEW] 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.
- [NEW] Enhanced overall performance of
ShellItem
's selection when selecting many items. - [NEW] Added an
AddSelfToContextMenu
option toShellFolderInitializationOptions
enumeration to be able to merge aShellFolder'
s context menu items to this folder's context menu in the Explorer Tree View. - [FIX] Fixed an issue where a specific
System.PropList.InfoTip
property value for aShellItem
orShellFolder
is not taken into account by the Windows Shell when provided. - [IMPORTANT] Breaking change:
ShellItem
'sPerceivedType
andKindList
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 theItemType
property.
Version: 1.8.0.0
- [NEW] 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. - [NEW] Improved
LocalFileSystem
andOnDemandLocalFileSystem
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 ("\\?\"
). - [NEW] Improved
MultiPointSynchronizer
implementation so progress doesn't need to be reported anymore using theIProgressSink
interface. Existing code will still compile but will do nothing. - [FIX] Fixed an issue with
MultiPointSynchronizer
andOnDemandLocalFileSystem
classes where a file quickly moved (not copied) into a new folder ended up being deleted on the local file system. - [IMPORTANT] 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.
Version: 1.7.0.4
- [NEW] Added automatic support for Windows Shell's (Explorer, etc.) dragging images to the
OnDemandDataObject
class. - [NEW] Added support for the native
IOleCommandTarget
COM interface to a Shell Folder. From .NET, it can be implemented using the newOnCommandQueryStatus
andOnCommandExec
methods or associated events. This can also be used to call a ShellBoost Namespace Extension programmatically from an external program in any language. - [NEW] Enhanced overall performance of the State Provider database for theMultiPointSynchronizer
class. - [FIX] Modified the
ShellFolder
's DataObject handling to reduce the number of calls when possible. - [FIX] Fixed an issue where using the specific Open Common Dialogs' "Select" context menu item did not raise any Common Dialog events.
- [IMPORTANT] Breaking Change: when using custom a
OnDemandDataObject
instance for copy/paste or drag & drop operations, theShellDataObject
instance provided by theDragDropTargetEventArgs
event argument cannot be modified (ShellBoost Exception SHB0045) and theData
andConvertedData
properties of theShellDataObjectFormat
format instances cannot be accessed (ShellBoost Exceptions SHB0048, SHB0049). In these cases, the custom data format can be accessed instead directly through theOnDemandDataFormat
property value of theShellDataObjectFormat
class.
Version: 1.7.0.3
- [NEW] 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.
Version: 1.7.0.2
- [NEW] Added a
FolderPicker
(Vista+ look and feel) common dialog utility class. - [NEW] Added a "Replace content" feature to the
Cloud Folder Client sample
tool. - [NEW] 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.
- [NEW] Added Shell Progress updates when hydrating large files from the
OnDemandLocalFileSystem
class. - [FIX] Fixed an issue where an external dehydration request was causing a lock in the
OnDemandLocalFileSystem
class. - [FIX] Fixed an issue where appended menu items separators may not be shown after merging a context menu.
- [FIX] 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. - [IMPORTANT] 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 theMultiPointSynchronizer
class coupled with theOnDemandLocalFileSystem
class.
Version: 1.7.0.1
- [NEW] Enhanced the
Cloud Folder Site sample
to add renaming and moving features. Note theChange
table schema has been changed, so it must be deleted, and the sample will recreate it automatically. - [NEW] Enhanced the
Google Drive Folder sample
andCloud Folder Sync sample
to use the newOnDemandLocalFileSystemRegistration
's hydration and population policies. - [NEW] Added synchronization policies (hydration, population, etc.) options to the
OnDemandLocalFileSystemRegistration
class. - [NEW] Added automatic Shell Notifications to the
OnDemandLocalFileSystem
class to notify the Windows Shell when local files and/or folders change. - [NEW] Added
LocalFileSystemWatcher
,LocalFileSystem
, andOnDemandLocalFileSystem
classes the capacity to synthetize Cut + Paste commands into a Rename event, instead of a Delete and a Create events. - [FIX] Fixed an issue where multiple Shell Items specifying a distinct icon overlay could be displayed using the same one.
Version: 1.7.0.0
- [NEW] Enhanced detection of ShellBoost Views from the
ShellContext
class. - [NEW] Enhanced the
Menu
class of the Roundtrip API to be able to extract or show the default context menu. - [NEW] Enhanced the
Google Drive Folder sample
so it doesn't use an embedded browser for Sign In anymore (per Google's recommendations). - [NEW] Added numerous enhancements to Data Object (for Drag & Drop, Copy / Paste) support and handling.
- [NEW] Added owner window handle to the
GetDataObjectEventArgs
event class. - [NEW] Added a
Win32Window
class in utility API to ease usage of native windows. - [NEW] Added a
FolderViewEvents
class to detect Shell View events. - [NEW] Added a
Link
and aFolderShortcut
classes to the Roundtrip API to program the Windows' Shell shortcuts (.lnk) files from .NET. - [NEW] Added a method to change an existing context menu state.
- [NEW] Added Server Start options to start the .NET Server from the proxy if the proxy cannot communicate with the .NET Server (in Beta).
- [FIX] Fixed an issue in the
OnDemandLocalFileSystem
class that prevented files in sub folders from being created as placeholders for On-Demand files support. - [FIX] Fixed issues in
SevenZip Folder sample
.
Version: 1.6.0.4
- [NEW] Enhanced the
MultipointSynchronizer
to be able to have anEndPointSynchronizer
wait for parent (folder, directory etc.) creation before content (document, file, etc.) uploading. - [NEW] Added the new
Cloud Folder Sync sample
that demonstrates "One-Drive-like" Windows 10 On-Demand bi-directional synchronization between a local folder and theCloud Folder Site sample
. - [FIX] Fixed display issues of RPC error text and refresh button in high DPI ("Make everything bigger") and high text scale ("Make text bigger") modes.
Version: 1.6.0.3
- [NEW] Enhanced some clipboard formats parsing.
- [NEW] Enhanced roundtrip API classes.
- [NEW] Add
Hidden
attribute to synchronization classes. - [NEW] Added the new
Mirror sample
that demonstrates a namespace extension which displays a windows directory. - [NEW] Added the new
Device Manager Folder sample
using .NET Core and WinRTDeviceWatcher
classes. - [NEW] Added unique Guid PIDLs enhancements to support more than one hierarchy level. This fixes an issue in the
Cloud Folder sample
. - [NEW] Added the
ISyncFileSystemWriteAsync
to the On-Demand synchronization feature interface to support more .NET async scenarios. - [NEW] Added a ShellBindContext to the ShellFolder's
TryGetItem
method to enhanced Common Dialog Save As scenarios. - [FIX] Fixed a bug where a
ShellBoostView
instance couldn't be retrieved fromShellContext
. - [FIX] Fixed an issue where some namespace folders could not be reached using Windows Explorer's address bar.
- [FIX] Fixed issue with native proxy discovery when current execution directory was not the same as the .NET server executable path.
Version: 1.6.0.0
- [NEW] Added support for unique Guid PIDLs.
- [NEW] Added customization of Common Dialog events that are sent back to the namespace extension.
- [NEW] 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.
- [NEW] Added new
Menu
andMenuItem
classes in the roundtrip API to be able to extract context and "New" menus for a given item. - [NEW] Added new
TreeNamespaceControl
class in the roundtrip API to be able to interact with Explorer's tree view. - [NEW] Added a new
Cloud Folder sample
including an ASP.NET Core app and .NET Core Console client, using SQL Server as a web backend. - [FIX] Fixed the possibility to disable the Shell Item cache.
Version: 1.5.0.4
- [FIX] Fixed drag / drop & copy / paste automatic mode issue.
Version: 1.5.0.3
- [NEW] Added Shell Item name validation (for rename operations) methods:
OnGetNameValidCharactersEvent
andOnGetNameMaxLengthEvent
. - [NEW] Added the
IShellItemEnumerator
interface to get additional options (window handle) when enumerating a Shell Folder's items. - [FIX] Fixed Explorer's TreeView context menu item invoke event not firing under certain conditions.
- [FIX] Fixed "not implemented" (0x80004001) error dialog box that can be shown to end-users after Shell Item deletion.
- [FIX] Fixed icons discrepancy between what a Shell Folder displays and what an Explorer View displays for Details view mode by default.
Version: 1.5.0.2
- [NEW] Improved enumeration performance for sub folders.
- [NEW] Added a new
GetFolderAsRoot
method on theShellFolderServer
class that can be used instead of theGetRootFolder
method. This allows to have allShellFolder
instances derive from the same base class instead of having to specialize the root folder vs the other folders. TheRootShellFolder
class is not needed anymore but is preserved for compatibility reasons.
Version: 1.5.0.1
- [FIX] Improved enumeration performance.
Version: 1.5.0.0
- [NEW] Introducing support for multiple ShellBoost Namespace Extension hosting in one .NET server.
- [NEW] Added
Thumbnail
class in roundtrip API. - [NEW] Enhanced the
IconUtilities
class.
Version: 1.4.1.2
- [NEW] Enhanced roundtrip view matching (
ShellBoostView'
sGetFromContextAsync
method). - [NEW] Enhanced roundtrip API.
- [NEW] Added automatic selection and name editing of a physical Shell Item created using the New menu.
Version: 1.4.1.1
- [FIX] Fixed duplicate "New" menus issue.
- [FIX] Fixed possible "SHB0010: A Server with the same interface has already been started" error in some multiple ShellBoost extensions deployment scenarios.
Version: 1.4.1.0
- [NEW] Enhanced the Roundtrip Shell programming API with stream support.
- [NEW] Added a multi-user per-machine supported scenario.
Version: 1.4.0.0
- [NEW] Added "Dynamic column" feature to be able to add column without an associated windows-registered Property (beta).
- [NEW] Added "Roundtrip Shell programming" feature to be able to call use ShellBoost folder views from a ShellBoost .NET server (beta).
- [IMPORTANT] Breaking change: The
KnownFolder
class has been moved to theShellBoost.Core.WindowsShell
namespace.
Version: 1.3.3.0
- [NEW] 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.
Version: 1.3.2.0
- [NEW] Enhanced Context menus support (added late events and capacity to avoid using the default Shell menu).
Version: 1.3.1.0
- [NEW] Enhanced
MultiPointSynchronizer
. Fixed someGoogle Drive Folder sample
issues. - [NEW] Added a
GetFolderSettings
event on theShellFolder
class to be able to customize the folder view (empty text, view mode, folder flags, etc.).
Version: 1.3.0.1
- [NEW] 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.
Version: 1.3.0.0
- [NEW] Introducing the new
MultiPointSynchronizer
class for Files On-Demand support. This class is in beta, but theOnDemandSynchronizer
class should not be used for new projects. - [NEW] The
Google Drive Folder sample
has been rewritten to support the newMultiPointSynchronizer
class. - [NEW] Enhanced implicit support for Common Dialogs.
Physical Overview sample
has been simplified.
Version: 1.2.9.2
- [NEW] Enhanced File-OnDemand support provided by the
OnDemandSynchronizer
class.
Version: 1.2.9.1
- [NEW] Enhanced File-OnDemand support provided by the
OnDemandSynchronizer
class. Migrated Amalga Drive server side to .NET Core 3.
Version: 1.2.9.0
- [NEW] Enhanced File-OnDemand support provided by the
OnDemandSynchronizer
class. Added a newGoogle Drive Folder sample
that demonstrates "One-Drive-like" Windows 10 On-Demand bi-directional synchronization between a local folder and Google Drive.
Version: 1.2.8.0
- [NEW] Enhanced drag & drop support. Added
ChangedNotifier
class. Added a newPhysical Overview sample
.
Version: 1.2.7.2
- [FIX] Misc. bug fixes.
Version: 1.2.6.0
- [NEW] Added support for Common Dialog context.
Version: 1.2.5.0
- [NEW] Added support for .NET core 3. (.NET core 1 and 2 are not supported).
Version: 1.2.4.0
- [NEW] Added ARM64 native proxy (beta).
Version: 1.2.3.0
- [FIX] Fixed root folder custom context menu issue.
- [FIX] Fixed some issues in the documentation.
Version: 1.2.2.0
- [NEW] Added support for Windows Explorer Notification Banner, or Information Bars.
- [FIX] Fixed some issues in the documentation.
Version: 1.2.1.0
- [NEW] Added support for Projected File System (ProjFS) feature.
Version: 1.1.2.0
- [FIX] Fixed some Drag & Drop issues.
Version: 1.1.1.0
- [NEW] Added support for Files-On-Demand (aka "Like OneDrive") feature.
Download Changelog