RVM functionality
RVM functionality is configured through Desktop Owner Settings and Group Policy and Registry Settings. There are a few options, such as shortcuts and splash screens, that can be configured in the application manifest file. These configurations are noted in their individual sections below.
When the OpenFin RVM launches, it parses the desktop owner settings file and overrides any equivalent registry settings, such as assetsUrl
, with the settings specified in the desktop owner settings file.
Installation
The OpenFin RVM is responsible for deploying itself and all your application’s assets, including the OpenFin Runtime.
You can use the OpenFin installer generator to create an executable file that streamlines the process of installing an application and updating the Runtime. The generated installer can be pre-baked with the application's manifest; it is delivered as a zip file containing the executable. See OpenFin installer for details about the installer generator.
RVM update logic
When the RVM starts (either from an installer or by direct execution), it first checks whether an RVM is already available on the system. The RVM might be started with a payload, that is, a configuration file or command-line arguments.
Caution
Only one instance of the RVM can run on a system at any given time.
If OpenFin is not installed, the RVM copies itself to rvmInstallDirectory
(defaults to %LOCALAPPDATA%\OpenFin
on Windows), and then launches with the specified payload.
If OpenFin is installed and the newly-launched RVM version is older than or the same as the existing RVM version, it terminates itself after it launches the existing RVM with the specified payload.
If OpenFin is installed and the newly-launched RVM version is newer than the existing RVM version, it performs the following process:
-
If the existing RVM is currently running:
- Replace the existing RVM with the installer RVM (with payload removed).
- Delegate to the running RVM with the specified payload.
-
If the existing RVM is not running:
- Replace the existing RVM with the installer RVM (with the payload removed).
- Launch with the specified payload.
Application launch
The RVM is responsible for launching OpenFin applications.
To launch an OpenFin-based application, pass the location of the application manifest file to the RVM executable:
$ openfinRVM.exe --config="SERVER_NAME/APP_MANIFEST_FILE"
In this case SERVER_NAME is the network location, and APP_MANIFEST_FILE is the name of the application manifest file, which is typically in JSON format.
When this command is executed, the RVM reads the application manifest file and downloads the specified Runtime from the download location to launch the app.
Learn more about configuring the app manifest file in the Manifest settings topic.
Download of Runtime and application assets
By default, the RVM resolves release channels, and downloads runtimes and newer RVMs from OpenFin’s servers. The RVM can optionally be configured through the desktop owner settings file or the Windows registry to pull these assets from alternative servers, such as ones on your internal network. Use the assetsUrl
property within the configuration.
Learn more about hosting Runtimes, RVMs, and app assets in the Hosting assets topic.
Branded shortcuts and splash screens
You can provide an application with customized, branded shortcuts and splash screens by defining the shortcut
object property or splashScreenImage
string in the application manifest file, as shown in the following code snippets:
shortcut
example:
{ ...
"shortcut": {
"company": "OpenFin",
"description": "YourApp",
"icon": "http://cdn.openfin.co/YourApp/favicon.ico",
"name": "YourApp",
"target": ["desktop", "start-menu"],
"startMenuRootFolder": "foo/bar"
} ...
}
splashScreenImage
example:
{...
"splashScreenImage": "http://SERVER/IMAGE_FILE.png",
"offlineAccess": true,
"licenseKey": "8f5ac730-b6a4-4b11-a71c-500427190fda",
}
Semantic versioning for Runtime
The RVM supports semantic versioning for applications tested and verified to run in multiple OpenFin Runtime versions. This feature is especially useful for application providers who need to target OpenFin Runtimes that are hosted within a Desktop Owner’s environment.
Learn more about semantic versioning in the Semantic Versioning topic.
License tracking
The RVM manages sets of information to determine OpenFin usage, including hardware (desktop/machine), and software (app config) data points. Learn more about license tracking in the License usage data topic.
Deep linking
The RVM permits deep linking to an OpenFin application from anywhere that can invoke a “link,” such as a browser, email client, or another OpenFin application. The RVM uses a custom protocol handler to invoke an application, if not already running, and to pass context to a specific location within an OpenFin application via a uniform resource identifier (URI). For information on using the fin
or fins
scheme, see Deep linking; for information on defining your own protocol scheme and handler, see Manage your own custom protocol.
App logging and encryption
Application logging is invoked by the RVM and allows applications to have their own, separate logs that can be retrieved for later use by the App Provider.
Learn more about log management and encryption in the Log Management topic.
Error reporting
When an error occurs prior to launching an application, the RVM shows an error dialog with the exit code and brief explanation of the issue. More details are written to the application log. Depending on the Desktop Owner Settings and application's configuration the user might have the option to report the error to OpenFin support or the application owner. Below is a list of exit codes used by the RVM and their descriptions.
Exit code descriptions
Code | Description |
---|---|
0 | Success (All values <100 are non-error conditions) |
1 | Delegated |
2 | Auto-updated |
3 | Self-installed |
4 | Takeover |
5 | Started as child process |
6 | Configuration complete |
100 | Internal error |
101 | No write access |
102 | Invalid arguments |
104 | Invalid app config URI |
105 | No internet connection |
106 | Self-install failed |
107 | Forcefully acquired primary ownership |
108 | Unable to resolve app directory name |
109 | Failed to initialize desktop owner settings |
110 | Failed to start a child process |
111 | Failed to read install mode payload |
112 | Failed to find install mode payload |
113 | Failed to launch child process in install mode |
114 | Failed to auto-update |
116 | Failed to install RVM |
117 | Failed to launch RVM |
118 | Health check timed out |
122 | Insufficient write access to log directory |
127 | RVM health check success |
128 | Partial health check success |
129 | Health check failure |
200 | Failed to remove app |
300 | Failed to load app |
302 | Failed to create app install directory |
303 | Failed to read app config |
304 | Failed to resolve Runtime version |
305 | Failed to install Runtime |
306 | Failed to install Runtime assets |
307 | Failed to install app assets |
308 | Failed to launch app |
309 | Failed to initialize registry configuration |
310 | Failed to initialize Windows Internet (WinINet) API |
313 | Failed to match fuzzy version |
314 | App is not on allowed list |
315 | Runtime is not on allowed list |
317 | Minimum RVM version is not satisfied |
318 | User canceled installation |
319 | Download error |
320 | Services are disabled |
321 | OpenFin protocol is disabled |
322 | Failed to certify app |
Diagnostics
As of version 5.0.0.5, the RVM relays diagnostic information to OpenFin. This diagnostic information pertains to RVM startup, installation, app delegation, auto-update, exit, and errors.
This information is collected to solely support the development of the RVM and streamlines the error support process.
Command line options
The following options are supported by OpenFinRVM.exe (as of RVM version 8):
Option | Argument | Description |
---|---|---|
--config | String | The location of an application manifest to install or start an application |
--diagnostics | Boolean | Enable diagnostics |
--do-not-launch or --dnl | Boolean | Install the application without launching it |
--enable-ssl-validation | none | Run with HTTPS security enforcement, regardless of security-related registry values |
--health-check | String | Run the RVM in health-check mode |
--help | none | Display help information about command line options |
--name | String | Name of an application from the Application Directory to install or start |
--no-ui | Boolean | Run the RVM without progress or error dialogs |
--only-self-install | Boolean | RVM only installs itself, not an application, ignoring any --config argument |
--remove-app | none | Remove an application (specified by --config ) from the system |
--runtime-arguments | String | Add or replace runtime arguments to launch the application manifest with |
--runtime-health-check (RVM 9+) | String | Run a health check on the Runtime version specified in the string argument, which must be a specific dotted version number, not a release channel name; the minimum supported version is 29.0.0.0. |
--support-email | email address | Customize error messages using the specified email address. Default is [email protected] |
--version | none | Display the RVM version |
Updated 10 months ago