UserFileSystemSamples Versions Save

IT Hit User File System Engine samples in .NET/C#. Samples implement Virtual File System for Windows and Mac with synchronization support, on-demand loading, offline files, and Windows File Manager integration.

v8.1.26791.0-Beta2

3 weeks ago
  • Exception WebDAVFileProviderExtension "Microsoft.macOS: Failed to initialize the VM" on macOS 14.4 and later. This bug is now fixed.
  • The Win32LastModifiedTime custom WebDAV property did not serialize correctly on-English macOS. The IT Hit WebDAV Server samples are throwing FormatException "String '' was not recognized as a valid DateTime." This bug is now fixed.
  • Cookies authentication is now supported in WebDAV Drive sample on macOS in host application.
  • Remote storage monitor connected only to the first storage in WebDAV Drive sample for macOS if more than one drive was mounted. This bug is now fixed.

v8.1.26727.0-Beta2

1 month ago
  • WebDAV Drive sample on macOS now supports cookies authentication.
  • WebDAV Drive sample on macOS now provides custom protocol "fuse:" implementation.
  • All Windows platform samples now run on .NET 8.
  • Challenge-response authentication dialog (Basic, Digest, NTLM, Kerberos) is replaced with system authentication dialog in WebDAV Drive sample on Windows platform.
  • On Windows platform the IFileSystemItem.GetPropertiesAsync() and IFileSystemItem.GetThumbnailAsync() were called only if remote storage ID was set for the item. Now these methods are called for any item.
  • On Windows platform if the IFileSystemItem.GetPropertiesAsync() is called before the Engine is has started, the ArgumentNullException is thrown. Now the IFileSystemItem.GetPropertiesAsync() is never called before the Engine start.
  • In WebDAV Drive sample on Windows if web sockets failed to connect, the client was trying to reconnect to server infinitely. Now web sockets try to re-connnect only if first connection was successful. Otherwise RemoteStorageMonitorBase.StartAsync() throws exception. If SyncID or CRUDE web sockets are not supported, the timer pooling is used now in WebDAV Drive sample.
  • If remote storage did not support resource-id property on the root item, the WebDAV Drive sample was throwing WebDavException "resource-id or parent-resource-id is not found. Your WebDAV server does not support collection synchronization. Upgrade your .NET WebDAV server to v13.2 or Java WebDAV server to v6.2 or later version." On sample start. Now if resource-id is not supported on the root item, the sample runs with CRUDE remote storage monitor or timer pooling.
  • In WebDAV Drive sample for Windows, if remote storage did not return resource-id on files and folders creation exception was thrown. Now this bug is fixed.
  • PreferredIncomingSyncMode is added to the WebDAV Drive settings on Windows platform. Allowed values are: SyncId, Disabled, TimerPooling.
  • In Windows platform samples if any file is read-only, unmounting failed. The read-only attribute is now removed during unmounting.

v8.1.26224.0-Beta2

2 months ago
  • Engine on macOS platform now supports setting capabilities for each item. IFileSystemItemMetadataMac.Capabilities property is added. Now the implementer can specify if an item can be moved, renamed, deleted, excluded from synchronization as well as if applications can read and write the item.
  • WebDAV Drive sample on macOS now supports pooling synchronization. If collection synchronization is not supported (Sync ID) by the remote storage, CRUDE web sockets + pooling will be used instead.
  • EngineMac now protects read-only items from writing. If the file is locked by third-party user the item is protected from updates.
  • EngineWindows.ItemsChanged event is provided. The post-event is fired after each item creation, update, delete and move operations. The event provides information about synchronization direction, type of the operation, result of the operation and number of items updated.
  • Microsoft Office merging is now supported on Windows platform. The Utilities.TryNotifyUpdateAvailable() method can be used to merge Microsoft Word and PowerPoint documents.
  • Metadata can now be updated separately from content using IFileSystemItemMetadata.MetadataETag and IFileMetadata.ContentETag properties.
  • On Windows platform custom properties can now be accessed via IOperationContext.Properties of the IOperationContext parameter. All IFile and IFolder methods now provide IOperationContext parameter.
  • Pooling synchronization mode is now provided by the EngineWindows. The EngineWindows.SyncService.IncomingSyncMode can now be used to the sync mode.
  • WebDAV Drive sample on Windows now supports Sync ID synchronization, CRUDE synchronization and pooling synchronization modes.

v8.0.26019.0-Beta

