Impact Acquire SDK C++
MSI Based Private Setup Routines
Note
This is the recommended way of redistributing the product driver files when the original driver package can't or shall not be used.

If your installation also uses the MSI technology this is the easiest way to distribute all the related files! All merge modules (*.msm-files) that belong to a certain version of Impact Acquire can be downloaded from the Balluff website (https://www.balluff.com) as a compressed archive.

After extraction these merge modules then can be included into your setup project as needed and you are done.

32-bit merge modules contain 32-bit code only while 64-bit merge modules contain everything that will allow running both 32-bit and 64-bit applications. The names of the merge modules belonging to Impact Acquire will use the following extensions:

  • *.msm (Will only contain 32-bit kernel code and/or 32-bit user-mode code. This file extension is also used for files that are not bound to a certain bitness like e.g. .NET related files)
  • *.x64.msm (Will contain 64-bit kernel code and/or 32- AND 64-bit user-mode code)

So to run 32-bit applications on a 32-bit version of Windows® only the 32-bit *.msm files shall be used and to run either 32- or 64-bit applications (or both 32- AND 64-bit applications) only the 64-bit *.x64.msm files shall be used. The only exceptions from this rule are third party merge modules (e.g. the OpenMP-runtime or the vc_redist files) where this is stated differently in the list of merge modules below. As an example what is inside a merge module let us consider the mvIMPACT_AcquireBaseLibs file:

  • mvIMPACT_AcquireBaseLibs.msm contains the 32-bit version of mvDeviceManager.dll, mvImageProcessing.dll and mvPropHandling.dll
  • mvIMPACT_AcquireBaseLibs.x64.msm contains the 32-bit AND the 64-bit version of mvDeviceManager.dll, mvImageProcessing.dll and mvPropHandling.dll. Both versions of the 2 libraries will be installed into the appropriate target directories

Common Merge Modules For All Device Families

This following section contains merge modules will be needed by any custom installer that shall support at least one Impact Acquire compliant device family:

Note
More merge modules than mentioned in this entire documentation are available! However these are typically not needed on a target system thus will not be discussed here. An example would be the merge module containing the API manuals. So if you are missing something here you would like to integrate in your installation, have a look at the extracted merge modules which are available as a separate download. You might find it there. If not get in touch with us as we might be able to help!
Impact Acquire low-level runtime
Name of the 32-bit merge module mvIMPACT_AcquireBaseLibs.msm
Name of the 64-bit merge module mvIMPACT_AcquireBaseLibs.x64.msm
Requirement Must be installed. In order to work with GenICam™ compliant devices some environment variables must be set as well (see Environment Variables below).
Impact Acquire .NET Framework runtime
Name of the merge module mvIMPACT_Acquire.NET.msm
Requirement Only needed if the target application has been written using the .NET Framework API of Impact Acquire. See here for the differences between the .NET Framework and the .NET Standard API.
Impact Acquire .NET Standard runtime
Name of the merge module mvIMPACT_Acquire.NET.Standard.msm
Requirement Only needed if the target application has been written using the .NET Standard API of Impact Acquire. See here for the differences between the .NET Framework and the .NET Standard API.
Impact Acquire Java runtime
Name of the 32-bit merge module mvIMPACT_AcquireJava.msm
Name of the 64-bit merge module mvIMPACT_AcquireJava.x64.msm
Requirement Only needed if the target application has been written using the Java API of Impact Acquire.
Impact Acquire Python runtime
Name of the merge module mvIMPACT_AcquirePython.msm
Requirement Only needed if the target application has been written using the Python API of Impact Acquire.
Impact Acquire tools prerequisites
Name of the 32-bit merge module mvIMPACT_AcquireExecutablesPrerequisites.msm
Name of the 64-bit merge module mvIMPACT_AcquireExecutablesPrerequisites.x64.msm
Requirement Needed if either mvIMPACT_AcquireTools shall be installed or the mvDisplay.dll is needed by the target application.
Impact Acquire tools
Name of the 32-bit merge module mvIMPACT_AcquireTools.msm
Name of the 64-bit merge module mvIMPACT_AcquireTools.x64.msm
Requirement Only needed if tools like ImpactControlCenter or DeviceConfigure shall be available

This merge module has configuration options: Define a property CREATE_DESKTOP_SHORTCUTS in your installation and pass the value of this property to the merge module if you want desktop icons to be created for the tools. See Installation Options further down in this chapter for additional details.

DirectShow support for Impact Acquire compliant devices
Name of the 32-bit merge module mvDirectShow_acquireDriver.msm
Name of the 64-bit merge module mvDirectShow_acquireDriver.x64.msm
Requirement Only needed if the DirectShow interface to Impact Acquire shall be available.
LabVIEW support for Impact Acquire compliant devices
Name of the 32-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter.msm
Name of the 64-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter.x64.msm
Requirement Only needed if devices shall be operated using the Impact Acquire framework via LabVIEW.
LabVIEW support for Impact Acquire compliant devices (Examples)
Name of the 32-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter_Examples.msm
Name of the 64-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter_Examples.x64.msm
Requirement Only needed if examples on how to operate devices using the Impact Acquire framework via LabVIEW shall be installed.
LabVIEW support for Impact Acquire compliant devices (Documentation)
Name of the 32-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter_Documentation.msm
Name of the 64-bit merge module mvIMPACT_Acquire_LabVIEW_Adapter_Documentation.x64.msm
Requirement Only needed if documentation on how to operate devices using the Impact Acquire framework via LabVIEW shall be installed.
VisionPro support for Impact Acquire compliant devices
Name of the 32-bit merge module mvIMPACT_Acquire_Cognex_Adapter.msm
Name of the 64-bit merge module mvIMPACT_Acquire_Cognex_Adapter.x64.msm
Requirement Only needed if devices shall be operated using the Impact Acquire framework via VisionPro
NeuroCheck 6 support for Impact Acquire compliant devices
Name of the 32-bit merge module mvIMPACT_Acquire_NeuroCheck6_Adapter.msm
Name of the 64-bit merge module mvIMPACT_Acquire_NeuroCheck6_Adapter.x64.msm
Requirement Only needed if the device shall be operated using NeuroCheck 6. Files will only be installed if an existing NeuroCheck 6 installation can be detected in at least one of the ProgramFiles folders
NeuroCheck 6.1 support for Impact Acquire compliant devices
Name of the 32-bit merge module mvIMPACT_Acquire_NeuroCheck6_1_Adapter.msm
Name of the 64-bit merge module mvIMPACT_Acquire_NeuroCheck6_1_Adapter.x64.msm
Requirement Only needed if the device shall be operated using NeuroCheck 6.1. Files will only be installed if an existing NeuroCheck 6.1 installation can be detected in at least one of the ProgramFiles folders

GenICam™ GenTL Device Specific

User-mode libraries
Name of the 32-bit merge module GenICamGenTLConsumer.msm
Name of the 64-bit merge module GenICamGenTLConsumer.x64.msm
Requirement Only needed when GenICam™ GenTL compliant devices shall be supported by the target application.
GenICam runtime
Name of the 32-bit merge module GenICamRuntime.msm
Name of the 64-bit merge module GenICamRuntime.x64.msm
Requirement Only needed when GenICam™ GenTL compliant devices shall be supported by the target application. The GenICam™ runtime needed to operate any device that complies with the GenICam™ standard that shall be used through the Impact Acquire capture framework.

GigE Vision™ Or USB3 Vision™ Devices

Note
This section applies to all GigE Vision™ as well as all USB3 Vision™ devices and all BVS CA-GT, BVS CA-GX (mvBlueCOUGAR-X), BVS CA-SF (mvBlueFOX3) and mvBlueCOUGAR-S devices in particular.
User-mode libraries
Name of the 32-bit merge module GenICamGenTLProducer.msm
Name of the 64-bit merge module GenICamGenTLProducer.x64.msm
Requirement Only needed when GenICam™ GenTL GigE Vision™ or USB3 Vision™ compliant devices shall be supported by the target application. To use the user-mode library as a GenTL Producer you must create or append the corresponding environment variables (see Environment Variables below).

GigE Vision™ Devices

Note
This section applies to all GigE Vision™ and all BVS CA-GT, BVS CA-GX (mvBlueCOUGAR-X(D)) and mvBlueCOUGAR-S devices in particular.
Kernel-mode driver
Name of the 32-bit merge module mvGigECaptureDriver.msm
Name of the 64-bit merge module mvGigECaptureDriver.x64.msm
Requirement Should be installed for optimal performance. Needs additional work (the GigE Vision™ capture filter driver must be installed either by using the GigEConfigure tool or another appropriate method). See Non-MSI based section about installing the GEV driver for details.
GigE Vision™ specific tools
Name of the 32-bit merge module mvGigETools.msm
Name of the 64-bit merge module mvGigETools.x64.msm
Requirement Should be installed for optimal performance. Contains tools that can be used to install/remove/enable/disable the GigE Vision™ capture filter driver and to set up GigE Vision™ compliant devices. In order to automatically install the driver some environment variables must be set (see Environment Variables below).

This merge module has configuration options: Define a property CREATE_DESKTOP_SHORTCUTS in your installation and pass the value of this property to the merge module if you want desktop icons to be created for the tools. Define a property FILTER_INSTALL_PARAMS and feed it with a string containing arbitrary command-line parameters to be sent to GigEConfigure when starting the system the next time. See Installation Options further down in this chapter for additional details.

Technical manuals for GigE Vision™ devices
Name of the 32-bit merge module mvBlueCOUGARDocumentation.msm
Name of the 64-bit merge module mvBlueCOUGARDocumentation.x64.msm
Requirement Only needed if technical manuals for BVS CA-GT, BVS CA-GX (mvBlueCOUGAR-X) and mvBlueCOUGAR-S devices shall be available

USB3 Vision™ Devices

Note
This section applies to all USB3 Vision™ and all BVS CA-SF (mvBlueFOX3) devices in particular.
Kernel-mode driver
Name of the 32-bit merge module mvUSB3VisionKernelDriver.msm
Name of the 64-bit merge module mvUSB3VisionKernelDriver.x64.msm
Requirement Must be installed for USB3 Vision™ support.
Technical manuals for USB3 Vision™ devices
Name of the 32-bit merge module mvBlueFOX3Documentation.msm
Name of the 64-bit merge module mvBlueFOX3Documentation.x64.msm
Requirement Only needed if technical manuals for BVS CA-SF (mvBlueFOX3) devices shall be available

PCIe Devices

Note
This section applies to all BVS CA-BN devices.
Kernel-mode driver and GenTL Producer
Name of the 32-bit merge module So far a 32-bit version of this device driver doesn't exist!
Name of the 64-bit merge module BVS_CA-BNDriver.x64.msm
Requirement Must be installed to work with BVS CA-BN devices.
Technical manuals for BVS CA-BN devices
Name of the 32-bit merge module BVS_CA-BNDocumentation.msm
Name of the 64-bit merge module BVS_CA-BNDocumentation.x64.msm
Requirement Only needed if technical manuals for BVS CA-BN devices shall be available. Please note that right now a 32-bit driver for BVS CA-BN devices doesn't exist!

USB2 Devices

Note
This section applies to all BVS CA-MLC, BVS CA-IGC and mvBlueFOX devices.
Kernel-mode driver
Name of the 32-bit merge module mvBlueFOXKernelDriver.msm
Name of the 64-bit merge module mvBlueFOXKernelDriver.x64.msm
Requirement Only needed when BVS CA-MLC, BVS CA-IGC or mvBlueFOX devices shall be supported by the target application.
User-mode driver
Name of the 32-bit merge module mvBlueFOXDriver.msm
Name of the 64-bit merge module mvBlueFOXDriver.x64.msm
Requirement Must be installed to work with BVS CA-MLC, BVS CA-IGC or mvBlueFOX USB2 devices
Technical manuals for BVS CA-UB, BVS CA-MLC, BVS CA-IGC or mvBlueFOX USB2 devices
Name of the 32-bit merge module mvBlueFOXDocumentation.msm BVS_CA_UBDocumentation.msm
Name of the 64-bit merge module mvBlueFOXDocumentation.x64.msm BVS_CA_UBDocumentation.x64.msm
Requirement Only needed if technical manuals for BVS CA-UB, BVS CA-MLC, BVS CA-IGC or mvBlueFOX devices shall be available

Virtual Devices

User-mode driver
Name of the 32-bit merge module mvVirtualDeviceDriver.msm
Name of the 64-bit merge module mvVirtualDeviceDriver.x64.msm
Requirement Only needed when Impact Acquire virtual devices shall be available on the target system
Technical manuals for mvVirtualDevice devices
Name of the 32-bit merge module mvVirtualDeviceDocumentation.msm
Name of the 64-bit merge module mvVirtualDeviceDocumentation.x64.msm
Requirement Only needed if technical manuals for mvVirtualDevice devices shall be available

Running Customized Impact Acquire MSI Installers From Other Installation Frameworks

If other installation frameworks such as Inno Setup or NSIS (Nullsoft Scriptable Install System) are used then sometimes using merge modules (*.msm files) is not an option as it is not supported by the installation framework. In such cases there are 3 ways to go:

  • Directly ship all the Impact Acquire MSI packages that contain drivers that shall be installed on the target system
  • Embed all the original Impact Acquire MSI packages that contain drivers that shall be installed on the target system into the installer of the client application and run the installers during the installation of the application. Since all recent releases of Impact Acquire use burn bundles as their main distribution method and MSI file must be extracted from the bundle before embedding it again. This can be achieved using the dark.exe tool that comes as part of the WiX toolset.
  • Embed all the files belonging to the Impact Acquire framework that are needed to access the hardware that shall run on the target system into the installer of the client application. This approach is covered in the next section

How to launch an installation from another installation with no user interaction has been already discussed in chapter Installation Options. However when the Impact Acquire installers are embedded into another installation simply running these installers might no always result in only the desired files being installed but also the header files, documentation and other features unwanted on a defined target system.

Assuming the MSI version of the Impact Acquire framework shall be extracted from the burn bundle (*.exe) this could be achieved like this:

dark.exe -x <pathForExtractedOutput> ImpactAcquire-x86_64-3.5.0.exe

Now only installing the files needed by an application does require to modify one or more of the following properties when launching the MSI version of the Impact Acquire installation:

  • ADDLOCAL (The value of the ADDLOCAL property is a list of features that are delimited by commas, and are to be installed locally)
  • REMOVE (The value of the REMOVE property is a list of features delimited by commas that are to be removed. These refers to features which are already installed on the target system, thus this property can be used to remove one or more features of a certain package)
  • INSTALLLEVEL (The INSTALLLEVEL property is the initial level at which features are selected "ON" for installation by default)

For details refer to the documentation about these properties in the MSDN (http://msdn.microsoft.com).

One way to go would be to switch off ALL features by setting the INSTALLLEVEL property to 0 and then add all those features needed by the application by providing a list of these features to the ADDLOCAL property:

When running the Impact Acquire installer with the following command line

msiexec /i ImpactAcquire-x86_64-3.5.0.msi INSTALLLEVEL=0 ADDLOCAL="ImpactAcquireCommonRuntime,VirtualDeviceCaptureDriver"

results in the following features being pre-selected:

To obtain the names of the features to be installed any tool that can analyze an MSI-files database can be used. The following screenshot was taken by Orca, which is a tool for authoring MSI files that can be downloaded from Microsoft™ free of charge.

On the other hand to remove one or more features belonging to a known installer on the target system can be accomplished using the REMOVE property. So to e.g. remove the .NET support and the technical manual for mvBlueFOX devices the following command line can be used:

msiexec /i ImpactAcquire-x86_64-3.5.0.msi REMOVE="USB2TechnicalManuals,DotNETSupport" /quiet