Licensing and Deployment

In most cases, applications built with STK Components 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 an STK Components license, no additional licensing process is required to deploy the application to end-user machines. However, this does not mean that applications built with STK Components can be freely distributed.

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

• We provide the STK Components 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 the STK Components 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 STK Components or an STK Components application to Cuba, Iran, Sudan, Syria, and North Korea.

• See the full Software License Agreement, which is also included in the install media as STK Components License Agreement.pdf.

Simple Licensing

STK Components 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 STK Components are xcopy deployable. However, Insight3D depends on the Microsoft Visual C++ Redistributable for Visual Studio 2017, 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 STK Components 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 STK Components 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 STK Components 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.

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 STK Components (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 STK Components 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(
"  <Field name='Name'>Example Customer</Field>" +
"  <Field name='Company'>Example Company</Field>" +
"  <Field name='Note'>Not a Real License</Field>" +
"  <Component name='Nonexistent Analysis Library' />" +
"  <Signature>Q55ubmOJvPB1NlkN6R4QRkpH6s2wbc7cB/Z/Xdefzq1QvUDdKfQ6e1ZbJq7g7piGp4OCQV/ON0MycHhIw06xLNDCJxsNnq+yqdqpb1yBq9JXQb81jU2ogZDxowRCsXil3OR1fs0qENGW7LqE4JHcT/XudbTSWaQpIl6iRfWW0Do=</Signature>" +


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 STK Components libraries and the licenses they require. 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

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

(the following classes additionally require TIREM Library: TiremPropagationModel3_18)

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)

Dynamic Geometry Library, Navigation Accuracy Library

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.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