Click or drag to resize

Licensing and Deployment

In most cases, applications built with DME Component Libraries are xcopy deployable. This means they can simply be copied to another machine and run. There is no registration step, and no changes to the registry are required. Once your application is built with a DME Component Libraries license, no additional licensing process is required to deploy the application to end-user machines. However, this does not mean that applications built with DME Component Libraries can be freely distributed.

While Software Development Kit licenses for DME Component Libraries can be obtained from AGI support, there are restrictions on how these licenses can be used:

  • We provide DME Component Libraries Software Development Kit for exploration of the API while you evaluate its appropriateness for your applications.

  • At the point that you decide to build applications for production testing, for others to use, for use on funded research, for deployment in corporate or operational environments, or for commercial resale, you must purchase the appropriate run-time licenses as described in the license agreement.

  • You may not distribute, license, lease, sell, transfer any of DME Component Libraries without the appropriate commercial license granted by AGI or other expressly granted permission by AGI.

  • You may not reverse assemble, reverse compile, translate or perform any other actions that violate standard software usage piracy laws.

  • In compliance with U.S. Export Control Regulations and Laws, you may not redistribute DME Component Libraries or a DME Component Libraries application to Cuba, Iran, Sudan, Syria, and North Korea.

  • See the full Software License Agreement, which is also included in the install media as DME Component Libraries License Agreement.pdf.

Simple Licensing

DME Component Libraries loads and validates its license at runtime. The way this works is as follows:

  • A license file named AGI.Foundation.lic (exactly) is loaded from the "root" (top level) of your application's classpath. This file is then parsed and checked for tampering, and the set of available licenses is read and used for license checking as needed.

  • You are responsible for ensuring that a valid license file is available at the root of your application's runtime classpath. The easiest way to do this is to embed the license file into your application's JAR.

Insight3D Deployment

As previously stated, in most cases applications built with DME Component Libraries are xcopy deployable. However, Insight3D depends on the Microsoft Visual C++ Redistributable for Visual Studio 2022, which should be installed on any system where you intend to run your application. For convenience, the installer, vc_redist.x64.exe, is included in the root directory of your DME Component Libraries installation.

The ability to load the required dependencies from the application directory ("app-local") is also technically possible, but due to the complexity is not described here. Contact AGI support if you have a need to deploy Insight3D applications without an installer on systems that cannot install the redistributable.

In addition to making sure that the DME Component Libraries JARs are in your CLASSPATH, you also need to make sure that agi.foundation.graphics.native.dll is in the JVM's library path. This DLL is found in the Jars directory of the DME Component Libraries distribution.

The easiest way to make sure that the necessary files and directories are in the JVM's library path is to put them in the current working directory from which you launch your application. In Eclipse, that can be accomplished by putting them directly into the root of your Eclipse project. Alternatively, you can specify the library path explicitly when launching the JVM from the command-line:

java -Djava.library.path=c:\path\to\directory\containing\agi.foundation.graphics.native.dll

Additionally, certain Insight3D features require third-party functionality from separate DLLs. Specifically, using videos as 2D textures requires FFmpeg video processing libraries (avcodec-58.dll, avformat-58.dll, avutil-56.dll, swresample-3.dll, swscale-5.dll), and MrSID imagery requires the LizardTech MrSID DSDK (Altidsdk_9.5.dll, Alb.dll).

These separate DLLs will be loaded when needed at runtime from the same directory as the Insight3D library (agi.foundation.graphics.native.dll).

Alternatively, if you don't use any functionality in Insight3D that requires the separate DLLs, you can skip this.

TIREM Deployment

The TIREM library includes an implementation named TiremPropagationModel which uses a native library to perform the calculation. As a result, use of this functionality requires dependencies to be installed on the system.

See the TIREM topic for more information.

Advanced Licensing

