HeaderPane
Main
Hide
Share Link
Print

Distributing SftMask/OCX

This section describes the preferred distribution method when shipping SftMask/OCX with your application. This method follows Microsoft's guidelines on ActiveX control distribution. While these guidelines are not enforced, it is highly recommended that they are followed as outlined here. This ensures that your application can be safely installed and use SftMask/OCX even if another vendor has already installed an application which also uses SftMask/OCX.

Supported platforms include Windows 10, Windows 11 and their server editions.

Installing SftMask/OCX (for an Application)

When distributing SftMask/OCX with your application, only the following files can be distributed with your application royalty-free. These files allow the use of the control with your application. The design-time interface is no longer available once SftMask/OCX is shipped with your application. For additional information regarding distributing this control with your application, see the license agreement.

Required Files

Important: Redistributable files are located in the SftMask/OCX installation directory (\Program Files (x86)\Softelvdm\SftMask OCX 8.0\Redist).

The OLE system files used by ActiveX controls (Oleaut32.dll and others) are part of Windows and must not be distributed. These files must be shipped with your application if SftMask/OCX is used:

File NameTarget FolderDescription
SftMask_IX86_U_80.ocxSee Control Target Directory belowRequired for 32-bit applications. SftMask/OCX control. When distributing a managed .NET application compiled for "Any CPU", the 32-bit and 64-bit control must be distributed.
SftMask_x64_U_80.ocxSee Control Target Directory belowRequired for 64-bit applications. SftMask/OCX control. When distributing a managed .NET application compiled for "Any CPU", the 32-bit and 64-bit control must be distributed.
Softelvdm.OCXHelperV2.dllSee SftHelperComponent Target Directory belowRequired for managed .NET applications ONLY. This .NET component is required when distributing managed .NET applications. It is not used for other (unmanaged) languages, like VC++. This file requires the .NET Framework 4.0 runtime or newer. Windows 10 and Windows 11 include .NET Framework 4.8. If your application is a managed .NET application, this file needs to be distributed with your application.
Softelvdm.NETHelper.dllApplication FolderRequired for .NET 4.0 and above ONLY - Applications compiled for "Any CPU" or "x86". This dll is required when distributing managed .NET applications. It is not used for other (unmanaged) languages, like VC++. This file is required if your application uses the .NET 4.0 runtime or newer and is compiled for "Any CPU" or "x86". If your application is compiled for "Any CPU" you will need both Softelvdm.NETHelper.dll and Softelvdm.NETHelper_x64.dll. If your application uses the 2.0 runtime or is compiled for "x64", this file can optionally be distributed with your application, but it is not required.
Softelvdm.NETHelper_x64.dllApplication FolderRequired for .NET 4.0 and above ONLY - Applications compiled for "Any CPU" or "x64". This dll is required when distributing managed .NET applications. It is not used for other (unmanaged) languages, like VC++. This file is required if your application uses the .NET 4.0 runtime or newer and is compiled for "Any CPU" or "x64". If your application is compiled for "Any CPU" you will need both Softelvdm.NETHelper.dll and Softelvdm.NETHelper_x64.dll. If your application uses the 2.0 runtime or is compiled for "x86", this file can optionally be distributed with your application, but it is not required.

GDI+ (Optional)

Certain features of the control require GDI+ support. GDI+ is available automatically on all supported Windows platforms.

If GDI+ support is not available, the features are simply disabled and alternate presentation methods are used, if necessary.

Control Target Directory

Depending on the target operating systems, one of the following target directories can be chosen.

A) Windows\System(32)

Installing the ActiveX control into the Windows\System32 directory (or Windows\SysWOW64 for 32-bit controls on Windows x64) is possible on all supported Windows platforms.

The setup program you provide with your application should install the SftMask/OCX control SftMask_IX86_U_80.ocx into the Windows System32 directory. The Windows System directory name can be found using the GetSystemDirectory API function. The directory is usually named C:\Windows\System32 (or Windows\SysWOW64 for 32-bit controls on Windows x64).

The control is installed into the Windows/System32 directory and registered using proper versioning and reference counting of the OCX file (usually automatic, with most commercial installers).

B) Application Directory

An ActiveX control can be installed in the application directory using DLL/COM redirection.

DLL/COM redirection is activated on an application-by-application basis by the presence of a ".local" file. The ".local" file is an empty file in the same directory as the application's .exe file, with the same name as the application's .exe file with ".local" appended to the end of the name.

For example, to activate DLL/COM redirection for an application called "SampleApp.exe", create an empty file called "SampleApp.exe.local" in the same directory where SampleApp.exe is installed.

"Registration-Free Activation" (see below) can be used, which eliminates the need for the ".local" file.

Once DLL/COM redirection is activated, whenever the application loads a DLL or an OCX, Windows looks first for the DLL or OCX in the directory where the application's .exe file is installed. If a version of the DLL or OCX is found in the directory where the application's .exe file is installed, the application uses it regardless of any directory path specified in the application or the registry. If a version of the DLL or OCX is not found in the directory where the application's .exe file is installed, the normal search path or server path is used.

Even if DLL/COM redirection is used, the control must be registered during installation (see "Registering SftMask/OCX" below). The control must be installed into the Windows/System(32) directory and registered using proper versioning and reference counting of the OCX file (usually automatic, with most commercial installers). In addition, a private copy in your application directory is always installed (but not registered), along with the application's ".local" file.

