This window is reachable from the File Types options page. Use it to edit the file patterns that determine which type of comparison window to use to compare files.
This field shows the type of comparison that should be opened for files whose name matches the pattern in the Pattern field.
Enter one or more semicolon-separated patterns that match the names of files that should be compared using the comparison type shown above. For example, you could use *.bmp;*.gif;*.jpg;*.png to match image files.
Enter an optional filter program to be used to filter file content when files matching the Pattern are opened or saved. Filter programs enable Merge to compare the contents of files in formats that it would otherwise not understand.
The table below lists the various possible ways in which a filter program can be implemented. It also describes what should be provided in the Filter program field in each case.
|Filter implementation||Field value|
|Binary executable||Path to executable|
|Script||Path to script|
|DLL exporting function||Path to DLL|
|DLL providing an in-process COM object||Object CLSID|
Binary executable, script, or DLL filters located in the Araxis Merge installation folder’s
Filters subfolder do not require a fully-qualified path. User-provided binary executables, scripts, or DLLs can either be copied into that folder or located elsewhere. In the latter case, a fully-qualified path to the filter program should be entered into this field.
Implementing binary executable or script filters
When a binary executable or script is defined as the filter program, that program is run with an option flag and three filename arguments:
- The option flag will be either
-rto indicate that a forward (when reading a file) or reverse (when writing to a file) transformation is required.
- The first filename argument specifies the path of a file containing the data to be transformed by the filter program.
- The second filename argument specifies a file into which the transformed data should be written.
- The third filename argument specifies a file containing keys and values describing the transformation being performed. Comments within the file describe the data contained therein.
If the filter executable or script is unable to operate on the input file provided by Merge (if reverse transformations are not supported, for example), it should write an error message to standard error and return a non-zero exit code.
Merge may run multiple instances of the binary executable or script simultaneously. Filter programs must therefore be written accordingly.
Implementing DLL-based filters
DLL-based filters can be written either as in-process COM objects or as DLLs that export a specific named function.
An example implementation of both types of DLL-based filter can be found in the
AutomationSamples/Cpp/win32/ROT13Filter subfolder within the Araxis Merge installation folder.
Both types of DLL-based filter accept an object that implements the ITransformFilterInformation interface. This object’s properties are intended to provide the same information as the filter options that binary executable and script filter programs are given, as described above.
For languages that prefer to import a COM type library,
merge.tlb can be imported from the Araxis Merge installation folder. For C/C++, a
merge.h header file can be found in the
AutomationSamples/Cpp/Idl subfolder within the Araxis Merge installation folder.
COM-object filters should implement the ITransformFilter interface.
If the object is unable to operate on the input file provided by Merge, it should return an
HRESULT indicating the error. Additional error information, including a message to be provided to the user, may be provided using the standard COM
IErrorInfo mechanism. If an error message is not provided, Merge will create one based on the returned error code.
Each instance of the filter object will be used only by a single thread. The DLL must nevertheless support multiple concurrent instances and threads, since it is possible that Merge may have many threads simultaneously creating and using instances of the object. Apartment-threaded or free-threaded models are recommended.
If a filter is to be provided by exporting a function from the DLL, that function should have the following signature:
EXTERN_C STDAPI Transform(ITransformFilterInformation* information, BSTR* error)
If the function is unable to operate on the input file provided by Merge, it should return an
HRESULT indicating the error. An additional error message to be shown to the user may be provided using the
BSTR* error output parameter. If an error message is not provided, Merge will create one based on the returned error code.
The exported function may be called by multiple Merge threads simultaneously. It must therefore be fully re-entrant.