In certain advanced scenarios, the simple embedding of your license file may not be suitable. These include:

  • You are building a plugin for an application that may end up loading multiple plugins that use DME Component Libraries (yours and others) into the same classpath. In this case, the Licensing subsystem may discover the licenses embedded by the wrong plugin and fail at runtime.

The alternate licensing process is to call the Licensing.activateLicense method near the start of your application, before using any other DME Component Libraries functionality. This requires that you manually embed the contents of your license file(s) in your application so that they can be accessed as a string at runtime and passed to the activateLicense method. Because AGI license files are XML, you can simply paste the contents into your source code as a string. For example:

Java
Licensing.activateLicense(
        "<License>" +
        "  <Field name='Name'>Example Customer</Field>" +
        "  <Field name='Company'>Example Company</Field>" +
        "  <Field name='Note'>Not a Real License</Field>" +
        "  <Field name='Maintenance Expiration Date'>2025/12/31</Field>" +
        "  <Component name='Nonexistent Analysis Library' />" +
        "  <Signature>DRws/wLW81rjcOMp2Kk5k5U7uDJ234YN/qdWgb0lbzctUwAStN9RMO4qBiQPAVg2zgZIqelHBLc5TryqShHzxKugABd5Dn6jLYUHT0+NDoW/vKteZjMg74Phe68Kc1bqOabjnfp6iSgduMSxJJPMQX3aZPT+WC5r7c+/zrMMX+M=</Signature>" +
        "</License>");

The activateLicense method can be called multiple times, and the available licenses will be the "best superset" of the licenses supplied in all calls.

Licensing by Library

The table below is a complete list of all libraries and the licenses required by each. In most cases, each library requires a single license, plus licenses for all libraries it depends upon. However, there are some cases where some classes require an additional license beyond those of the rest of the library. These cases are listed below as well.

JAR

Licenses Required

agi.foundation.aircraftpropagation.jar

Dynamic Geometry Library, Aircraft Propagation Library

agi.foundation.cesium.jar

Dynamic Geometry Library

agi.foundation.communications.jar

Dynamic Geometry Library, Communications Library

agi.foundation.core.jar

Dynamic Geometry Library

agi.foundation.graphics.jar

Dynamic Geometry Library, Insight3D

agi.foundation.models.jar

Dynamic Geometry Library

(the following classes, and all classes derived from these classes, additionally require Segment Propagation Library: SegmentDefinition, SegmentList, SegmentListConfiguration, SegmentListPropagator, SegmentListResults, SegmentPropagator, SegmentResults, SegmentPropagatorConstraint, SegmentPropagatorConstraintEvaluator, SegmentPropagatorVariableEvaluator)

agi.foundation.navigation.jar

Dynamic Geometry Library, Navigation Accuracy Library

agi.foundation.navigation.advanced.jar

Dynamic Geometry Library, Communications Library, Navigation Accuracy Library

agi.foundation.orbitpropagation.jar

Dynamic Geometry Library, Orbit Propagation Library

agi.foundation.platforms.jar

Dynamic Geometry Library

agi.foundation.platforms.graphics.jar

Dynamic Geometry Library, Insight3D

agi.foundation.radar.jar

Dynamic Geometry Library, Radar Library

agi.foundation.routedesign.jar

Dynamic Geometry Library, Route Design Library

agi.foundation.segmentpropagation.jar

Dynamic Geometry Library, Segment Propagation Library

(the following classes additionally require Orbit Propagation Library: BasicLaunchSegment, ImpulsiveManeuverSegment)

agi.foundation.spatial.jar

Dynamic Geometry Library, Spatial Analysis Library

agi.foundation.terrainanalysis.jar

Dynamic Geometry Library, Terrain Analysis Library

agi.foundation.terrainreaders.jar

Dynamic Geometry Library

agi.foundation.tirem.jar

Dynamic Geometry Library, Communications Library, TIREM Library

agi.foundation.tracking.jar

Dynamic Geometry Library, Tracking Library

agi.foundation.tracking.graphics.jar

Dynamic Geometry Library, Tracking Library, Insight3D