Environment and Registry Settings

Operating System Environment

Fire makes use of some "standard" operating system environment variables:

DISPLAY
The default X server. Fire will use this on Unix systems unless the -display option is provided on the Fire invocation command line.

HOME
Sometimes Fire needs to look in a user's home directory for configuration files. Fire will use $HOME on Unix systems, and %HOMEDRIVE%/%HOMEPATH% on Windows.

Fire Execution Environment

For the locations of its own support files, Fire uses the values of Fire-specific system environment variables, listed below. They do not have to be set, because Fire will set them to defaults at the beginning of its session if they are not defined, but they facilitate additional customization of a Fire installation.

Their default values will be derived from a <fire_root> directory. The value of <fire_root> itself will be derived by one of the following methods tested for in the following order.

  1. Set to the value of any -env option on the Fire invocation command line. If this option is present, then any current values of all MX<whatever> environment variables are discarded and new values derived from <fire_root>. If <fire_root> is derived from one of the 4 subsequent methods then any existing values of the environment variables will take precedence.

  2. Set to the value of any -root option on the Fire invocation command line.

  3. Set to the current value of $MXHOME (%MXHOME% on Windows systems), if defined.

  4. (Windows systems only) Set to the value of registry key value HKEY_LOCAL_MACHINE/SOFTWARE/Xmarc/Fire7.1/Root if it exists. At installation time, if Fire was registered (i.e. run with the -reg option), then this key value gets set automatically.

  5. (Windows systems only) Set to a directory up the file system, starting from where the Fire executable (e.g. fire.exe) resides, which contains a directory mx. This is typically somewhere like c:/Xmarc/es7/fire.

MXHOME
The <fire_root> directory. Once this is established, then defaults for any other variables are derived where necessary.

MXBIN
Where the Xmarc Fire executables reside. If not set, Fire derives this as <fire_root>/mx/<arch>/<opsys>/bin, where <arch> and <opsys> are the machine architecture and operating system of the host machine.

MXCACHE
A cache directory used during Fire web deployment. If not set, Fire derives this as <user>/Xmarc/cache.

MXLOGS
A directory into which Fire dumps its log files. If not set, Fire derives this as <user>/Xmarc/logs.

MXSITE
A site-specific configuration file directory. If not set, Fire derives this as <fire_root>/config. Typically the file fire.ini resides here.

MXSYS
A directory with Fire support files and sub-directories. If not set, Fire derives this as <fire_root>/system. This directory is home to system applications, system symbology and other odds 'n sods.

MXTEMPDIR
A scratch directory. If not set, Fire derives this as <user>/Xmarc/tmp. Fire dumps temporary files in here and cleans them out when it closes a session.

The <user> directory is assumed to be $HOME for Unix systems, and %APPDATA% for Windows systems.

Fire Internet Environment Variables

If at your site outbound internet traffic site is regulated by a proxy web server, Fire needs to know this proxy environment, e.g. as defined for Windows systems in your Internet Explorer settings.

On Microsoft Windows, Fire reads the proxy environment from the system, so no action is usually necessary.

On other systems, Fire does not inherit this proxy environment from the operating system, unless Fire is running as a browser plugin, so this environment must be communicated to Fire via the environment variable MXPROXY. This may be set external to Fire in the operating system settings for Fire to grab when it starts up, e.g.

set MXPROXY=pike:8080

or you may set it within a Fire macro using the env command before the first outbound internet call, e.g.

env MXPROXY='pike:8080'

or you may define it on the Fire program invocation line, e.g.

fire -proxy='pike:8080'

In these examples our proxy server is running on port 8080 on a local machine called pike. You may add proxy bypass host information by appending a ; to the host/port followed by comma-separated bypass hosts.

When Fire is running as a browser plugin, it inherits proxy details from the browser, so the manual setting of MXPROXY becomes unnecessary.

When Fire hits a proxy server for the first time, you will typically be challenged for a user name and password (although this behavior is configurable within proxy servers). You may wish to set the user name and password manually so that this challenge dialog is avoided. This can be achieved in one of 3 ways:

1. Before Fire starts, by setting another operating system environment variable:

