Deployment Instructions

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

CBFS Shell includes two user-mode libraries (DLLs) with the class logic and a native proxy library (DLL) that is loaded into the Windows Shell processes; both must be distributed to deployment machines.

The user-mode library comes in two pieces, both of which must be deployed with the application:

  • A Python module named cbfsshell.py.
  • A native dynamic library (unmanaged), named pycbfsshell24.dll, available for both 32-bit (x86) and 64-bit (x64) processor architectures.

In addition to the main dynamic library, this product requires a secondary DLL named callback.CBFSShell.dll to be deployed. It is present in the same directory where the main dynamic library is, and must be deployed into one directory with the dynamic library.

Both the module, the secondary DLL, and the native library are included in the product's Python package, <install_dir>\cbfsshell-24.0.xxxx.tar.gz, which should be installed using pip: cd C:\path\to\install_dir python -m pip install cbfsshell-24.0.xxxx.tar.gz

Once the product's Python package has been installed, the module can be imported and used: from cbfsshell import *. Nothing else is required to deploy the application.

As an alternative to installing the module using pip, you can utilize the built-in setuptools module to package the module for deployment or install it to the machine. python setup.py build --build-lib=<app_dir> The above setup command packages the module and native library for deployment. A folder is created in the app_dir directory with the module and the native library packaged inside.

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 classs 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.