Releases: ITHit/UserFileSystemSamples
Releases · ITHit/UserFileSystemSamples
v5.6.15918.0-Beta2
- Context menu on MacOS is now supported.
- New shell extension handler classes provided to run handlers in one process with the Engine: ThumbnailProviderHandlerIntegratedBase, CloudFilesContextMenuVerbIntegratedBase and CustomStateHandlerIntegratedBase classes provided. Virtual Drive and WebDAV Drive Samples updated to run shell extension handlers in one process with the main application.
- ZipFilter is provided. Now zip archiver is supported.
- Microsoft Excel and PowerPoint filters improved.
- Filtering refactored. Now both client to server sync and server to client operations are anow filtered in IEngine.FilterAsync() method.
- Microsoft Office / AutoCAD documents editing is now supported in Virtual File System sample and is supported both in remote storage and in user file system in all samples.
- Lock and Unlock commands in Virtual Drive and WebDAV Drive samples did not refresh status icons in the Windows Explorer. This bug is now fixed.
- ProcessAsync() erronously called IFileSystemItem.DeleteAsync()/MoveToAsync() methods before DeleteCompletionAsync()/MoveToCompletionAsync(). As soon as the delete/move operation can be canceled only if the Engine is running, now the DeleteCompletionAsync()/MoveToCompletionAsync() methods are only called from ProcessAsync().
- Incorrect operation type of OperationType.Delete was passed to FilterAsync() on DeleteCompletionsAsync() call. Now the correct OperationType.DeleteCompletion type is passed.
- The Win32Exception 0x80004005 "The cloud file metadata is corrupt and unreadable" may be thrown if the placeholder did not complete saving. This bug is now fixed.
- Create or update failed. DirectoryNotFoundException "The system can not find the path specified." error may be thrown on delete. This bug is now fixed.
- "Get moved item failed" Win32Exception "The cloud operation is invalid" can be thrown during synchronization. This bug is now fixed.
- Dehydration may throw exceptions if called for new files. This bug is now fixed.
v5.5.15752.0-Beta2
- Thumbnails on MacOS are now supported.
- Replacing GetPathByItemId() with TryGetPathByItemId() in Virtual File System and Virtual Drive sample.
v5.0.15216.0-Beta
- UnauthorizedAccessException 'Access to the path..' is denied exception during delete. This bug is now fixed.
- If 0-lenght file failed to set in-sync on creation, the file did not se in-sync at any later time in ProcessAsync() method. This bug is now fixed.
- EngineWindows.ProcessAsync() moved to EngineWindows.SyncService.Outgoing.ProcessAsync().
- IServerNotifications methods now do not update items if create/update/delate/move operation is in progress.
- PlaceholderItem.SetMetadataAsync() and IServerNotifications.UpdateAsync() methods now provide autoHydration parameter.
v5.0.14943.0-Beta
- User file system to remote storage synchronization service is now integrated with the EngineWindows. Periodical synchronization now starts by default every 10 sec.
- Folder Copy->Paste to virtual drive caused Win32Exception 'The file is not a cloud file', cased by child items being created before parent items. This bug is now fixed.
- If the Engine crushed or the drive deleted without cleanup and than recreated in the same location, the Engine may delete items in the remote storage on the next IEngine.StartAsync(true) call or during EngineWindows.ProcessAsync() call. This bug is now fixed.
- Context menu may throw exception on root folder in WebDAV Drive sample. Item identity may non be saved on the root item if the remote storage ID was never set. This bug is now fixed.
v5.0.14726.0-Beta
- All modules are now .NET Standard 2.0 compliant. All Windows samples can now run both .NET Framework 4.8 and .NET Core.
- Custom state provider C++ projects are replaced with C#/.NET projects.
- Thumbnails support is now built into Engine. Thumbnails handler shell extension base class is provided. Thumbnails are now generated in IFileSystemItem.GetThumbnailAsync() method implementation.
- Properties support is now built into Engine. Properties handler shell extensions base class is provided. Properties are now provided in IFileSystemItem.GetPropertiesAsync() method implementation.
- Context menu support is now built into Engine. Context menu handler shell extensions base class is provided. Context menu is now provided in IEngine.GetMenuCommandAsync() method implementation.
- WebDAV Drive and Virtual Drive projects now build a sparse package. Context menu is now supported when you run the WebDAV Drive and Virtual Drive projects directly from Visual Studio.
- Debug logging is provided. Debug logging can now be enabled in samples using the 'd' console key.
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.