Deployment Instructions

CBFS Shell is supported on Windows 7 and later on x86, x64, and ARM64 processors.

CBFS Shell includes a .NET library with the component logic and a native proxy library (DLL) that is loaded into the Windows Shell processes; both must be distributed to deployment machines.

The CBFS Shell .NET Assembly (callback.CBFSShell.dll) is located in the lib directory of the installation. This directory contains libraries compiled for specific target frameworks such as .NET Framework 4.7, .NET Standard 2.0, and .NET 6. All versions of the assembly are compiled as "Any CPU" and the same binary supports x86, x64, and ARM64 processes.

The Proxy library (DLL) is located in the proxy directory of the installation; the proxy library is compiled for specific processor architectures and is named as follows:

  • CBFSShell.<Id>.x86.dll
  • CBFSShell.<Id>.x64.dll
  • CBFSShell.<Id>.ARM64.dll
The <Id> portion of the proxy DLL name is a unique identifier tied to the license.

Note: On x64 and ARM64 systems, it is necessary to include the proxy DLLs for other platforms (x86 on x64 systems, x86 and x64 on ARM64 systems) because on those systems, processes that have different architectures (including File Explorer) may be executed. If those processes use the Shell (such as common file dialogs), it is important that the proxy DLL with the corresponding architecture is available. The Install method of the components takes care of multiple architectures of the same proxy DLL.

Installation

When distributing your CBFS Shell application, it is essential to prepare the target machine by calling the Install method. This should be invoked from installers rather than directly from the main application. For instance, it should be called from an install function or wizard.

The installation step enables your application to leverage the full functionality of ShellFolder or ShellMenu. Once this part is completed, remember to restart Windows File Explorer. This will rebuild the structures of the Windows Shell and allow users to find the namespace or menu.