set MXPROXY_<realm>=<user>:<pwd>

2. Within a Fire macro using the env command before the first outbound internet call, e.g.

env MXPROXY_<realm>="<user>:<pwd>"

3. Within a Fire macro using the httpset command before the first outbound internet call, e.g.

httpset '/',-pro="<realm>",-val="<user>:<pwd>"

<realm> is the proxy server realm, set during proxy server configuration and displayed when challenged interactively in your browser. <user> and <pwd> are the authentication values required by the proxy server to let you out onto the internet. An example using method 2 might be:

env MXPROXY_PIKE_OUTBOUND='marx:groucho'

When hitting remote internet addresses with authentication protection (known as WWW authentication) you will be challenged for user and password before being allowed through. In a similar way to proxy authentication, www authentication may be pre-set in one of the following ways:

1. Before Fire starts, by setting an operating system environment variable:

set MXWWW_<realm>=<user>:<pwd>

2. Within a Fire macro using the env command before the first internet call to the protected site, e.g.

env MXWWW_<realm>="<user>:<pwd>"

3. Within a Fire macro using the httpset command before the first internet call to the protected site, e.g.

httpset '/',-www="<realm>",-val="<user>:<pwd>"

<realm> is the www server realm, displayed when challenged interactively, e.g. in your browser. <user> and <pwd> are the authentication values required by the remote www server to let you through. An example using method 2 might be:

env MXWWW_XDB='scott:tiger'

Whichever methods are used for proxy and www authentication, encoded string values can be used to keep user/password logins hidden from prying eyes, see the fxencode external utility and the fxencode Fire language function.

Using Environment Variables

In Fire commands, operating system environment variables may be used within filenames. Both Windows and Unix conventions are accommodated.

Consider an environment variable myvar with a value C:/TEMP. The file C:/TEMP/myfile.dat could be referenced with
         $myvar/opt/myfile.dat (Unix convention)
     or %myvar%/opt/myfile.dat (Windows convention)

It can be used anywhere within a file name, consider an environment variable folderx with a value opt. The following could then be used
         C:/TEMP/$folderx/myfile.dat
     or %myvar%/$folderx/myfile.dat

When checking for environment variable values, the case as used is checked first. If this version cannot be found the variable name is converted to upper case and another look-up is attempted, then lower case. So in our example above, the environment variables may be defined in upper or lower case, and the following will yield the same file name:
         C:/TEMP/$folderx/myfile.dat
         C:/TEMP/$FOLDERX/myfile.dat
         $myvar/$FOLDERX/myfile.dat
         $MYVAR/$folderx/myfile.dat

Within the language, environment variables may be used only within filenames.

A maximum of 128 characters is assumed for environment variable names (not their values for which there is no restriction).

Environment variables can contain other environment variables within their values. They all get expanded.

A special value for an environment variable is available whereby both a directory/folder and a URL can be supplied, e.g.

env MYDIR='c:/temp;http://www.mysite.com/myfolder'

