Releases: ITHit/UserFileSystemSamples
Releases · ITHit/UserFileSystemSamples
v4.4.14432.0
- Sample shell extension project did not compile. Incorrect references references in C++ project. This bug is now fixed.
v4.4.14419.0
- IBatch interface provided. When the EngineWindows.ProcessAync() is called and this interface is implement on the Engine object, this interface is called instead of the IFileSystemItem, IFile and IFolder interfaces to process all items created, updated, moved and deleted in the virtual file system.
- Now all IFileSystemItem, IFile and IFolder, ILock, IClientNotification interface methods provide a cancellation token parameter. A cancellation is fired on Engine.StopAsync() method call.
- On Windows the cancelation token passed to IFolder.GetChildrenAsync() and IFile.ReadAsync() methods is now automatically fired by the platform after 60sec timeout.
- The Engine.StopAsync() call now cancels EngineWindows.ProcessAsync() method and all IServerNotifications interface methods.
- Listing performance improved on Windows platform. The IFolderListingResultContext ReturnChildrenAsync() can now return over 100K items in one block on the average machine from IFolder.GetChildrenAsync().
- IConfirmationResultContext.ReturnErrorResult() now can return error code, defined in CloudFileStatus enum.
- EngineWindows.ProcessAsync() method performance improved.
- IFile.OpenAsync(), IFile.CloseAsync() and IFile.ValidateDataAsync() methods are moved to ITHit.FileSystem.Windows.IFileWindows interface.
- Thumbnails handler is now registered when the VirtualDrive project run directly (not via packaging project).
- Placeholders.TryGetItem() method provided.
- If folder listing failed to complete successfully the Win32Exception (380): "The cloud operation is invalid." exception is thrown when engine is started the next time. The Engine failed to distinguish between new and existing items. Now new and existing items are distinguished correctly under any circumstances.
- If Engine.StopAsync() is called during ProcessAsync() call and the hydration was in progress the "Hydration/Dehydration failed." error is logged. Now now errors are logged if engine is stopped when hydration is in progress.
- Incorrect operation type OperationType.List was passed to Engine.FilterAsync() before calling IFile.ReadAsync() method. Now the correct OperationType.Hydrate enum value is passed.
v4.3.12907.0-Beta2
- Status of the operation can now be reported to the Engine without throwing an exception. The IFile.WriteAsync(), IFolder.WriteAsync(), IFolder.CreateFileAsync() and IFolder.CreateFolderAsync() methods now provide a new IInSyncResultContext parameter parameter to explicitly set the in-sync status of the item. The resultContext parameter of the IFileSystemItem.MoveToCompletion() and IFileSystemItem.DeleteCompletion() methods now implement IInSyncResultContext interface.
- Placeholders.GetRootItem() method added.
- Deleted items processing in Engine.ProcessAsync() performance improved.
- New items were treated as existing by the Engine.ProcessAsync() method. The IFile.WriteAsync() method was called for new items. Now this bug is fixed.
- gRpc channel did not work if package is installed for more than one user on the same machine. Thumbnails and custom columns does not work in Windows Explorer. Now the gRpc channel is unique per user.
- PlaceholderItem.GetCustomData() method and IFileSystemItemMetadata.CustomData property are removed (replaced with PlaceholderItem.properties dictionary).
- IServerNotifications.MoveToAsync() returned false even if the file is successfully moved. Now this bug is fixed.
v4.2.12691.0-Beta2
- The Engine can now process items that were changed when the Engine was not running. Created, updated, moved, deleted, pinned and unpinned items are now synched from the user file system to the remote storage on Engine start.
- The IClientNotificationsWindows interface is removed. The user file system to remote storage synchronization is now performed by EngineWindows.ProcessAsync() method call.
- CustomStateHandler is implemented in WebDAV Drive sample.
- On Windows 11 the ReportProgress() method throws System.Runtime.InteropServices.COMException: 0xDDE0DBB0. This bug is now fixed.
- On Windows 11 the PlaceholderItem.SetRemoteStorageItemId(itemId) method call throws System.AccessViolationException: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt.". This bug is now fixed.
v4.1.12172.0-Beta2
- Transactional save operations are now supported by the Engine core. Microsoft Office, AutoCAD can now save documents, no file system monitoring or external storage is required. The sample code was simplified and refactored. The virtual Drive sample is now using a remote storage ID.
- A new dictionary-based custom properties system is provided. Now custom data of unlimited size can be associated with any file and survive transactional save operations.
- New CustomStateHandler implemented. Windows Explorer now requests properties via web sockets when properties are requested by Windows Explorer.
- The file content was blocked for writing when IFile.WriteAsync() method is called. Now file content is not blocked for writing anymore. Microsoft Office Word file content can be synced to the remote storage on every Microsoft Word save or on unlocking event. All samples are now configured to save content to remote storage on every update.
- The FilteredDocsMonitor class is removed from the sample code. Now when the item needs to be converted back to the placeholder after MS Office/AutoCAD transactional save operation or after the removal of the attributes (typically by Notepad++), the IFolder.CreateFileAsync() method is called by the Engine.
- The IClientNotificationsWindows.UpdateAsync() call now can throw ClientLockFailedException exception if the item is being created/updated/locked/unlocked from another thread. Previously the UpdateAsync() call just logged the message. Now both IClientNotificationsWindows.CreateAsync() and IClientNotificationsWindows.UpdateAsync() methods have identical ClientLockFailedException semantics.
v4.0.11399.0-Beta
- The hydration policy is set to Full in all samples. Opening mp4 files by Windows Movies & TV app is now supported.
- Throwing any exception in IFile.ReadAsync() resulted in file download hanging. Now the download is cancelled if any exception is thrown in IFile.ReadAsync() method implementation.
- ITransferDataResultContext.ReportStatus() call throwed NotImplemntedException. Now the ReportStatus() is implemented.
v4.0.11250.0-Beta
- WebDAV Drive Sample now supports thumbnails mode.
- Common.Windows.Core sources were missing. Now this bug is fixed.
- The NullReferenceException may be thrown in context menu shell extension in WebDAV Drive and Virtual Drive samples when context menu is called on empty space or when no items are selected in Windows Explorer. Now this bug is fixed.
v4.0.11187.0-Beta
- Packaging project is added in WebDAV Drive sample.
- Lock/Unlock menu in Windows Explorer is added in WebDAV Drive sample.
- The item did not delete in remote storage when moved outside of the user file system. Now the item is deleted in all samples.
- The folder is now marked as in-sync inside the MoveToCompletionAsync() call in all samples.
- Folder move (Cut-Paste) from virtual disk to local file system throws exception in remote storage monitor. Now this bug is fixed.
- Remote storage to user file system sync service in Virtual Drive and WebDAV Drive samples failed with DirectoryNotFoundEcxception 'Could not find part of the path' exception in case a regular folder (typically new folder) was found in folders hierarchy in user file system. Now this bug is fixed.
- User file system to remote storage sync service in Virtual Drive and WebDAV Drive samples did not sync new folders to remote storage. Now this bug is fixed.
- User file system to remote storage sync service in Virtual Drive and WebDAV Drive samples did not mark folders as in-sync after rename. Now folders are marked as in-sync after successful call to Folder.WriteAsync().
- UnauthorizedAcessException "Access to the path '' is denied" was thrown by the Engine during folder move/rename operation. ILock.UnlockAsync() was not called on folder if it implemented ILock. Now this bug is fixed.
- Crating and than moving/renaming a folder in user file system in WebDAV Drive sample left the folder in the not-in sync state after rename. The folder was not marked as not new after the creation. Now this bug is fixed.
v4.0.10902.0-Beta
- Deleting a file or a folder failed. Deleting a file or folder in Windows Explorer failed with the "The cloud operation was unsuccessful" error. Now, this bug is fixed.
v4.0.10891.0-Beta
- Full synchronization added to Virtual Drive and WebDAV Drive samples.
- The file/folder is now left in the not In-Sync state after the move operation. Rolling back changes made in v4.0.10312.0 Beta.
- The file did not auto-unlock after IClientNotifications.UpdteAsync() call. Now is auto-unlocked.
- Sample Lock/Unlock context menu was displayed on all Cloud Filter API-based drives, such as OneDrive. Now this bug is fixed.
- IEngine.FilterAsync() was not called inside IClientNotifications.UpdateAsync() method for Locking and unlocking. Now FilterAsync() is called for locking and unlocking.
- OperationType.Unlock added.
- Detetion code in Virtual File System and WebDAV Drive samples moved from DeleteCompletionAsync() to DeleteAsync().
- Logging refactored.
- Adding start/stop console commands for engine, remote storage monitor and full sync service in all samples.
- FileLoadException "the process can not access the file because it is being used by another process." may be thrown during hydration and dehydration if the file is blocked. Now the info message is logged by the Engine instead of throwing an exception.