3 months ago
  • Virtual File System sample on macOS can now synch items from remote storage to client using pooling, if Sync ID algorithm is not supported by the server.
  • EngineWindows.ItemsChanged event is provided. Now every incoming and outgoing creation, update, delete, move lock and unlock triggers the ItemsChanged event. IChangedItem.BeforeAction and IChangedItem.AfterAction events removed. Properties can not be updated inside ItemsChanged event.
  • If a Microsoft Word or PowerPoint document is open for editing nad is not locked, it can now merge with incoming updates. AppHelper project edded that helps merging MS Office documents.
  • Virtual File System sample on Windows refactored to reference items by path.
  • All IFile and IFolder methods not provide custom list of properties associated with every file/folder (ICustomData) in IOperationContext.Property parameter of every method.
  • EngineWindows.ServerNotifications() overloaded method added that returns IServerNotifications by remote storage ID on Windows platform.
  • IServerNotifications.MoveTo() overloaded method added on Windows platform that accepts new target remote storage ID and new file name. It creates and deletes items automatically if moved outside of the synchronised folders.
  • Memory violation exception (Win32Exception (998)) during GetUsnByPathAsync() method call on Windows platform. This bug is now fixed.
  • IContext.FileNameHint returns path that starts with "\?\" when GetFileSystemItemAsync() is called from from outgoing sync service on Windows platform. Now IContext.FileNameHint is always returned without "\?\" prefix.
  • ILock.LockAsync()/UnlockAsync() was throwing NotSupportedException if ILock was not implemented on Windows platform. Now NotImplementedException is thrown.
  • ErrorStatusFilter on Windows platform can now ignore in-sync files during incoming sync.
  • Error state that was set during previous updates is now cleared when the item is dehydrated (only if item is in-sync) or on content update.

v7.3.24116.0

5 months ago
  • WebDAV Drive sample for macOS can now show login user interface in macOS Finder. UI Extension provider is implemented.
  • EngineMac.IsAuthenticated() virtual method provided, indicating if user is authenticated.
  • IFile.WriteAsync() IFolder.WriteAsync() first parameter type changed to IFileSystemBasicInfo. All file and folder info can now be nullable.

v7.2.23868.0

7 months ago
  • Locking is now supported on macOS. ILock interface is moved to ILock to ITHit.FileSystem.
  • Automatic locking implemented in WebDAV Drive for macOS. When a document is opened in macOS Finder it is automatically locked. The document is automatically unlocked when closed.
  • Manual locking added to WebDAV Drive for macOS. A document can now be locked and unlocked via macOS Finder context menu.
  • Error message is displayed in Windows samples if UserFileSystemRootPath is not indexed.
  • IFileSystemItemMetadataMac now provides UserInfo property to set context menu and tooltip to the icon.
  • IFileSystemItemMetadataMac now provides Decorations property to set item icon.

v7.1.23701.0

8 months ago
  • "Do Not Sync"/"Sync" menu is now available on macOS.
  • WebDAV Drive sample on macOS did not show thumbnails. This bug is now fixed.
  • Unused code deleted in macOS context menu implementation.

v7.1.23463.0-Beta

8 months ago
  • Method added to find items by remote storage ID in Windows version: Placeholders.TryFindByRemoteStorageId().

v7.1.23457.0-Beta

9 months ago
  • ISynchronizationCollection.GetChangesAsync() method implementation refactored in WebDAV Drive sample on Windows. Content and data is is now updated only if eTag is different from the one stored on the client.
  • If file or folder was created under the pinned folder changes were ignored. Now this bug is fixed.
  • IChangedItem interface now provides BeforeAction and AfterAction, called before and after change is applied in user file system on the client machine. This allows adding a custom processing code for each item, such as update of custom properties. savePropertiesAction parameter is removed from ProcessChangesAsync() method.
  • The Engine incorrectly called ISynchronizationCollection.GetChangesAsync() passing false for depth parameter on initial sync-token request on Windows. Now true is passed for the depth parameter.
  • WebDAV Drive sample on Windows may throw "Failed to set remote storage item id" Win32Exception "The operation failed due to a conflicting cloud file property lock.". This bug is now fixed.
  • WebDAV Drive sample on Windows may throw "Fetch data failed" FileLoadException "The process cannot access the file because it is being used by another process. (0x80070020)". This bug is now fixed.
  • WebDAV Drive sample on Windows may throw "Processing folder failed" DirectoryNotFoundException "Could not find a part of the path". This bug is now fixed.

v7.1.23321.0-Beta

9 months ago
  • Remote storage monitor queue processing refactored in WebDAV Drive for Windows and macOS samples. Message queue is now optimized to send only minimum number of changed requests to remote storage. The sample code is unified between Windows and macOS samples.
  • WebDAV Drive sample for macOS now requests changes from remote storage on application start and on web sockets reconnection.