Questions on preptool configuration XML file

Questions on preptool configuration XML file

Here are a FAQ related to the preptool configuration

In the preptool configuration XML file, Consider this setup for MacOS as an example:

<items installpath="."
runtimeloadpath="/Library/Frameworks/Adlm.framework/Versions/22a/Libraries"
runtimeloadname="libadlmact_libFNP.dylib">
<item path="libadlmact.dylib" />
</items>

 

  • How is the “installpath” attribute used?

           It is the path where the "runtimelibrary" has to be created by the prep tool by extracting from the .yaa  file.
          Mostly the "installpath" and "runtimeloadpath" should be same

 

  •  How is the “runtimeloadpath” attribute used?

           “runtimeloadpath” attribute is used to locate libadlmact_libFNP.dylib during runtime.

 

  • Besides an absolute path, can we also specify a relative path?

           Relative path might work and In Linux systems path starting with "~/" will also be expanded.

 

  • If it is possible to specify a relative path, what is this path relative to?

            This path is patched in the item using the libFNP.dylib in the case you have mentioned it will be patched in the "libadlmact.dylib", So it is relative                to the executable or the library item path.

 

  • Can we also use @rpath, @executable_path, and @loader_path when specifying the path?

           No, but environment variables can be used to achieve the same.

 

  • Can we specify more than one path to search for the dylib?

            This is not possible as of now.

 

Problem Statement

<items installpath="."
runtimeloadpath="."
runtimeloadname="libadlmact_libFNP.dylib">
<item path="libadlmact.dylib" />
</items> 

"runtimeloadpath" seems to be relative to the directory that launches the application and loads libadlmact.dylib.

For example, in a Terminal window, when  navigated to the home directory and launch the application, libFNP.dylib is not loaded but when it is placed in the same directory (not the home directory) as libadlmact.dylib. Instead, it is loaded when libFNP.dylib is placed in the home directory. How to fix this so that libFNP.dylib can loaded when it is placed in the same directory as libadlmact.dylib?

Solution

There are 2 ways:

One they can specify the hard coded path of libFNP.dylib in the "flxActCommonLibraryInit" instead of NULL as parameter.

Other way is that they have to get the path of the libadlmact.dylib during run time using some equivalent macos function calls like "GetMappedFileName" (in windows) and use that path to pass as parameter to the flxActCommonLibraryInit.

Was this article helpful? Yes No
No ratings
Version history
Revision #:
2 of 2
Last update:
‎Jan 27, 2021 03:58 AM
Updated by:
 
Contributors