SftHelperComponent Target Directory

The SftHelperComponent (see "Using SftMask/OCX with .NET") is used by .NET applications. Earlier releases of SftMask/OCX required this component to be registered using Regasm.exe for COM Interop. This is no longer required. Simply copy the file Softelvdm.OCXHelperV2.dll to one of the following locations. They are listed in the order they are searched.

Softelvdm.OCXHelperV2.dll:

  • Same folder where the ActiveX control is installed (see Control Target Directory above)
  • \Program Files\Common Files\Softelvdm\Softelvdm.Controls or \Program Files (x86)\Common Files\Softelvdm\Softelvdm.Controls (32-bit applications on 64-bit Windows versions only)
  • \Windows\System32 or \Windows\SysWow64 (32-bit applications on 64-bit Windows versions only)

The actual path (\Program Files or \Windows) may differ due to localization.

Version Control

The setup program should only install the SftMask/OCX files if the version number in the new files is higher than the files already installed. Maintenance releases of the product are fully upward compatible and are guaranteed to have a newer version number. New versions of the product will use new file names and new GUIDs so there will be no conflict between different (major) versions, such as 6.5, 7.0 and 8.0.

Reference Counting

When installing DLLs or OCX files into a "shared" location, such as the Windows\System32 or \Windows\SysWOW64 directory, proper reference counting must be performed, to ensure that the file isn't uninstalled until all applications making use of the DLL or OCX have also been uninstalled. Reference counting is generally available with most commercial installers. The Windows Registry contains a count of all such shared files in the following Registry location:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs

Registering SftMask/OCX

Depending on the target operating systems, one of the following ActiveX/COM registration methods can be selected.

A) Windows Registry

Registering the ActiveX control in the Windows Registry is possible on all supported Windows platforms.

The setup program should register SftMask/OCX in the Windows registration database (Registry). This can be done manually using Regsvr32.exe which is discouraged. Many commercially available setup programs can register SftMask/OCX during the installation of your application. Please keep in mind that 64-bit versions of Windows have two versions of RegSvr32.exe. \Windows\System32\RegSvr32.exe is used to register 64-bit controls and \Windows\SysWOW64\RegSvr32.exe is used to register 32-bit controls. RegSvr32.exe must be run with elevated privileges as administrator.

SftMask/OCX is a self-registering ActiveX control. By using the LoadLibrary Windows API function, the GetProcAddress API can be used to obtain the DllRegisterServer function. By calling this function, the SftMask/OCX control will register itself with the Windows registration database (Registry). Most commercially available setup programs have support for this built-in. Check the documentation of your setup application for information on how to install ActiveX controls. Please keep in mind that an application using the LoadLibrary API can only load the control of the same machine type, meaning a 32-bit application can only load and register 32-bit controls, a 64-bit application can only load 64-bit controls.

The following files need to be registered in this manner:

File NameDescription
SftMask_IX86_U_80.ocxRequired for 32-bit applications. SftMask/OCX control
SftMask_x64_U_80.ocxRequired for 64-bit applications. SftMask/OCX control

B) Registration-Free Activation

It is possible to deploy this ActiveX control using "Registration-Free Activation". Registration-free activation allows distribution of the control without the requirement to register the ActiveX control in the Windows Registry (using REGSVR32 or a Setup application). Registration-free activation is supported by the operating system, so the .NET run-time is not required for registration-free activation.

By using registration-free activation, true XCOPY deployment is possible. Your application uses its own copy of the control. Versioning, reference counting and registration of the control are completely eliminated and other installed versions of the control cannot interfere with your application.

By using an application manifest and copying the OCX file SftMask_IX86_U_80.ocx into your application directory, the ActiveX control is automatically registered when it is used the first time. Your application manifest must include the comClass and typelib definitions shown below. These ensure that your application automatically registers the control and uses the control located in your application directory, regardless of any other controls or other versions of the same control already installed or in use.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0" processorArchitecture="x86" name="SoftelvdmInc.SftMask80.Sample.exe" type="win32" />
 <description>SftMask Sample Application</description>
 <dependency>
  <dependentAssembly>
   <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0"
   processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" />
  </dependentAssembly>
 </dependency>

 <file name="SftMask_IX86_U_80.ocx">
  <comClass description="SftMask/OCX 8.0 Masked Edit Control" clsid="{{68AD7894-0187-4683-8951-D9D867DCFDB4}}"
   threadingModel="Apartment"
   miscStatus="setclientsitefirst,alignable,activatewhenvisible,insideout,cantlinkinside,recomposeonresize"
   progid="SftMaskOCX80.SftMask.1" tlbid="{{86E033FE-C5C7-4FAB-9D2A-831FD5089954}}"/>
  <typelib tlbid="{{86E033FE-C5C7-4FAB-9D2A-831FD5089954}}" version="8.0" helpdir=""/>
 </file>
</assembly>

Testing a Setup Program

If you test the installation of your application's Setup program on a system where the development version of SftMask/OCX is installed, you may notice that you can no longer use SftMask/OCX in your development environment. This is caused by the fact that your Setup program installed a "run-time only" control on your system, which has replaced the "design-time" or development version of SftMask/OCX. You can reinstate (or re-register) the design-time version of SftMask/OCX by using the program entry "Maintenance, Register SftMask OCX in Windows Registry" in the SftMask OCX 8.0 program group.


Last Updated 11/15/2026 - (email)
© 2026 Softel vdm, Inc.