The two components of the value are separated by a semi-colon. The effect of this is that any reference to a file, e.g. $MYDIR/myfile.dat, will first look for the file in the directory/folder part of the value (in this case c:/temp). If the file cannot be found there it is downloaded across the internet from the URL part of the value (in this case from http://www.mysite.com/myfolder).

Fire Licensing Environment

To run the Fire development system and licensed applications Fire must be able to contact the license server (mxserver). The following 2 environment variables are used for this pupose.

MXSERVERHOST
The machine hosting the Xmarc license server (mxserver).
This can be a host name (e.g. localhost, neptune) or an IP (e.g.192.168.0.1).
If this is not set (on Windows systems only) then Fire will use the registry key value HKEY_LOCAL_MACHINE/SOFTWARE/Xmarc/Fire7.1/License/ServerHost.
If still not set, it will look for an mxserverhost entry in the operating system hosts file (Unix: /etc/hosts, Windows: %SystemRoot%/system32/drivers/etc/hosts).
If still not set, it will use localhost.

MXSERVERPORT
The license server network port number (udp), typically 2001.
If this is not set (on Windows systems only) then Fire will use the registry key value HKEY_LOCAL_MACHINE/SOFTWARE/Xmarc/Fire7.1/License/ServerPort.
If all else fails, udp port 2001 is used.

Windows Registry Entries

On Windows systems only, Fire uses the Windows Registry to house deployment information. Registry key values are of the form HKEY_LOCAL_MACHINE/SOFTWARE/Xmarc/<key>/<name> where <key>/<name> is one of the following:

Fire7.1/Root
The location of the default <fire_root> directory. This is used when Fire establishes the values of environment variables. This value gets set when Fire is intially registered (fire -reg).

Fire7.1/Version
The current installed Fire version. This is in the form n.n.n.n (major, minor, patch, build). The value gets set when Fire is intially registered (fire -reg)

License/ServerHost
The machine hosting the Xmarc license server (mxserver). See MXSERVERHOST.

License/ServerPort
The license server network port number. See MXSERVERPORT.

Fire7.1/OleStartCommandLine
Command line parameters for Fire when executed as an ActiveX server object. These may be set by running fire -reg.

Fire7.1/FireServiceDllLocation
The location of the FireService.all ActiveX component. This value gets set when the dll is registered (regsvr32 FireService.dll).

When Fire needs to write registry entries, and the user does not have write-access to keys in HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER is used instead.

 

ActiveX/OLE FireService Object Registry Keys

Formida FireService keys

HKEY_CLASSES_ROOT\Formida.FireService
       = "Formida FireService Control"
       \CLSID = "{FF150006-A780-11d1-8558-006008179346}"
       \Insertable
HKEY_CLASSES_ROOT\Formida.FireAutomation =
       "Formida FireAutomation Interface"
       \CLSID = "{FF15000A-A780-11d1-8558-006008179346}"

AppID keys

HKEY_CLASSES_ROOT\AppID\{FF15000C-A780-11d1-8558-006008179346} =
       "Formida Fire"
HKEY_CLASSES_ROOT\AppID\"Fire.EXE"
       \AppID = "{FF15000C-A780-11d1-8558-006008179346}

CLSID keys

HKEY_CLASSES_ROOT\CLSID\{FF150006-A780-11d1-8558-006008179346}
       = "Formida FireService Control"
       \Control
       \InprocServer32 = "\FireService.dll"
                     "ThreadingModel" = "Apartment"
       \Insertable
       \MiscStatus = "0"
       \MiscStatus\1 = "131473"
       \ProgID = "Formida.FireService"
       \Programmable
       \ToolboxBitmap32 = "\FireService.dll, 1"
       \TypeLib = "{FF150003-A780-11d1-8558-006008179346}"
       \Version = "1.0"
       \VersionIndependentProgID = "Formida.FireService"
HKEY_CLASSES_ROOT\CLSID\{FF15000A-A780-11d1-8558-006008179346}
        = "Formida FireAutomation Interface"
       "AppID"="{ FF150009-A780-11d1-8558-006008179346}"
       \LocalServer32 = "\Fire.exe"
       \ProgID = "Formida.FireAutomation"
       \Programmable
       \VersionIndependentProgID = "Formida.FireAutomation"
HKEY_CLASSES_ROOT\CLSID\{FF15000D-A780-11d1-8558-006008179346}
        = "Formida FireSession Class"
       "AppID"="{ FF150009-A780-11d1-8558-006008179346}"
       \LocalServer32 = "\Fire.exe"
                     "ThreadingModel" = "Apartment"
       \ProgID = "FireSession.FireSession"
       \Programmable
       \VersionIndependentProgID = "FireSession.FireSession"
HKEY_CLASSES_ROOT\CLSID\{FF15000E-A780-11d1-8558-006008179346}
       = "FS_PropertyPage Class"
       \InprocServer32 = "\FireService.dll"
                     "ThreadingModel" = "Apartment"
       \Programmable
HKEY_CLASSES_ROOT\CLSID\{FF15000F-A780-11d1-8558-006008179346}
       = "FS_UserPropertyPage Class"
       \InprocServer32 = "\FireService.dll"
                     "ThreadingModel" = "Apartment"
       \Programmable

Interface keys

HKEY_CLASSES_ROOT\Interface\{FF150001-A780-11d1-8558-006008179346}
       = "IFireService"
       \ProxyStubClsid = "{00020424-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150003-A780-11d1-8558-006008179346}"
                     Version = "1.0"
HKEY_CLASSES_ROOT\Interface\{FF150004-A780-11d1-8558-006008179346}
       = "_IFireServiceEvent"
       \ProxyStubClsid = "{00020420-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020420-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150003-A780-11d1-8558-006008179346}"
                     Version = "1.0"
HKEY_CLASSES_ROOT\Interface\{FF150008-A780-11d1-8558-006008179346}
       = "IFireAutomation"
       \ProxyStubClsid = "{00020424-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150009-A780-11d1-8558-006008179346}"
                     Version = "1.0"
HKEY_CLASSES_ROOT\Interface\{FF15000C-A780-11d1-8558-006008179346}
       = "IFireSession"
       \ProxyStubClsid = "{00020424-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150009-A780-11d1-8558-006008179346}"
                     Version = "1.0"
HKEY_CLASSES_ROOT\Interface\{FF150010-A780-11d1-8558-006008179346}
       = "IFireServiceEx"
       \ProxyStubClsid = "{00020424-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150003-A780-11d1-8558-006008179346}"
                     Version = "1.0"
HKEY_CLASSES_ROOT\Interface\{FF150011-A780-11d1-8558-006008179346}
       = "IUDOBase"
       \ProxyStubClsid = "{00020424-0000-0000-C000-000000000046}"
       \ProxyStubClsid32 = "{00020424-0000-0000-C000-000000000046}"
       \TypeLib = "{FF150003-A780-11d1-8558-006008179346}"
                     Version = "1.0"

Type Library keys

HKEY_CLASSES_ROOT\TypeLib\{FF150003-A780-11d1-8558-006008179346}
       \1.0 = "Formida Fire Service Type Library"
       \1.0\0
       \1.0\0\win32 = "\FireService.dll"
       \1.0\FLAGS = "0"
       \1.0\HELPDIR = ""
HKEY_CLASSES_ROOT\TypeLib\{FF150009-A780-11d1-8558-006008179346}
       \1.0 = "Formida Fire Automation Type Library"
       \1.0\0
       \1.0\0\win32 = "\Fire.exe"
       \1.0\FLAGS = "4"
       \1.0\HELPDIR = ""

GUID Usage Summary

GUID

Key

Used by

Notes

FF150001-A780-11d1-8558-006008179346 Interface IFireService  
FF150002-A780-11d1-8558-006008179346 Interface IFireServiceAlias obsolete
FF150003-A780-11d1-8558-006008179346 TypeLib FireService.tlb  
FF150004-A780-11d1-8558-006008179346 Interface _IFireServiceEvent  
FF150005-A780-11d1-8558-006008179346 Interface _IFireServiceEventAlias obsolete
FF150006-A780-11d1-8558-006008179346 CLSID ExistingFireService  
FF150007-A780-11d1-8558-006008179346 CLSID FireService  
FF150008-A780-11d1-8558-006008179346 Interface IFireAutomation  
FF150009-A780-11d1-8558-006008179346 Typelib Fire.tlb  
FF15000A-A780-11d1-8558-006008179346 CLSID ExistingFireAutomation  
FF15000B-A780-11d1-8558-006008179346 CLSID FireAutomation  
FF15000C-A780-11d1-8558-006008179346 Interface IFireSession  
FF15000D-A780-11d1-8558-006008179346 CLSID FireSession  
FF15000E-A780-11d1-8558-006008179346 CLSID Fire Service Property Page  
FF15000F-A780-11d1-8558-006008179346 CLSID User Object Property Page not implemented
FF150010-A780-11d1-8558-006008179346 Interface IFireServiceEx  
FF150011-A780-11d1-8558-006008179346 Interface IUDOBase not implemented
FF150020-A780-11d1-8558-006008179346   Custom atable name not implemented
FF150021-A780-11d1-8558-006008179346   Custom class name not implemented
FF150022-A780-11d1-8558-006008179346   Custom visual not implemented