RVM functionality
Configuration
RVM functionality is configured through Desktop Owner Settings and Group Policy and Registry Settings. There are a few configurations, such as Desktop Services, shortcuts, and splash screens that can be configured in the application manifest file. These configurations are noted in their individual sections below.
Note
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.
FYI
There is only one RVM running on a desktop at a time. If a new RVM starts because an app is launched, it detects if there is another RVM. If there's another RVM with an equal or higher version running, the newly launched RVM delegates itself to that one.
Installation
The OpenFin RVM is responsible for deploying itself and all your application’s assets, including the OpenFin Runtime. Upon installation, the RVM first checks whether an existing RVM is already available on the desktop.
RVM installation logic
If no RVM is installed, it copies itself to rvmInstallDirectory
then launches with the proper RVM args.
If an RVM is installed and the newly-launched RVM version <= RVM version on local disk, it launches the installed local disk RVM with specific args.
If an RVM is installed and newly-launched RVM version > RVM version on local disk, it will follow the following process:
If the RVM is currently running:
- Replace the existing RVM with the installer RVM (with payload removed).
- Delegate to the running RVM. On the next launch, the new (newer version) binary is run.
If the RVM is not running,
Copy over the installed version and remove payload. Launch with the specified args.
OpenFin installer
The OpenFin Installer generates an RVM installer to streamline the process of installing and updating the Runtime. The installer is pre-baked with the application’s config URL and is delivered as a .zip file containing an installer executable that can be hosted on a web server.
App launch
The RVM is responsible for the launch of OpenFin applications. When an app is launched, the RVM reads the application manifest file and downloads the specified Runtime from the OpenFin CDN to launch the app.
Learn more about configuring the app manifest file in the Configuring Your Application topic.
Runtime and app asset download
By default, the RVM resolves release channels, downloads runtimes, and newer RVMs from OpenFin’s servers. The RVM can optionally be configured through the desktop owner settings file or registry to pull these assets from your own servers. This can be achieved by specifying an assetsUrl
within your configuration.
Learn more about hosting Runtimes, RVMs, and app assets in the Hosting Runtimes RVM and Other Assets topic.
Services
If a "services" array of objects is placed in the app manifest file, the RVM loads the service(s) from the app directory before app startup. For example, if Excel is configured, the app manifest file contains the following code snippet.
JSON example
"services": [
{
"name": "excel"
}
]
Learn more about how services work in Services topic.
Branded shortcuts and splash screens
The RVM can be configured to include customized, branded shortcuts and splash screens by placing the shortcut object property or splashScreenImage
string in your application manifest file. If shortcuts and/or splash screens are configured, the application manifest file will contain the following code snippets:
shortcut
example
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
example{
"splashScreenImage": "http://SERVER/image.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 Tracking topic.
Deep linking
The RVM permits deep linking to an OpenFin application from anywhere that can invoke a “link” like a browser, email client, or another OpenFin application. The RVM uses a custom protocol handler to invoke an application, if not already running, and pass context to a specific location within an OpenFin application via a uniform resource identifier (URI).
In order to leverage the deep linking feature in your application, you must use the “args” object in fin.desktop.main
for processing added parameters on launch and the args
object on the run-requested
application event if your application is already running.
// On application launch parameters are passed through
fin.desktop.main(function(args) {
//args parameter contains deep link context
console.log(args.parameter1);
})
// If app is already running parameters are passed through the "run-requested" event
app.addEventListener("run-requested", function (event) {
if(event.userAppConfigArgs){
//args parameter contains deep link context
console.log(event.userAppConfigArgs.parameter1);
}
}
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 app launch, the RVM will show an error dialog. This dialog includes an error code and a prompt to send an email to OpenFin support with the corresponding RVM logs. Below is a list of error codes and descriptions used by the RVM.
Error code descriptions
Code | Error Description |
---|---|
100 | Internal error |
101 | No write access |
102 | Invalid arguments |
103 | Failed to initialize RVM config |
104 | Invalid app config URI |
200 | Failed to remove app |
300 | Failed to load app |
301 | Runtime is missing |
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 |
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.
Updated 10 months ago