Documentation

FireDaemon Pro 4 Users Guide
PRINT
Download PDF

1.Introduction

Last updated on August 16, 2018
Full

FireDaemon Pro allows you to schedule, configure, install and run any 32-bit or 64-bit application program executable written in any language (eg. C/C++, C#, VB, Delphi, Fortran, LISP) or interpreted script (e.g. Java, Perl, Powershell, BAT/CMD, Python, Ruby, TCL/TK, PHP) as a Windows Service. FireDaemon Pro allows you to setup your service quickly and simply via the GUI or command line. You can import and export your service configurations to and from XML for fast setup on other computers. FireDaemon Pro also allows you to edit and manage the properties of any built-in Windows service.

FireDaemon running several applications as Windows services

How Did It Get The Name: FireDaemon?

A daemon is UNIX parlance for a computer program that runs in the background, rather than under the direct control of a user; they are usually instantiated as processes. Computer systems often start (or “launch”) daemons at boot time: they often serve the function of responding to network requests, hardware activity, or other programs by performing some task. Daemons can also configure hardware, run scheduled tasks, and perform a variety of other tasks.

Daemons are characters in Greek mythology, some of whom handled tasks that the gods couldn’t be bothered with, much like computer daemons often handle tasks in the background that the user can’t be bothered with. Later daemon was rationalized to the acronym: Disk And Execution MONitor.

FireDaemon Pro was originally written to run an application called Formida Fire as a Windows NT4 service. Consequently, the product was named FireDaemon.

1.1.Why install an application as a service?

Last updated on August 16, 2018
Full

Running your application program executable under FireDaemon Pro is easy and requires no modification to your existing program. Key benefits include:

  • Ability to start and run your application continually in the background without user intervention
  • Ability to start your application before you log in
  • Run your application either interactively or non-interactively
  • Restart your application in the event of failure, unintentional or malicious shutdown or at scheduled predetermined intervals
  • Ability to modify your application’s priority and bind to specific CPU cores
  • Execute additional transient programs during the service lifecycle
  • Control, log and close popups that your application might display
  • Assists in meeting various government regulations, Acts and standards pertaining to computing systems robustness, security, management, access and control (eg. Sarbanes-Oxley (SOX), ITIL).

1.2.Features

Last updated on August 16, 2018
Full

Key Features of FireDaemon Pro include the following:

  • Run any application as a Windows service
  • Edit the properties of any built in Windows service.
  • Simple service configuration via CLI, GUI or XML all in one product.
  • Simple to integrate into Active Directory and Windows Server Clusters
  • Comprehensive logging and debugging.
  • Broad service monitoring and failure recovery options.
  • Negligible memory and CPU consumption.
  • Subprocess prioritisation and job grouping
  • CPU binding on multi-socket / multi-core systems
  • Interactive service support that facilitates access to isolated Session 0 services
  • Extensive scheduling engine
  • Auto pop-up closing
  • Set up custom environment variables
  • Integrates with standard Service Control Manager Recovery options
  • Ability to theme FireDaemon Pro with your own icons, graphics and text
  • Powerful alternative to freeware tools such as srvany
  • Can be used as a replacement for the Windows Services applet (services.msc)
  • Support for all recent Microsoft Operating Systems
  • Extensive documentation including FAQs and HOWTOs.

1.3.Supported Operating Systems

Last updated on November 19, 2018
Full

FireDaemon Pro is designed to run on the following Microsoft Windows Operating Systems running on either bare metal or virtualised:

Windows OSx86 (32-bit)x64 (64-bit)Service PackNotes
Windows XP (NT 5.1)YesNoSP332-bit only
Server 2003 R2 (NT 5.2)YesYesSP2R2 only
Windows Vista (NT 6.0)YesYesSP2
Server 2008 (NT 6.0)YesYesSP2
Windows 7 (NT 6.1)YesYesSP1
Server 2008 RT (NT 6.1)N/aYesSP1
Windows 8 (NT 6.2)YesYesN/a
Server 2012 (NT 6.2)N/aYesN/a
Window 8.1 (NT 6.3)YesYesN/a
Server 2012 R2 (NT 6.3)N/aYesN/a
Windows 10 (NT 10.0)YesYesN/aIncluding Insider Builds
Server 2016 (NT 10)N/aYesN/a
Server 2019 (NT 10)N/aYesN/a

Note that Microsoft has officially ended support for Windows XP, Windows Vista and Server 2003.

2.Installation

Last updated on August 16, 2018
Full

FireDaemon Pro is supplied as a standalone installation executable (EXE). Two versions of the installer are available for 32-bit or 64-bit operating systems. To install, download the installer from the FireDaemon website and copy it to a convenient location on your computer. Start the installer by double clicking on it. If you are installing FireDaemon Pro on Windows Vista, Server 2008, Windows 7 or later you may need to confirm various User Account Control (UAC) prompts before the installer will run. If you are upgrading FireDaemon Pro, the previous version will be uninstalled first. If you have FireDaemon Pro services currently installed and running they will be stopped prior to the installation commencing and started again at the end of the installation. If you are running FireDaemon Pro 3, Pro 4 will be installed alongside Pro 3 so you can continue using both simultaneously.

FireDaemon Pro Installer - Opening Screen

Read the License Agreement and then check the check box on the left hand side to agree to it.

FireDaemon Pro Installer - Terms of Service

Review other Important Information included in this version of FireDaemon Pro. Then click Next.

FireDaemon Pro README - installation

Choose the folder to install FireDaemon Pro into. FireDaemon Pro must not be installed on a network drive. Click the Browse button to change from the default location. When you are happy with the installation folder, click Next.

FireDaemon Pro installation - choose your folder

If you are installing FireDaemon Pro on Windows Vista, 7, Server 2008, Windows 8, Server 2012 or later you will see the Enable Support For Interactive Windows Services dialog. These are features that are specific to Windows Vista or later only. Then click the Next button.

FireDaemon Pro installation - interactive services

If you are happy with the setup choices you have made, click the Next button to begin installing FireDaemon Pro.

FireDaemon Pro - start installation

Once FireDaemon Pro has been successfully installed, you will see a success message.

If you have selected the “Launch FireDaemon Pro now” checkbox checked, the FireDaemon Pro Service Manager will be launched. If you select “Show me how to create my first FireDaemon service!” you will be taken to a video tutorial on the FireDaemon website detailing how to create your first service. If you select Show the Windows Installer Log checked, the Windows Installer log will open. Note that all three options are unselected by default.

3.Uninstallation

Last updated on August 16, 2018
Full

FireDaemon Pro can be uninstalled by opening the Control Panel and choosing the Programs and Features applet. Once you have opened the applet look for FireDaemon Pro in your list of installed programs. Right-click and select Uninstall.

Uninstall FireDaemon Pro from the Control Panel

You will be presented with a dialog. Click next to begin the uninstallation process. Then select the Remove Product radio button to folllow the uninstallation process. Note that if you have FireDaemon Pro services running or the FireDaemon Pro GUI open, the uninstaller will stop and ask you to manually stop/remove your services and/or close the GUI.

Remove or Repair FireDaemon Pro

4.Applying Serial Numbers

Last updated on September 27, 2018
Full

FireDaemon Pro will run in trial mode for 30 days. After that time, the product will expire and you will need to obtain a Serial Number in order to continue using FireDaemon Pro. You can purchase a serial number from the FireDaemon Webstore. Once you have purchased your license, you will receive an order confirmation email. This email will contain links to your receipt as well as your license Serial Number Name and Serial Number. It is vitally important that you either cut and paste this information from your order confirmation email or type them in exactly as they appear on it. Registration information can be entered via the Registration option in the Help menu.

5.Silent Installation, Uninstallation and Customisation

Last updated on November 19, 2018
Full

You can run the FireDaemon Pro setup executable silently. To install FireDaemon Pro silently, navigate to the directory containing the FireDaemon Pro Setup executable file and run:

The general command-line switch for passing arguments to the installer is as follows:
FireDaemon-Pro.exe /v"..."

The installer always writes a verbose log file to “%LOCALAPPDATA%\Temp\MSI___.log”. You can change the log file path as follows:
FireDaemon-Pro.exe /v"/l*v \"C:\Temp\FDInst.log\""

Completely silent installation:
FireDaemon-Pro.exe /s /v"/qn"

Completely silent uninstallation (note this will not uninstall any FireDaemon services):
FireDaemon-Pro.exe /x /s /v"/qn"

Example: Silent installation into a specific folder, skip enabling UI0Detect:
FireDaemon-Pro.exe /s /v"/qn INSTALLDIR=\"C:\Program Files\FireDaemon Pro\" ENABLEUI0DETECT=0"

Lastly, you can supply additional command line options to customise how FireDaemon Pro is installed on your system. These directives are supplied to the installer in the form of VARIABLE=VALUE. If spaces are required in the VALUE then the VALUE must be quoted. VARIABLE and VALUE must be in upper case.

VariableValid ValuesDefault Value(s)Description
INSTALLDIRQuoted pathC:\Program Files\FireDaemon ProDirectory into which FireDaemon Pro is installed.
ENABLEUI0DETECT0 or 11Sets the UI0Detect service to Automatically start.
UNINSTALL_ALL_FDSERVICESAny valueIf specified uninstalls all FireDaemon services when uninstalling FireDaemon Pro.

6.FireDaemon Pro Command Line

Last updated on November 19, 2018
Full

You can control and manage FireDaemon Pro services via the command line interface (CLI). FireDaemon Pro does require elevation on Windows Vista, 2008 or later version of Microsoft Windows so remember to open an elevated command prompt in advance. Ensure that you familiarise yourself with command prompt escape characters prior to using the FireDaemon Pro CLI. Specifically ensure that when specifying paths with spaces in – they are double quoted or the space is escaped to preserve the space in the actual path name (e.g. “C:\Some Path” or C:\Some\ Path).

FireDaemon Pro Command Line Options for Running Windows Services

The command line options can take both a short and long form. Note that every command line option returns an ERRORLEVEL of 0 or 1. The ERRORLEVEL determines whether the command was successful (0) or not (1) and can be evaluated in batch files. Rob Van der Woude’s website has an excellent page dedicated to ERRORLEVELS.

OptionDescription
-h
--help
Shows the command line help options. Always returns an ERRORLEVEL of 1.
-r
--registration
Displays FireDaemon Pro registration information. Always returns an ERRORLEVEL of 0.
-l
--list
Enumerates and lists all installed FireDaemon Pro services. Always returns an ERRORLEVEL of 0.
-i <file> [edit] [stopped]
--install <file> [edit] [stopped]
Installs or reinstalls a service based on a fully validated XML configuration file. Syntax and validation errors are displayed on Stdout. The .xml file extension is optional. If edit is specified and the service already exists then the service is updated, otherwise the service is replaced entirely. The service will be automatically started if its startup mode is Automatic or Automatic (Delayed Start). If stopped is supplied the service will be installed and left in the stopped state irrespective of its startup mode.

Service definitions may also be read from STDIN in UTF-8 encoding. For this case the file path is an empty string: --install "" [edit]
-u <service>
--uninstall <service>
Uninstalls a service using its Short Name or quoted Display Name. The service must be stopped first.
-v
--version
Display FireDaemon Pro executable and DLL version information.
-s
--service
Start FireDaemon Pro in service mode. This is only applicable when FireDaemon Pro is being controlled by the Service Control Manager.
-e
--export <Service> <File> [template]
Exports the service definition, as XML, named by <Service> to the file <File>. If <File> is not specified the configuration will be exported to stdout.

Specify [template] to export a template service definition.

Service definitions may also be written to STDOUT in UTF-8 encoding. In this case the file path is an empty string: --export <Service> ""
--export-all <Path\Filemask>Export all FireDaemon Pro service definitions to separate files. A Filemask can be used to export via name and/or numerically. %SN% and ??? are replaceable parameters. Use %SN% as the Short Name and ??? for an incrementing numeric replacement. The quantity of ? will determine the value format (eg. ? = 0-9, ?? = 00-99, ??? = 000-999 and so forth). %SN% and ??? can be combined (eg. --export-all n:\some\path\%SN%???). .xml will be appended to every file name.
--import-all <Path\Filemask> [stopped]Import FireDaemon Pro services definitions. Filemask can contain the standard DOS wildcards of * and ?. FireDaemon Pro makes no checks as to whether the set of service definition are actually uniquely named. If stopped is supplied, all imported services are left in the stopped state.
--start <Service> [--in-session]Starts the named Service. ServiceName may be Short Name or quoted Display Name of the service (eg. "Service Display Name"). Wildcards can also be used eg. --start ?ab*. If --in-session is supplied then the service will be started on the currently logged in session rather than session 0 (applicable to Windows Vista, 2008, 7, 8, 2012 or later only). Only services running as LocalSystem can be restarted in session.
--stop <Service>Stops the named Service. ServiceName may be Short Name or quoted Display Name of the service. Wildcards can also be used eg. --stop ?ab*.
--restart <Service> [--in-session]Stops then Starts the named Service. ServiceName may be Short Name or quoted Display Name of the service. Wildcards can also be used eg. --restart ?ab*. If --in-session is supplied then the service will be restarted on the currently logged in session rather than session 0 (applicable to Windows Vista, 2008, 7, 8, 2012 or later only). Only services running as LocalSystem can be restarted in session.
--status <Service> [--pid]Returns the status (Stopped/Running/Paused) of the named service. Wildcards can also be used e.g. --status ?ab*. The --pid option will also display the process ID (PID) of the firedaemon.exe process (Service PID) as well as the PID of the application running under FireDaemon control (App PID).
--start-allStarts all currently installed FireDaemon Pro services.
--stop-allStops all currently installed FireDaemon Pro services.
--restart-allStops then starts all currently installed FireDaemon Pro services.
--uninstall-allUninstalls all currently stopped FireDaemon Pro services.
--start-all-automaticStarts all Automatic and Automatic (Delayed Start) FireDaemon Pro services that are currently stopped.
--kill-allBrutally terminate all FireDaemon Services and their subprocesses with extreme prejudice in the least amount of time.
--create <Service> <File> <Path> <Params> [nochecks] [stopped] [replace][username=<username>] [password=<password>] [uponexit=0|1|2|3|4|5] [smffrequency=<value>]Creates and starts an automatic service with minimal parameters. <Service> is the service Short Name, <File> is full path to executable, <Path> is the Working Directory and <Params> are optional arguments to be passed to the executable. You will need to quote up each argument if they contain spaces (eg. "C:\Program Files\SomeApp\App.exe"). If the Parameters need double quotes then they will have to be escaped with a backslash (eg. "-opt1=\"Some Opt\" -opt2=\"Some Other Opt\""). The nochecks option will cause FireDaemon Pro to not complete any validation of the executable or working directory. The stopped option will install the service but leave it in the stopped state. The replace option will overwrite any pre-existing service currently installed. username allows you to specify the user to run the service as. password allows you to specify the corresponding username's password. The username should be of the format domain\username. The uponexit value dictates what even occurs when the application terminates - see the XML definition for meanings. The smffrequency value determines how frequently the sub-process is monitored.
--clone-hot <Service>Clones a pre-existing FireDaemon Pro service. When services are cloned hot, the Service Short Name and Service Display Name are modified. The Service Short Name is prepended with Clone-1-of-. The Service Display Name is prepended with Clone-1-of- and appended with the original Service Short Name in parenthesis, with the number in the prepended string determined by the lowest available number. For example, a service called Test when cloned hot will have a new Service Short Name of Clone-1-of-Test and a new Service Display Name of Clone-1-of-Test (Test). The prepended string can be modified via the Options dialog.
--edit [--validate] <Service>
--Executable="<File>"
--WorkingDir="<Path>"
--Parameters="<Params>"
--AccountName="<domain>\<user>"
--AccountPath="<password>"
Edits specific attributes of a service. No checks are made as to the validity of the options unless --validate is supplied. These changes are reflected in the registry immediately. The service can be in any state to edit. The service will not pick up and apply these changes. The service must be restarted manually for the changes to take effect. Note that --validate validates the entire service configuration and not just the modified values.
--session0Switch to session 0, allowing you to view interactive services running in isolation.
--register <Name> <Serial>Registers FireDaemon Pro. <Name> is the Serial Number Name. Ensure it is quoted if it contains spaces. <Serial> is the Serial Number. This information can be found on your Order Confirmation.
--configure
--ProductName="<Name>"
--ProductShortName="<Name>"
--HelpFileName="<File>"
[Pro OEM Only] Configures all necessary FireDaemon Pro OEM registry entries and filesystem folders required at runtime along with the help file. Please see the FireDaemon Pro OEM Installation and Configuration Guide for more information.
--deconfigure[Pro OEM Only] Removes all FireDaemon Pro OEM registry entries and filesystem folders (if empty). You need to ensure that all FireDaemon Pro OEM services have been stopped and removed prior to using this option. Please see the FireDaemon Pro OEM Installation and Configuration Guide for more information.

7.FireDaemon Pro Service Manager

Last updated on November 19, 2018
Full

The GUI is FireDaemon Pro’s “frontend”. Upon starting the GUI you will see the main window, showing all your FireDaemon services and their statuses. Right clicking on any of the listed services will bring up the Service menu.

A top menu, denoted by FireDaemon Pro hamburger menu and a toolbar are provided in order to commence the service configuration process. The main window contains seven columns. These are:

ColumnDescription
ServiceFor FireDaemon Pro services, the Service prefix concatenated with the Display Name. For Windows services just the Display Name.
DescriptionDescription of the service. May be blank for FireDaemon Pro services.
StatusStatus of the service. FireDaemon Pro services are either Running or Stopped.
ProcessStatus of the sub-process. Blank, Running, Scheduled, Frozen, Failed. This column does not appear when viewing built-in Windows services.
Startup TypeStartup type of the service.
Log On AsThe name of the user the service is running as.
PIDFor built-in services this is the process ID (PID) of the service. For FireDaemon Pro services this is the process ID of the application FireDaemon Pro is running. If the service is not running the field will be blank.
MemoryFor built-in services this is the private working set memory utilisation of the service. For FireDaemon Pro services this is the private working set memory utilisation of the application FireDaemon Pro is running. If the service is not running, the field will be blank.
CPU (%)For built-in services, this is the amount of CPU time being use by the service. For FireDaemon Pro services, this is the amount of CPU time being used by the application FireDaemon Pro is running. If the service is not running, the field will be blank.

The GUI also provides the ability to:

  • Drag a preinstalled service from the GUI, to be dropped onto the desktop or other folder yielding a service definition XML file
  • Drag a service definition XML file from the desktop or folder to the GUI yielding the immediate installation of the service
  • Double click on an service immediately opening the FireDaemon Pro or built-in Edit Service Definition Dialog
  • Select multiple services by holding down the Ctrl key whilst left mouse clicking
  • Right click on any service definition to display the shortcuts menu
  • Keep multiple New or Edit Service Definition Dialogs open simultaneously
  • Sort columns in ascending or descending order by clicking on the column heading.

7.1.Main Window

Last updated on November 19, 2018
Full
Switch to Session 0

To Switch to Session 0, select the 0 button at the top of the screen, next to the window buttons reserved for changing or closing the window. You can also press Ctrl-0 to switch to Session 0.

Every time you switch to Session 0, FireDaemon Pro reports to the Windows Application Event Log. The entry has Event ID 0 and Task Category 1. Its details tell you which user (running FireDaemon Pro) switched to Session 0. The details read as follows.

LevelDate and TimeSourceEvent IDTask Category
Information<Date> <Time>FireDaemon Pro0Session 0

In case Session 0 is currently occupied by another user, FireDaemon Pro informs you about this fact.

The left toolbar enables switching between viewing only FireDaemon services and all other Windows services.

ButtonPurpose
View all FireDaemon services controlled by FireDaemon Pro. This is the default view when loading FireDaemon Pro.
View all Windows services that are not controlled by FireDaemon Pro. Visit the “Built-In Service Definitions” section of this guide to learn more about controlling built-in Windows services.
View System Information for the machine running FireDaemon Pro. There are three sections in this area. The System Overview shows information on the computer running Firedaemon Pro. The Software Summary section shows information on the FireDaemon Pro version, licensing information, and allows for update checks. The Credits section shows the third-party software that FireDaemon Pro is built on.
Menu

OptionPurpose
Services Control PanelOpens the Windows Service Control Panel Applet.
Event ViewerOpens the Windows Event Viewer.
Task ManagerOpens the Windows Task Manager.
System InformationOpens the Windows System Information application.
ViewSelect whether or not to display the status bar at the bottom of the FireDaemon Pro application. This status bar is displayed by default.
OptionsThe Options Dialog allows you to control various aspects of the FireDaemon Pro Service Manager permanently. Many of these settings can be customised for the current logged-in user, or these settings can be taken from the All Users options. See the Options table in this guide for a comprehensive overview of the Options menu.
DocumentationDirects user to the FireDaemon Pro users manual at this page.
Licensed ToIf this copy of FireDaemon Pro has been registered, this menu option displays the name of the licensed user.
Registration InformationOpens the dialog to edit the licensed user and license number information.
Visit Web SiteDirects users to the FireDaemon.com website
AboutDisplays the About dialog. This dialog displays the FireDaemon product version and copyright information, registration information, along with links to the FireDaemon web site and product support service. This is the same display as in the Software Summary area of the System Information.
ExitTerminates the FireDaemon Service Manager.

The Options dialog of the menu displays four areas: Preferences for All Users, Preferences for My User, Service Control, and Service Definition. The Preferences for My User can be inherited from the All Users section or adjusted for just the logged-in user.

The Options dialog comes with the following options:

OptionPurpose
Check for UpdatesWhen this box is checked, FIreDaemon Pro automatically checks for product updates. Clicking the button to the right of the checkbox will perform an immediate poll of the FireDaemon website to determine if a new version is present.
Show Splash ScreenWhen checked, the splash screen will be displayed when the FireDaemon Pro Service Manager is launched.
Hide All PopupsWhen checked, all notification popups in the FireDaemon Pro GUI will be suppressed.
Filter ServicesWhen checked, only FireDaemon Pro services will be displayed in the service list.
Refresh IntervalThis determines how frequently the service list is updated along with service status, memory, PID and CPU statistics. This value is entered in seconds. The default value is 30.
Summary DelayThe delay for the summary to show up when hovering over a service. This value is entered in milliseconds (ms). The default value is 1000.
CPU Bindings RadixFireDaemon Pro services can be bound to specific processors or cores. This is known as CPU Binding (or CPU Affinity). This option will allow you to enter the CPU Binding Mask in either Binary, Decimal or Hexadecimal.
Start Automatic Services on InstallWhen checked, all services that are Automatic or Automatic (Delayed Start) will be started after they are installed.
Service Definition TemplatesClicking this box allows the user to edit the default service definition template.
Clone Delimiters PrefixDetermines the prefix automatically applied to services that are Cloned or Hot Cloned.
Clone Delimiters SeparatorDetermines whether separators are used and what form they take when constructing the new name of a service that has been Cloned or Hot Cloned.

7.2.Toolbar Buttons

Last updated on November 19, 2018
Full

The toolbar contains a row of eight buttons for the commonly used functions in the FireDaemon Services Manager. Each of these buttons performs the same function as the equivalent menu items described above, with the exception of the Toggle Service List button. The toolbar buttons are, from left to right:

FireDaemon Pro Toolbar Buttons

ButtonPurpose
Create a new service definition.
Start the service(s) selected in the service list.
Stop the service(s) selected in the service list.
Restart the service(s) selected in the service list.
Uninstall the service(s) selected in the service list.
Start all installed FireDaemon services.
Stop all installed FireDaemon services.
Restart (Stop then Start) all installed FireDaemon services.

8.New/Edit Service Definitions Dialog

Last updated on November 19, 2018
Full

The New/Edit Service Definition Dialog contains a row of buttons for the commonly used functions in the FireDaemon Services Manager. The toolbar buttons are, from left to right:

ButtonPurpose
Closes the service definition. If any changes were made, FireDaemon Pro asks if the changes should be saved.
Saves and closes the service definition.
Clicking this button allows the current configuration to be saved. The service configuration remains open for further editing.
Clicking this button resets all fields back to the default values as defined in the global default template.
Clicking this button allows a pre-existing service definition XML configuration file to be loaded.
Clicking this button allows the current configuration to be saved to another service definition XML configuration file.
Clicking this button will display the current service definition XML configuration in the default editor for text files. Note that editing or saving this file has no effect on the values currently entered in the Service Definition.
Clicking this button creates a new schedule. This button appears only when viewing the Scheduling area.

Additionally, when creating new FireDaemon services it is generally useful to start off based on pre-configured values. For example you may want to have all your FireDaemon services being manually started by default instead of automatically. Another example is a default custom prefix prepended to the service name.

For this purpose, FireDaemon Pro currently offers a global, default template. This template is accessible and editable from the Options dialog.

8.1.Program Tab

Last updated on November 19, 2018
Full

The Program Tab defines the major service parameters. It contains two sections: Service Identification and Application to Run as a Service. It should be noted that every field in every tab relates directly to an XML attribute in the configuration file.

Service Identification Section
FieldPurpose
Short NameAn abbreviated name for the service. This is the unique name by which the service is known in Windows. This name defines the service registry key in HKLM\System\CurrentControlSet\. This name can be used with the command line net stop and net start commands. Whitespace (i.e. spaces, tabs and punctuation) with the exception of hyphen (-) and underscore (_) is not permitted in this field. The name must begin with an alphabetic character (A-Z).
Display NameA more descriptive name for the service. This value will initially default to the Short Name. The value is displayed in the Windows Services Applet. This value may contain spaces and punctuation.
Custom Prefix StringBy default, when a service is installed the prefix "FireDaemon Service" is prepended to the Short Name. By checking this, the prefix can be modified or omitted entirely.
DescriptionA long description of the service. It may remain blank. You can also implicitly reference messages within pre-existing DLLs. For example: @appmgmts.dll,-3251.
Startup ModeThis determines how the Service Control Manager treats the service when it is first created, and whenever the machine boots up. The mode can be one of: Manual, Automatic, Automatic (Delayed-Start) or Disabled. Automatic (Delayed-Start) is only available on Vista, 2008 or later.
Application to Run as a Service Section
FieldPurpose
ExecutableThis is the full path and name (including the file extension) of the executable to be run as the service, e.g. C:\Program Files\MyApp\myapp.exe. System environment variables can be used to determine the complete path (e.g. %SYSTEMROOT%\system32\calc.exe).
Working DirectoryThis is the working directory of the application to be run as a service. This must be a valid mapped drive path or Universal/Uniform Naming Convention (UNC) path to a network drive (e.g. \\<servername>\<sharename>\<directory>). System environment variables can be used to determine the complete path (e.g. %SYSTEMROOT%\system32).
ParametersThis is an optional list of command line parameters that can be passed to the executable.
TypeThis setting determines the type of task. Select “Application” if the program is designed to continue running in the background. Select “Task” if the program is designed to self-complete after a given period.

8.2.Settings Tab

Last updated on November 19, 2018
Full

The Settings Tab defines a myriad of service options. The tab has three sections: General, Logon and Process.

General Section
FieldPurpose
Interact with DesktopWhen checked, this allows the service to interact with the desktop of the currently logged in user. Remember that services run in a different security context so their visibility is not always assured especially when used in conjunction with Remote Desktop - you may have to connect to the Shadow Console. A service may run under an account other than the LocalSystem account, with the Interact with Desktop option enabled. The application will only be visible if the logon account is a member of the local or domain Administrators group. Session 0 Isolation in Vista, 2008 or later may further affect application visibility.
Show WindowChoose the display mode of the Interactive Service: Normal, Hidden (silently causes the Interact with Desktop field to have no effect), Minimized and Maximized. Some applications may not respond to this setting.
Ignore Control FlagsFireDaemon Pro can be controlled via writing directly to the registry. FireDaemon Pro will stop any process it is running if the Control registry key is set. It can be set globally or on a per-service basis. FireDaemon Pro will monitor the control flags as follows (remember the relationship is inverse so if no control flags are ignored then both will be monitored):

None - Both service level and global level
Service - Global level only
Global - Service level only
Both - None

The registry keys that can be modified are as follows:

Global Level (32-bit FireDaemon Pro on x86 hardware or 64-bit FireDaemon Pro on x64 hardware):

HKLM\Software\
FireDaemon Technologies\FireDaemon Pro\Control
DWORD 0 or 1


Global Level (32-bit FireDaemon Pro on x64 hardware):

HKLM\Software\Wow6432Node\
FireDaemon Technologies\FireDaemon Pro\Control
DWORD 0 or 1


Service Level (both x86 and x64):

HKLM\SYSTEM\
CurrentControlSet\Services\<Service>\RuntimeInfo\Control
DWORD 0 or 1


0 = Process running. 1 = Process will stop.
Job TypeDetermines whether the sub-process is to be placed in a Job Group. By placing the sub-process in either a Local or Global group, any child processes spawned by the sub-process will be terminated when the service is stopped. Further, the Process Priority is propagated to all processes in the Job. The actual scope of the Job Type is only relevant when the Windows Terminal Services server component is installed. A Terminal Services server has multiple namespaces for a variety of named kernel objects including job objects. By default, all services are created in Global scope. Local Jobs exist in the current client session namespace only so as to not interfere with other instances of the same application in other sessions. Generally, choose No Job if your service runs a single application instance. Choose Global Job if your service spawns multiple sub-processes or you have Windows Terminal Services running. Local Job scope is of dubious use and has been only included for the sake of completeness.
Load Order GroupPlaces the service in a Load Order Group with other services so that other services can be dependent on it. The naming conventions relating to Short Name apply here.
Logon Section
FieldPurpose
Logon AccountThe name of the Windows user account that will own the sub-process when it is run. This can either be a local or domain account. The account will be automatically granted Logon As A Service rights. Local accounts take the form .\account. Domain accounts take the form DOMAIN\account (legacy NetBIOS parlance) , domain.com\account (Active Directory parlance) or domain.com\account$ (Managed Service Account - 2008 R2 or later only). If this is left blank the service will run as the LocalSystem user. A service may run as a user other than LocalSystem and interact with the desktop providing it is a member of domain or local Administrators group.


Note: Where an account other than LocalSystem is used to run the service, FireDaemon Pro automatically grants that account the SeServiceLogonRight privilege.
PasswordPassword for the local or domain user’s account. If the user's password is changed locally or on the Domain Controller, then you will need to modify this field and reinstall the service to reflect the change otherwise the service will fail to start due to incorrect authorisation credentials. No password is required for Managed Service Accounts.
Confirm PasswordUsed to verify that the password entered in the field above is correct. If the passwords don’t match, the service will not install.
Process Section
FieldPurpose
PriorityThe scheduling priority of the sub-process, its threads and all child processes. The use of Real Time priority should be avoided as it actually pre-empts the kernel scheduler.
CPU BindingsAllows the sub-process to be bound to specific cores on multi-CPU, multi-core machines. You can directly enter the Affinity Mask as a binary, decimal or hexadecimal value. The base is specified in the Service Manager Options. If no CPUs are checked or all are checked then the sub-process can potentially run on any CPU and the CPU actually in use will be decided by the Windows scheduler from one moment to the next.
Statistics MonitoringHow often (in milliseconds) a sub-process' statistics are read and populated by the FireDaemon service.

8.3.Lifecycle Tab

Last updated on November 19, 2018
Full

The Lifecycle Tab defines service options relating to the lifecycle of the service and the application it is running as a service. The tab has two sections: Service Lifecycle and Pre-Shutdown.

Service Lifecycle Section
FieldPurpose
Upon Program ExitThis option provides granular restart control if the sub-process terminates intentionally or unexpectedly. Six options are available:

  • Ignore: Sub-process monitoring is disabled, and no reporting is performed.

  • Restart the Program: attempt to restart the program again. These attempts are noted in the Event Log.

  • Terminate FireDaemon service: The service will hard exit. This allows control to be handed back to the Service Control Manager and for a restart to be performed by it in preference. When you specify this option the restart options in the Recovery tab are applied.

  • Shutdown FireDaemon service: The service will terminate gracefully and execute any Post-Service applications (if defined).

  • Report the Termination (no restart): the failure will simply be noted in the Event Log.

  • Reboot: The computer will be rebooted.

Flap DetectionThis option is only enabled where sub-process restarts are selected in Upon Program Exit. Its purpose is to set an upper limit on the number of restarts that FireDaemon Pro will perform during the startup phase of the sub-process. Flaps are noted in the Debug log. Should the upper limit ever be reached, the selected action will be taken, namely:

  • Terminate Process after: FireDaemon Pro will continue to run, but no further restarts are performed. The restart count will be reset back to zero if the service is restarted manually or as part of a scheduled restart.

  • Terminate FireDaemon service: The service will exit immediately. Any Post-Service applications are NOT invoked. Actions specified in the Recovery settings will initiated.

  • Shutdown FireDaemon service: The service will terminate gracefully and execute any Post-Service applications (if defined).


Note that Flap Detection is only applicable when the sub-process is initially launched. Once the process has been launched successfully, a PID has been assigned and the sub-process has been running stably for a period greater than the Monitoring Interval then Flap Detection is deactivated.
Flap Detection RetriesWhere Flap Detection is enabled, this setting specifies the upper limit on the number of sub-process restarts.

This value is reset to zero at each scheduled restart or duration.
Fail DetectionThis option is only enabled where sub-process restarts are selected in Upon Program Exit. Its purpose is to set an upper limit on the number of restarts that FireDaemon Pro will perform during the entire lifecycle of the sub-process. Fails are noted in the Debug log. Should the upper limit ever be reached, the selected action will be taken, namely:

  • Disabled: No action is taken.

  • Terminate Program after: FireDaemon Pro will continue to run, but no further restarts are performed. The restart count will be reset back to zero if the service is restarted manually or as part of a scheduled restart.

  • Terminate FireDaemon service after: The service will exit immediately. Any Post-Service applications are NOT invoked. Actions specified in the Recovery settings will initiated.

  • Shutdown FireDaemon service after: The service will terminate gracefully and execute any Post-Service applications (if defined).


Note that Fail Detection is only applicable once the sub-process has been launched successfully, a PID has been assigned, the sub-process has been running stably for a period greater than the Monitoring Interval and Flap Detection has been deactivated. Only then is Fail Detection activated.
Fail Detection RetriesWhere Fail Detection is enabled, this setting specifies the upper limit on the number of sub-process restarts.

This value is reset to zero at each scheduled restart or duration.
Graceful ShutdownIf this is checked, FireDaemon will send a message to the sub-process in order to allow it to gracefully exit. For console-based applications the CTRL_BREAK_EVENT or CTRL_C_EVENT message is sent to the process' console (based on the Console Application Send option below). For interactive GUI-based applications, a single WM_CLOSE message is sent to the top level window of the application. FireDaemon Pro then attempts to intelligently detect any popup windows that might result and send messages in the following order in an attempt to close them (IDCANCEL, IDABORT, IDOK, IDNO, IDYES). If the application does not close of its own accord it will be terminated after the Max Shutdown Delay elapses.
Maximum Shutdown DelayIf this time period elapses (in milliseconds) after the graceful shutdown message has been sent, and if the sub-process is still running, then FireDaemon Pro will forcibly terminate the sub-process.
Console ApplicationSelect this if a Win32 console application is being run as a service. Examples include Java, Perl and 3rd party Win32 applications. This will cause a console control handler to be wrapped around the sub-process.
To Close Console SendThis radio button determines which message will be sent to the console application if Graceful Shutdown is checked. It can either be Ctrl+Break or Control+C.
Pre-Shutdown Section
FieldPurpose
Pre-Shutdown[Vista, 2008 or later only] When checked, FireDaemon Pro will register the service to receive pre-shutdown notifications. During machine reboot or shutdown - services have a maximum of 20 seconds to shutdown. This allows services that need more time to terminate to shutdown gracefully when they can't necessarily do so quickly.
Pre-Shutdown DelayAmount of time in milliseconds that the Service Control Manager will wait for the service to terminate (default is 180000ms = 3 minutes).
Shutdown Order List InclusionInclude this service in the global list of Pre-Shutdown services allowing the Pre-Shutdown services to be ordered using the up and down arrows.

8.4.Logging Tab

Last updated on November 19, 2018
Full

The Logging Tab defines a variety of logging mechanisms. The tab contains two sections: General and Output Capture.

NOTE: Be careful when running batch files and redirecting stdout and stderr. If you use batch file commands such as “timeout” and “pause” that expect stdin then your batch file may crash. We have seen this behaviour on earlier versions of Windows including Server 2008 and 7. Windows 10 and Server 2016 appear immune to this problem. Try using “waitfor” instead.

General Section
FieldPurpose
Event LoggingToggle logging by FireDaemon Pro to the Event Log.
Debug LoggingToggle debugging by FireDaemon Pro to nominated text file. Note that Debug Logging is somewhat verbose and should only be enabled temporarily when attempting to resolve FireDaemon Pro service configuration issues. Ultra-verbose execution tracing can also be included in the debug log. This is enabled globally by setting a system wide environment variable as follows:


Environment Variable Name: FD_TRACELEVEL

Environment Variable Value: DEBUG


Execution tracing will be included in the debug log file once the relevant FireDaemon Pro service(s) have been restarted. This environment variable has no effect if Debug Logging is disabled.
Append LogsWhen this option is enabled, entries are always appended to the Debug, Stdout and Stderr log files. When this option is disabled, the Debug, Stdout and Stderr log files are overwritten when the service starts. If the sub-process crashes and FireDaemon Pro has to restart it, the Stdout and Stderr log files are overwritten when Append Logs is unchecked. Note that if FireDaemon Pro cannot write to the any of the specified log files it will write an error event to the Windows Applicatoin Event Log.
Debug Log FileThe full path and name of the file to log to. Environment variables can be used in the name.
Output Capture Section
FieldPurpose
Capture Stdout in FileEnables the capture of Stdout (Standard Output – the console text output stream from the application being run as a service). Nominate the full path and name of the file to log to. Note: Stdout/Stderr capture is unbuffered and cached. Stdout/Stderr is only captured to file when only when the application's output buffer is flushed. Thus, the successful capture of output is dependent upon the application's behavior. Stdout/Stderr capture may be truncated if the application exits suddenly of its own accord. FireDaemon Pro does flush Stdout/Stderr upon application restart and termination.
Capture Stderr in StdoutEnables Stderr (Standard Error – the console text output stream specifically marked as errors from the application being run as a service) to be captured alongside Stdout into the same log file.
Or Capture in FileEnables Stderr to be captured in a separate file from Stdout.
Implicit Log Rolling

Log Rolling is a program’s ability – especially of service programs – to write to multiple succeeding log files chosen by certain rules, in order to limit the file size. FireDaemon Pro currently doesn’t provide explicit options to configure rules for log rolling. However it facilitates “implicit” log rolling, which is achieved by:

  • expanding environment variables in logfile paths
  • providing special environment variables (see the Special FireDaemon variables in Environment Variables)
  • respecting special counter placeholders in logfile paths (see below)
Counter Placeholders

Logfile paths may contain one wildcard as a placeholder for a counter, whose value is determined by searching the filesystem. A wildcard can either be a ‘*’ or one or more ‘?’.

An asterisk increases a log count value without limits and without leading zeros. A question mark limits the counter to a certain number of digits and prepends leading zeros if necessary.

If FireDaemon Pro encounters such a counter wildcard in the logfile paths, it will first search for all existing matching files, then determines the lowest free counter value and only then creates the logfile.

In case the counter value would exceed the range limit defined by the number of ‘?’ (meaning the maximum number of decimal digits for the counter value), the file with the oldest write time is taken.

Suppose there exist already the following logfiles:

  • C:\Temp\service-01.log
  • C:\Temp\service-03.log

FireDaemon Pro will search for C:\Temp\service-??.log and determine the next free counter value to be 2, producing logfile path C:\Temp\service-02.log. Upon another iteration it would use C:\Temp\service-04.log.

Examples of a logfile path for capturing the output of a program:
C:\Temp\service_stdout-%FDProcessScheduleName%-*.log
C:\Temp\service_stdout-%FDProcessScheduleDate%T%FDProcessScheduleTime%-*.log

Note that the asterisk is useful when the time is turned back due to DST changes.

8.5.Dependencies Tab

Last updated on August 17, 2018
Full

Service Dependencies allow services to be started (and stopped) in order. They specify which services or load order groups must be running on the machine before this service can run. For example, if the service ServiceA depends on the pre-requisite service ServiceB, then Windows will always start ServiceB before ServiceA during a machine boot-up. Similarly, if both ServiceA and ServiceB are stopped, then manually starting ServiceA will firstly cause ServiceB to be automatically started. Similarly, stopping ServiceB manually will force ServiceA to stop. Interestingly, services dependencies are not used during machine shutdown.

Click on the drop down lists and choose a service or a service Load Order Group to make this service depend on. The service short name or Load Order Group name will be automatically listed in the corresponding list box. If you are running on Windows Vista, 2008 or later make sure your services (especially if they are interactive) depend on the Interactive Services Detection service (UI0Detect).

One button is present in the Service Dependency section of the tab:
Remove – Removes the dependency. Click on the appropriate service dependency in the list first.

One button is present in the Load Order Group Dependency section of the tab:
Remove – Removes the Load Order Group dependency. Click on the appropriate Load Order Group dependency in the list first.

8.6.Environment Tab

Last updated on August 17, 2018
Full

This tab allows environment variables to be instantiated when the service is run. This is particularly useful for Java and other applications that rely on a custom environment. Note that the order of entries in this panel is significant – environment variable definitions are evaluated in top-down order.

ButtonPurpose
Promote (Up Arrow)Allows an environment variable to be promoted in the list of environment variable definitions.
Demote (Down Arrow)Allows an environment variable to be demoted in the list of environment variable definitions.
InsertInserts a new environment variable at the currently selected point in the list of variables. These take the form of a Name and Value. Environment variable expansion can take place by including other variables inside % signs. For example, if the name of the environment variable is CLASSPATH, its value might be %PATH%:C:\Somepath. If the environment variable PATH is present in the list or globally then the CLASSPATH variable will inherit the PATH variable’s value. Note that environment variables are ordered. Duplicate environment variables can be present. The maximum length of an environment variable’s name or value is 32KB. Empty environment variables can be assigned (i.e. no value).

AppendAdds a new environment variable at the end of the list of variables.
EditEdits the currently selected environment variable. Select the variable you want to edit by clicking or double clicking on it.
RemoveDeletes the currently selected environment variable.

8.6.1.More on Environment Variables

Last updated on September 18, 2018
Full

Environment variables define some aspect or component of a service’s working environment. Environment variables can not only be set via the Environment tab in FireDaemon Pro but can be set at system boot by editing C:\AUTOEXEC.BAT or via batch scripts. System wide and user level environment variables can also be set by right clicking on My Computer, choose Properties, choose the Advanced tab then click on the Environment Variables button.

Any environment variables set in FireDaemon Pro’s Environment tab will override User and System environment variables for the applicable service only. Environment variables defined for the FireDaemon service also get expanded in the context of the subprocess’ user.

Special environment variables can also be used for the debug logfile path, facilitating implicit log rolling.

When you run a FireDaemon service, the following environment variables are available to the sub-process as well as Pre-Service and Post-Service events. They can be expanded by enclosing them in percentage signs (e.g. %FDServiceShortName%). The values for FDServiceExecutable, FDServiceWorkDir, FDServiceParameters get expanded by default.

VariableDescription
FDServiceShortNameService Short Name
FDServiceDisplayNameService Display Name
FDServiceDescriptionService Description
FDServiceExecutableService Executable
FDServiceWorkDirService Working Directory
FDServiceParametersService Parameters
FDDateDate when the service started in format YYYYMMDD
FDTimeTime when the service started in 24-hour format HHMMSS

During launch and lifetime of the subprocess the following environment variables will be available:

VariableDescription
FDProcessRunInSessionOfWhen invoked in the current user's session: <user name>@<domain name> ; empty otherwise.
FDProcessScheduleNameThe name of the schedule responsible for executing the service executable; undefined if subprocess not launched by a schedule.
FDProcessScheduleDateDate when the service executable has been scheduled to start in format YYYYMMDD, expressed in local time.
FDProcessScheduleTimeTime when the service executable has been scheduled to start in 24-hour format HHMMSS, expressed in local time.
FDProcessFailCountThe current value of the fail counter.
FDProcessFlapCountThe current value of the flap counter.

8.7.Pre / Post-Service Tab

Last updated on August 17, 2018
Full

The Pre-Service and Post-Service tab allows applications to be run during service startup and service shutdown. Pre-service and post-service programs are always run during service start-ups, controlled shutdowns, and intentional restarts. However, if the service program crashes, only the pre-service program is run. Note that Pre-Service / Post-Service programs run at the same process priority as the main application. The process priority is defined in the Advanced tab.

These applications will be run for a finite time period. Multiple pre- and post-service applications may be defined, in which case they are run serially, in the order listed with Before Event applications being run prior to the service being started or stopped and After Event applications being run after the service has been started or stopped. If the applications specified here run for unusually long periods of time then the Service Control Manager may consider the service hung. If you check Console Application in the Program tab, Pre-Service and Post-Service applications will be terminated as if they were console applications; otherwise they will be terminated as if they were GUI applications (providing they are still running after the execution time has elapsed).

The following table describes the functions of each button in the pre-service program grouping. The equivalent buttons in the post-service program group operate in an identical manner, and so are not described any further.

ButtonPurpose
Promote (Up Arrow)This moves the currently selected entry in the pre-service program list one position upwards.
Demote (Down Arrow)This moves the currently selected entry in the pre-service program list one position downwards.
InsertThis inserts a new pre-service program definition into the pre-service list immediately before the currently selected list entry.
AppendThis adds a new pre-service program definition to the end of the pre-service list.
EditThis edits the currently selected pre-service program entry. Select the entry to be edited by clicking or double clicking on it.
RemoveThis deletes the currently selected entry in the pre-service program list.

Clicking on the Insert or Append buttons opens the Program Information dialog box. This is where the details of the pre- or post-service program are entered.

FieldPurpose
ExecutableThis is the full path and name (including the file extension) of the pre- or post-service program, e.g. C:\Program Files\PreApp\preapp.exe
Working DirectoryThis is the working directory of the pre- or post-service program. This must be a valid path on local disk or Universal/Uniform Naming Convention (UNC) path to a network drive (there are a significant number of caveats associated with the use of UNC paths in services so be warned).
ParametersThis is an optional list of command line parameters that can be passed to the executable.
Execution TimeThis is the number of milliseconds that the pre- or post-service program is expected to run. If the program exceeds this time limit, FireDaemon Pro will forcibly terminate it, irrespective of what it is doing. This time also has a bearing on the overall time the service takes to start or stop. Be generous with the amount of time you stipulate here. If the pre- or post-service program runs in less time than the anticipated Execution Time then FireDaemon will not wait and will continue to execute the next pre- or post-service program.
Run ProgramThis field has two settings – Before Event and After Event. The operation of these settings is explained below.
Run DetachedIf this is checked, the Pre-Service or Post-Service Program will simply be executed. The Execution Time is observed but FireDaemon Pro will not attempt to terminate the program once the Execution Time has elapsed.

When a program is set to run before the event, the following applies:

  • For pre-service programs, the pre-service program is started and then runs to completion. The service application is then started.
  • For post-service programs, during an intentional shutdown, the post-service program is run to completion before stopping the service application.

When a program is set to run after the event, the following applies:

  • For pre-service programs, the pre-service program is started immediately after the service application has been started.
  • For post-service programs, after the service application has stopped or finished, the post-service program is started and then runs to completion. The post-service program is not run if the service application crashes.

8.8.Scheduling Tab

Last updated on August 18, 2018
Full

The Scheduling tab controls the time periods in which the application is run. It also controls regularly scheduled restarts of the application run as a Windows service.

The type of scheduling permitted for a service depends on the type of service. Services marked as an Application in the Program area support two types of scheduling: restarting the application and duration. Services marked as a Task in the Program area support one type of scheduling: Execute Task.

The Scheduling section on the Edit Service dialog shows all existing schedules for that FireDaemon service. By default, no schedules are defined. With no defined schedules, applications run 24×7, while tasks run until they are complete, then stop until they are manually restarted.

The following fields are displayed for existing schedules in the list of schedules:

ColumnDescription
ActiveShows whether a schedule is active. Active schedules are noted with a checkmark. To deactivate a schedule (but not delete it entirely), click the checkmark in the box and resave.
NameName of the schedule. Naming a schedule is optional but useful when running multiple schedules for one service. If a name is not specified, the default name “New Schedule” is used.
Interval, FrequencyShows when the service is run and how frequently. This section is based on the Interval and Frequency sections when defining a schedule. The interval shows over which days of the week the schedule is in effect, while the frequency shows how often within each interval the scheduling is set to take place.
ScheduledShows the times that the schedule is in effect.
Fixed PeriodShows the period over which the schedule is in effect. If this is not filled in, the schedule will run from the time it is created to perpetuity.
Creating a New Schedule

To create a new schedule, navigate to the Scheduling tab and press the button (+ sign) in the service definition toolbar.

The following options are available to all schedule types:

Schedule Name: Enter a name for the schedule. Naming a schedule is optional but useful when running multiple schedules for one service. If a name is not specified, the default name “New Schedule” is used.

Schedule type: Set the schedule type to use here. The options change depending on the type of service, as demonstrated in the table below.

TypeDescription
Restart ApplicationThis option is available only for services marked as applications. There are two options available to configure your “Restart Application” schedule. “Restart Settings” provides options to choose when to restart the application: on the hour, 5 minutes past the hour, 15 minutes past the hour, 30 minutes past the hour, and Specific Time of Day. Origin provides a reference time for the schedule to take effect. Each of these options provides a different set of options for configuring the scheduling.
DurationThis option is available for services marked as applications. Duration allows for a service to run from a set start time to a specified end time, then stopping after the specified end time. This can be repeated daily at a time range selected in the Execute time. This can also be repeated weekly on specific days and weekly over a range of days. See below for the interval options, though you can ignore the part about the options to restart.
Execute TaskThis option is available only for services marked as tasks. Select a time to start the task, as well as a time to complete the task. With this option, the application will run in the times selected in the start and end time, while not running outside of that time. The start settings are the same as for the Restart settings: On the hour, 5 minutes past the hour, 15 minutes past the hour, 30 minutes past the hour, and at a specific time of day. The concept of the origin time also stays the same. The repeat interval options also stay the same, depending on the Start Setting time selected in the Execute section.

Interval: There are three options available for the Interval setting. The exact options depend on the schedule type selected.

OptionDescription
DailyThe task runs every day during the times listed in the Execute and Complete at following times. This option is available when selecting a restart setting at a specific time past the hour and at a specific time of day.

The daily time options are to restart every: 1 minute, 1 hour, 2 hours, 3 hours, 4 hours, 6 hours, 8 hours, 12 hours, and day. A time interval can also be set, in which the application will be restarted. This option is available when selecting any of the restart settings and execute schedules.
Weekly (specific days)The task runs every day of the week selected over the interval selected. The options to restart are every 1 minute, 1 hour, 2 hours, 3 hours, 4 hours, 6 hours, 8 hours, 12 hours, and day. This option is available for restart application schedules and execute schedules that are not set to begin at a specific time of day.
Weekly (range of days)The task runs continuously from one specified day and time to another specified day and time. The options to restart are every 1 minute, 1 hour, 2 hours, 3 hours, 4 hours, 6 hours, 8 hours, 12 hours, and day. This option is not available when selecting “Specific Time of Day” in the restart settings.

Fixed period: This option appears for all types of schedules. This allow a schedule to run only over a pre-determined time period with specified start and end dates. If fixed periods are not specified, then the application or task runs from the present time to perpetuity.

8.9.Dialogs Tab

Last updated on August 17, 2018
Full

The Dialogs tab allows for the logging and suppression of dialog boxes specifically that the application sub-process might emit. Note that FireDaemon Pro will only close dialogs where the style is of type WS_POPUP and the window class is #32770. The tab has two sections: General and Responses.

General Section
FieldPurpose
EnabledToggle this checkbox to enable/disable dialog monitoring.
Only This ProcessFireDaemon Pro will only respond to popups generated by the sub-process. All other popups will be ignored.
Ignore UnknownsFireDaemon Pro will ignore popups for which there are no Responses.
Log FileLog file to log the contents of popups to.
Check FrequencyFrequency with which FireDaemon Pro will check for new popups. The default is 5000ms.
Responses Section

You do not generally need to specify Responses as the Dialog closer will attempt to automatically detect and close any dialog displayed by the sub-process. Custom responses can be designed allow specific and known responses to certain dialogs. The Responses section contains four buttons: Insert, Append, Edit and Remove. The Responses section allows you to fine tune responses to dialog popups. Clicking on Insert or Append will yield the following dialog:

The Response Builder has the following fields. Note that when building a response, at least one of Title or Content must be supplied.

FieldPurpose
TitlePopup Title (e.g. Response Builder). This field is optional.
ContentFull or partial text content of the dialog to match against. This field is optional. Note that one of Title or Content must be specified.
Button TextThe button text to be "pressed". For example Cancel or OK. This allows you to fine tune responses based on combination of Title and Content.

8.10.Recovery Tab

Last updated on August 17, 2018
Full

The Recovery tab allows you to determine what action to take when a service fails. Note that for the Recovery option to function correctly, you must set the Upon Program Exit option in the Settings tab to Terminate FireDaemon. The Recovery tab has the identical functionality as is found in the Recovery options of each built in service in the Windows Services applet (services.msc).

FieldPurpose
First/Second/Subsequent FailureDefines the computer's response in the event of a service failure. Valid values are: Take no action, Restart the service, Run a program, Restart the computer

Whilst these options are similar to FireDaemon Pro functions, these responses are handled by the Windows Service Control Manager and not FireDaemon Pro.
Reset Fail Count AfterResets the fail count after n-days to zero (0). The fail count is incremented upon each failure and determines which failure event will run (i.e. First, Second or Subsequent).
Restart Service AfterUpon failure, the service will be restarted after n-minutes.
Enable actions for stops with errorsIf this checkbox is checked, the First and subsequent failure actions will be triggered if the service stopped with an error.
Restart Computer Options

The Restart Computer Options button determines what to do when a failure triggers a computer restart as per the dialog below. The box is clickable whenever one of the post-failure actions to take is to restart the computer. You may choose to send a message to other computers on the network through this dialog.

Run Program Options

The Run Program Options are enabled if a failure trigger is set to Run a program. The following options are available:

FieldPurpose
ProgramName of the executable to run.
Command line parametersCommand line parameters to pass to the executable.
Append fail count to end of command lineAppends /fail=%1% to the command line parameters. %1% is a replaceable parameter, replaced by the value 1 through 3 in the event of failure.

9.Built-In Service Definition Dialog

Last updated on September 21, 2018
Full

FireDaemon Pro provides the ability to edit built-in Windows services. Double-clicking on a built-in service displays the service’s Properties dialog. The Properties dialog is identical in function to the Properties tab found in Microsoft’s Services applet (services.msc).

View Windows System Services with FireDaemon Pro

The General Tab displays details about the specific built in Windows service. Unlike Microsoft’s Services applet, the status of the system service is shown in the control toolbar, and the service can be controlled from there as well. If you ever need to specify special startup parameters when starting the service, you can do so by clicking the arrow next to the start button.

The Log On Tab determines under which user account the service will run and which hardware profile it will run. Note that Windows Interactive Services can only be run as LocalSystem.

The Recovery tab allows you to determine what action to take when a service fails. Please refer to the New / Edit Service Definition Dialog – Recovery Tab for a complete description of the functionality found in the dialog below.

The Dependencies tab displays which system component this service depends on and which system components depend on this service. There are no editable options in this dialog.

10.Theming and Branding FireDaemon Pro

Last updated on September 26, 2018
Full

It is possible to theme or brand FireDaemon Pro or FireDaemon Pro OEM. Theming (skinning) allows you to:

  • Replace the splash screen
  • Replace all button icons
  • Change the product name
  • Supply an alternate help file or disable help entirely
  • Rename the product EXEs

Note that you can’t remove copyright notices and version numbers nor modify the registry keys or digital signatures of the executables. A commercial service is provided for customers who require FireDaemon Pro or Pro OEM skinned. For more information and pricing please contact sales support.

Example Screenshots

Graphics Requirements

FireDaemon Pro accepts EMF vector images for theming and branding. Vector images always ensure sharp and high-quality icons, regardless of DPI settings.

“Buttons” – any area the EMF gets drawn on – has a fixed (internally defined) size. This only defines the drawing area on screen. For realising a vector image, the viewport is important, whose dimensions can be smaller or larger than the drawing area on screen. Thus, an icon can be made to appear larger or smaller. Alpha-Channel gets respected without any special color values.

Viewport values are always specified for 100% DPI. For the following images, the icon size is deduced from the viewport itself, and one of the width/height values can even be either 0 or negative:

  • Application icon
  • Splash screen image
  • FireDaemon Pro “branding image” (in the application bar next to the application icon)

Below are the fixed sizes for the screen drawing area:

  • Window big icon: 32×32
  • Window small icon: 16×16
  • Application Bar buttons: 48×48
  • Toolbar buttons: 48×48
  • Hot-tracking toolbar buttons: 20×20
  • Dialog and Browse buttons: 16×16

Various caveats apply:

  • If Toolbar image dimensions differ from their required dimension (e.g. 24×24) the images are scaled to accordingly. EMFs can only be used for toolbar images.
  • The FireDaemon Pro GUI attempts try to load images with given dimensions and desktop color depth; otherwise it will load the closest image and scale to dimensions as required.
  • At the time the vector image is realized the application needs to specify the background color; if the very same icon is displayed in a different location it may appear different. This is the case with the small FireDaemon services section icon, which is shown in the tab listing FireDaemon services and in the taskbar preview window.
  • Currently, section icons can’t be themed (i.e. the ones for the left navigation bar).
  • FireDaemon Pro will fail gracefully if an icon is incompatible or cannot be found.
  • FireDaemon Pro will fail gracefully if the XML is syntactically incorrect.
Changing the Product Name

The product name of both FireDaemon Pro and Pro OEM can be changed.

On x86 (32-bit systems) using the 32-bit version of FireDaemon or x64 (64-bit systems) using the 64-bit version of FireDaemon modify these registry key values:

HKLM\SOFTWARE\FireDaemon Technologies\FireDaemon Pro
\ProductName
\ProductShortName

On x64 (64-bit systems) using the 32-bit version of FireDaemon modify these registry key values:

HKLM\SOFTWARE\Wow6432Node\FireDaemon Technologies\FireDaemon Pro
\ProductName
\ProductShortName

ProductName is used on the splash screen, main FireDaemon Pro GUI and various other dialog boxes plus the command line. ProductShortName is typically used in message boxes and tooltips.

Note that the skin.xml file and product configuration in the registry are overwritten when installing or upgrading.

Changing The Help File Name or Disabling Help

FireDaemon Pro ships with a help file that links to the FireDaemon Pro website’s documentation page. The help file link can be changed to any file that Windows Explorer can open. This can be a PDF, CHM, shortcut containing a URL or any other file system object that can be opened by Windows Explorer.

On x86 (32-bit systems) using the 32-bit version of FireDaemon or x64 (64-bit systems) using the 64-bit version of FireDaemon modify this registry key value:

HKLM\SOFTWARE\FireDaemon Technologies\FireDaemon Pro
\HelpFile

On x64 (64-bit systems) using the 32-bit version of FireDaemon modify this registry key value:

HKLM\SOFTWARE\Wow6432Node\FireDaemon Technologies\FireDaemon Pro
\HelpFile

The default value is “https://www.firedaemon.com/documentation/firedaemon-pro/”. If the key is empty, help will be disabled. Alternately, set the value to the name of your help file (e.g. “MyHelp.chm” or “MyHelp.pdf” or “MyHelp.lnk”). Note that any paths prepended to the file name will be stripped/ignored.

Renaming FireDaemon.exe and FireDaemonUI.exe

FireDaemon.exe can be renamed. To ensure FireDaemon recognises the EXE name change make sure you update the ServiceExe registry value name found under the the product registry key listed above to reflect the new name of the EXE. Note that ServiceExe is appended to the installation directory. ServiceExe should only contain the file name and extension delimited by a period (i.e. “.”). No path is permitted in ServiceExe.

If you choose to change the name of FireDaemon.exe, the only services that will be displayed in the FireDaemon GUI will be those where the ServiceExe matches the ImagePath registry key found in the service configuration itself typically located under HKLM\SYSTEM\CurrentControlSet\Services\<MyServiceName>. So if you decide to use the default name (i.e. firedaemon.exe) then rename the EXE and update the ServiceExe registry value name – your pre-existing services won’t be recognised as FireDaemon services anymore, and will be hidden in the FireDaemon services list in the FireDaemon GUI.

FireDaemonUI.exe can be renamed with impunity. Core.dll and Core.manifest cannot be renamed.

Theme XML Example

FireDaemon Pro ships with a sample theme. The theme is defined in an XML file (see below). The theme XML file needs to be placed in a directory called “Skin” in the FireDaemon Pro installation directory (e.g. C:\Program Files\FireDaemon\Skin). Underneath the Skin directory create a directory called “Graphics”. Place all icons and bitmaps in this directory.

The default XML configuration file is as follows. Note that the ImageType tag value needs to be “vector”.

FireDaemon Pro Skin XML File

11.Importing and Exporting FireDaemon Pro Service Definitions

Last updated on September 6, 2018
Full
What is XML and why use it?

FireDaemon Pro allows you to import and export service definitions. This allows you to backup your service definitions or move them to other machines. A service definition is exported as XML to a text file.

eXtensible Markup Language (XML) provides a foundation for creating documents and document systems. XML is derived from the Standard Generalized Markup Language (SGML). XML operates on two levels:

  • it provides syntax for document markup
  • it provides syntax for declaring the structure of documents

XML is used to provide FireDaemon Pro with configuration directives and parameters (in the form of a parsable, validatable document) when creating and managing services. An XML Schema (.xsd) is provided to define this document structure and the list of legal elements that it can contain. By using XML and Schema each FireDaemon Pro service configuration carries a description of its own format within it and provides a means of validating it. Additionally, an XML transformation file (.xsl) contains the logic to transform service definitions from previous versions of FireDaemon Pro to the most recent.

The XML can either be created by hand for use with the CLI or created “on-the-fly” by the GUI. Users who have worked with HTML in the past should be able to learn the basics of XML without too much difficulty. A complete list of valid XML attributes and valid values is detailed later in this guide.

For detailed information on XML please visit the World Wide Web Consortium.

Below is a fragment of FireDaemon Pro service definition XML:

Firedaemon Pro service in XML

11.1.Drag and Drop

Last updated on September 18, 2018
Full

FireDaemon Pro service definition XML can be exported directly from the FireDaemon Pro Service Manager (GUI) to the desktop via drag and drop. To do this simply highlight an installed FireDaemon Pro service by clicking it and dragging it to the desktop (or appropriate folder). You can install FireDaemon Pro services simply by dragging service definition XML from a folder or the Desktop and dropping it on the GUI.

On Windows Vista or later, if User Account Control (UAC) is active you will not be allowed to to drag a service definition from the desktop to the FireDaemon Pro Service Manager due to User Interface Privilege Isolation (UIPI) and Mandatory Integrity Control (MIC). This is because the FireDaemon Pro Service Manager is running with elevated privileges whilst Windows Explorer is not. Disabling UAC and rebooting may resolve the issue.

On later versions of Windows such as Windows 10, it’s no longer possible to drag from Desktop into the FireDaemon Pro Service Manager without a workaround. There are a couple of workarounds that circumvent UAC issues and make drag and drop possible again:

  • Using a Windows Explorer alternative such as xplorer2 while elevated
  • Opening a file dialog from any elevated invoked application

Drag and drop a FireDaemon Pro service

11.2.Save/Load

Last updated on September 6, 2018
Full

FireDaemon Pro service definitions can be saved, loaded and viewed via the New / Edit Service Definition Dialog. The last three toolbar buttons allow you to Open, Save As and View the service definition XML. For example, clicking on the View XML toolbar button will display the XML in the default editor for text files:

View FireDaemon Pro Windows Services in XML

11.3.Import/Export

Last updated on August 17, 2018
Full

You can Import and Export single or multiple services via the GUI. Use the GUI right click or Service menus. Service definition XML can also be imported (installed) and exported via the command line using the FireDaemon Pro Command Line. Remember to run the command prompt (cmd.exe) as Administrator. For example, to export a specific service via the CLI:

FireDaemon Pro Export Windows Services as XML

To export all services via the CLI:

Export FireDaemon Pro Windows Services as XML

To install a service definition XML via the CLI:

FireDaemon Pro Install Windows Service as XML file

To install multiple service definitions via the CLI:

FireDaemon Pro Install Multiple Windows Services via XML

11.4.XML Service Definition File Tags

Last updated on September 21, 2018
Full

The tables below summarizes the XML service definition file tags and their valid values.

Container Tag: Program
TagRequiredData TypeValid ValuesDefault ValueDescription
NameYesText StringFree text. Prohibited characters are: /\ and the filesystem special characters /\:*?"<>|N/AThe short name of the service.
DisplayNameYesText StringFree textN/AThe display name of the service.
DisplayNamePrefixNoText StringFree TextN/AThe prefix applied to the display name.
DescriptionNoText StringFree textN/ADescription of the service.
WorkingDirYesText StringValid Windows PathN/AFull path to the working directory for the service.
ExecutableYesText StringValid Windows Path + Executable Name + ExtensionN/AFull path to and name of the executable to be run including file extension.
ParametersNoText StringFree textN/AArguments to be passed to the executable.
DelayNoIntegerGreater than 03000Number of milliseconds the service is likely to take to start.
StartUpModeNoInteger0-33Service startup mode on system boot. 0 = Manual, 1 = Automatic, 2 = Disabled, 3 = Automatic Delayed Start
ForceReplaceNoBooleantrue or falseFALSEForce the reinstallation of the service if it already exists. Not configurable via the GUI.
ApplicationTypeYesInteger1-21The application type of the service. 1 = Application (always running), 2 = Task (runs, then stops upon completion).
Container Tag: Options
TagRequiredData TypeValid ValuesDefault ValueDescription
AffinityMaskNoIntegerGreater than or equal to 00Apply a processor affinity mask to the sub-process. 0 = SMP, 1 = CPU 1, 2 = CPU 2, 3 = CPU 1 + 2 etc. The maximum possible/recognised mask value depends on the bitness of the operating system and the FireDaemon Pro executables (i.e. 32/64 bit).
PriorityNoInteger0-50Apply a scheduling priority to the sub-process. 0 = Normal, 1 = Idle, 2 = High, 3 = Real Time, 4 = Below Normal, 5 = Above Normal.
AppendLogsNoBooleantrue or falseTRUEWhether to append to or overwrite the debug log file.
EventLoggingNoBooleantrue or falseTRUEStipulates whether the service logs to the Event Log.
InteractWithDesktopNoBooleantrue or falseFALSEAllow the service to interact with the desktop.
IgnoreFlagsNoInteger00-3Ignore registry Control Flags. 0 = None, 1 = Service, 2 = Global, 3 = Both.
ConsoleAppNoBooleantrue or falseFALSEWhether the executable is console based or not.
CtrlCNoInteger0-1N/AWhat event will be sent to the Console Application during shutdown. 0 = Ctrl+Break, 1 = Ctrl+C
UponExitNoInteger0-51FireDaemon Pro action upon sub-process exit. 0 = Disabled, 1 = Restart, 2 = Terminate FireDaemon, 3 = Shutdown FireDaemon, 4 = Report the Termination, 5 = Reboot the computer
UponFlapNoInteger0-30FireDaemon Pro flap detection setting. 0 = Terminate the process, 1 = Terminate  FireDaemon, 2 = Shutdown FireDaemon.
FlapCountNoIntegerGreater than or equal to 05The maximum number of times the process can  be restarted before the flap action is taken.
UponFailNoInteger0-30FireDaemon Pro fail detection setting. 0 = Disabled, 1 = Terminate the process, 2 = Terminate FireDaemon, 3 = Shutdown FireDaemon.
FailCountNoIntegerGreater than or equal to 010The maximum number of times the process can be restarted before the fail action is taken.
ShutdownDelayNoIntegerGreater than or equal to 05000Number of milliseconds FireDaemon Pro will wait after the sub-process has been issued the WM_CLOSE message before hard terminating it. Setting this value to 0 effectively disables graceful shutdown.
ShowWindowNoInteger0-30How FireDaemon Pro initially displays interactive services. 0 = Normal, 1 = Hidden, 2 = Minimized, 3 = Maximized.
JobTypeNoInteger0-21Optionally places the service sub-process in a Global or Local Job Group. 0 = No Job, 1 = Global Job, 2 = Local Job.
LoadOrderGroupNoText StringA-Za-z0-9N/APlaces the service in the named Load Order Group.
PreShutdownNoInteger0-10Enable Pre-Shutdown notifications. 0 = Disabled, 1 = Enabled.
PreShutdownDelayNoIntegerGreater than or equal to 0180000Number of milliseconds the Service Control Manager will wait before hard terminating the service.
PreShutdownOrderNoInteger0-10Place the service in the list of Pre-Shutdown enabled services.
Container Tag: Options/Dependencies
TagRequiredData TypeValid ValuesDefault ValueDescription
GroupNameNoText StringFree textN/AForce the service to depend on the named Load Order Group. Multiple GroupName tags can be specified.
ServiceNameNoText StringFree textN/AForce the services to depend on the named Service Name. Multiple ServiceName tags can be specified.
Container Tag: Logon
TagRequiredData TypeValid ValuesDefault ValueDescription
AccountNameNoText StringFree textN/ALocal or domain user account to run the service as. The AccountName can be any of 3 well-known accounts (in SCM 'normalised' notation): "LocalSystem", "NT AUTHORITY\LocalService", "NT AUTHORITY\NetworkService".
AccountPasswordNoText StringFree textN/ALocal or domain user account password.
Container Tag: Redirect IO
TagRequiredData TypeValid ValuesDefault ValueDescription
StdoutNoText StringValid Windows Path + File Name + ExtensionN/AFull path to and name of the file to log all Stdout to.
StderrNoText StringValid Windows Path + File Name + ExtensionN/AFull path to and name of the file to log all Stderr to. Specify ToStdout to force Stderr to be logged to Stdout.
Container Tag: Debug
TagRequiredData TypeValid ValuesDefault ValueDescription
DebugEnabledNoBooleantrue or falsefalseEnable debug logging.
DebugLocationNoText StringValid Windows Path and Log File NameN/AFull path and filename to log to.
Container Tag: Environment
TagRequiredData TypeValid ValuesDefault ValueDescription
VariableNoText StringFree textN/ADefines an environment variable to be exported to the sub-process. A valid environment variable name must be supplied as an attribute of the tag.
Container Tag: SMF
TagRequiredData TypeValid ValuesDefault ValueDescription
SMFEnabledNoBooleantrue or falsetrueEnable or disable the Service Monitoring Facility (SMF).
SMFFrequencyNoIntegerGreater than 505000Number of milliseconds between polls of the sub-process to see if it still running.
Container Tag: Scheduling
NameAttribute or ElementRequiredValid ValuesDefault ValueDescription
stop_after_completionAttributeNotrue or falsetrueSpecifies whether the FireDaemon service stops after all schedules are complete.

Container Tag: Scheduling/fds:schedules/fds:schedule
The fds:schedules tag contained with Scheduling contains the schedules for a FireDaemon Pro service. Contained within the fds:schedules tag is a fds:schedule tag for each schedule. The schedules themselves all belong to namespace “http://xml.firedaemon.com/scheduling/v1”.

Schedule – Elements and Attributes

NameAttribute or ElementRequiredValid ValuesDefault ValueDescription
activity_boundaryElementNoN/AN/ASpecifies the period over which the schedule may run. Contains two attributes that may be specified, from and until. These attributes accept dates in datetime format. If from is not specified, the schedule begins running immediately. If until is not specified, the schedule runs to perpetuity.
durationElementNoN/AN/ADuration of the schedule. The options depend on the chosen duration specification type.

iso_duration specifies a time interval as a duration data type. If iso_duration is used, this value is required.

attributive_duration specifies a time interval via attributes. The time interval may be entered in some combination of seconds, minutes, hours, days, weeks, months, and years. These attributes accept integers and are optional.
inactiveAttributeNotrue or falsefalseSpecifies whether a schedule is inactive. If the value is false, the schedule is active.
intervalElementYesN/AN/ASpecifies the period over which a schedule takes place. The attributes for the interval depend on the interval type specified. The current available option is attributive_interval.
nameAttributeYestext stringN/AThe name of the schedule.
skip_delayed_onsetAttributeNotrue or falsefalseConfigures the scheduling engine to skip onsets that are too late and to rather move to the next interval. For example, if set to 'true' and restarting the program every minute took longer than a minute, the onset for the current (minute) interval would be skipped and the scheduling engine yields the next upcoming minute for the next restart. If this option is 'false', the scheduling engine would yield the onset for the current (minute) interval.

Attributive Interval Elements

NameAttribute or ElementRequiredValid ValuesDefault ValueDescription
subintervalElementNoN/AN/ASpecifies a subinterval contained within the schedule's main interval.
onsetElementYesN/AN/AThe onset of the schedule. It accepts the following values in unsigned integers: second, minute, hour, monthday, month, yearday, year.

For schedules that refer to specific days of the week or a range of days, the following values are also used:


  • weekday - Refers to the day of the week that the schedule runs. Integers between 0 and 7 are accepted, with 0 corresponding with Monday and 7 corresponding with Sunday.

  • first_dow - The first day of the week that the schedule runs. The default value is 0 for Monday if not specified.

  • nth_kday_of_month - The day of the month that a schedule runs. The attribute accepts integers between 1 and 5.

granularityAttributeYesOne of the following: second_interval, minute_interval, hour_interval, day_interval, week_interval, month_interval, and year_intervalN/AThe interval that a schedule repeats at. When used with attributive_subinterval, the granularity specifies the frequency with which a schedule repeats within the main interval. Possible values are second_interval, minute_interval, hour_interval, day_interval, week_interval, month_interval, and year_interval.
lengthAttributeNoIntegers greater than or equal to 11The multiplier to stretch the interval's granularity - e.g. day_interval length 1 means daily, day_interval length 2 means every 2nd day. When used with attributive_subinterval, the length stretches the granularity specified within the subinterval.
onset_repetitionsAttributeNoIntegers greater than or equal to 00An optional upper limit of how many times a scheduled action (duration or restart) should be performed. 0 denotes unlimited repetitions or more specifically until the end of the activity boundary; positive integer values limit the number of repetitions. Upon hitting this limit the schedule is considered completed. The default value is 0; a positive integer may be specified if a user sets a schedule directly via XML.
blueprintAttributeYesOne of the following: itemized, evenly_clocked, subinterval, subrange_interval, uptime, subrange_uptimeN/ASpecifies the type of subinterval schedule. It may take one of the following values:


  • itemized - Each onset is specified individually.

  • evenly_clocked - All onsets are equalized at a certain level. The schedule is run at the same time within each interval. For example, a weekly schedule is run at the same time each specified day, and a daily schedule is run at the same minute each specified hour.

  • subinterval - All onsets are equalized at a certain level. The scheduling engine generates onsets with the frequency as specified by the subinterval, actionized within the main interval.

  • subrange_interval - Onsets are specified in pairs denoting start and end of a subinterval (if end=start it means the whole period of the interval). All onsets are equalized within the interval.

  • uptime - Onsets are specified in pairs denoting start and end of a duration. All onsets are equalized at a certain level.

  • subrange_uptime - Onsets are specified in pairs denoting start and end of a duration, but on the same "subgranularity". All onsets are equalized at a certain level.

Container Tag: PreServices/PreService
TagRequiredData TypeValid ValuesDefault ValueDescription
WorkingDirYes (but only if container tag specified)Text StringValid Windows PathN/AFull path to the working directory for the application.
ExecutableYes (but only if container tag specified)Text StringValid Windows Path + Executable Name + ExtensionN/AFull path to and name of the executable to be run including file extension.
ParametersYes (but only if container tag specified)Text StringFree textN/AArguments to be passed to the executable. Can include environment variables.
DelayNoIntegerGreater than 03000Number of milliseconds to wait for the execution of the executable to complete.
EventOrderNoInteger1-21When to run the Pre-Service. 1 = Before Event, 2 = After Event.
DetachedNoInteger0-10Run the Pre-Server application detatched. 0 = Attached, 1 = Detatched.
Container Tag: PostServices/PostService
TagRequiredData TypeValid ValuesDefault ValueDescription
WorkingDirYes (but only if container tag specified)Text StringValid Windows PathN/AFull path to the working directory for the application.
ExecutableYes (but only if container tag specified)Text StringValid Windows Path + Executable Name + ExtensionN/AFull path to and name of the executable to be run including file extension.
ParametersYes (but only if container tag specified)Text StringFree textN/AArguments to be passed to the executable. Can include environment variables.
DelayNoIntegerGreater than 03000Number of milliseconds to wait for the execution of the executable to complete.
EventOrderNoInteger1-21When to run the Post-Service. 1 = Before Event, 2 = After Event.
DetatchedNoInteger0-10Run the Post-Server application detatched. 0 = Attached, 1 = Detatched.
Container Tag: DlgResponder
TagRequiredData TypeValid ValuesDefault ValueDescription
EnabledYes (but only if container tag specified)Booleantrue of falseTRUEDialog checking is enabled
CloseAllYes (but only if container tag specified)Booleantrue or falseFALSEWhether all dialogs are closed or closed just for this process
CheckFrequencyYes (but only if container tag specified)IntegerGreater than 05000How frequently popups are checked for in milliseconds.
IgnoreUnknownsYes (but only if container tag specified)Booleantrue or falseFALSEWhether unknown dialogs are closed by default
LogFileYes (but only if container tag specified)Text StringValid Windows Path and FilenameN/AFull path and filename to Dialog Debug Log File
ResponsesYes (but only if container tag specified)ContainerN/AN/AContains list of dialog responses
Container Tag: DlgResponder / Responses / Response
TagRequiredData TypeValid ValuesDefault ValueDescription
TitleStringYes (but only if container tag specified)Text StringFree textN/AText to match against the dialog title
ContentStringYes (but only if container tag specified)Text StringFree textN/AText to match against the dialog content
ResponseYes (but only if container tag specified)Text StringFree textN/AText to match against available buttons and "press" the button if matched
Container Tag: Recovery
TagRequiredData TypeValid ValuesDefault ValueDescription
FirstFailureYesInteger0-30Recovery trigger on first failure. 0 = Take no Action, 1 = Restart the Service, 2 = Restart the Computer, 3 = Run a Program
SecondFailureYesInteger0-30Recovery trigger on second failure. 0 = Take no Action, 1 = Restart the Service, 2 = Restart the Computer, 3 = Run a Program
SubsequentYesInteger0-30Recovery trigger on third and subsequent failure. 0 = Take no Action, 1 = Restart the Service, 2 = Restart the Computer, 3 = Run a Program
ResetFailCountAfterYesInteger>= 00Resets the fail count after n-seconds
RestartServiceDelayYesInteger>= 00Restart service delay in milliseconds
RestartComputerDelayYesInteger>= 00Restart computer delay in milliseconds
ProgramYesText StringValid Windows Path + Executable Name + ExtensionblankFull path to and name of the executable to be run including file extension
CommandLineParamsYesText StringFree textblankArguments to be passed to the executable
AppendFailCountYesBooleantrue or falseFALSEWhether the fail count is appended to the command line parameters (/fail=%1%)
EnableActionsForStopWithErrorsYesBooleantrue or falseFALSEWhether recovery actions are triggered when services stop with errors
SendMsgYesBooleantrue or falseFALSEWhether to send computers on the network a message if the machine is rebooted
RebootMsgYesText StringFree textblankThe reboot message itself

12.Pro OEM Installation and Configuration

Last updated on September 21, 2018
Full

FireDaemon Pro OEM (FDO) is a variant of FireDaemon Pro specifically designed for use by systems integrators or value added resellers that wish to bundle FireDaemon Pro with their own product or platform. FDO is designed to be included in third party-installers or used in conjunction with scripts. FDO is a superset of FireDaemon Pro. The fundamental differences are as follows:

  • No Serial Number Name or Serial Number required for installation
  • Additional command line arguments to automate the configuration of the product registry keys, executable names and help file
Distribution

FireDaemon Pro OEM is distributed as a ZIP file. No .EXE or .MSI installer is shipped with the product. The ZIP file contains documentation, required Visual C++ Runtimes, skins and binaries (EXE/DLL) specific to 32-bit and 64-bit Windows platforms. The top level contents of the ZIP file is below:

MSXML Compatibility

FDO requires MSXML6 (Microsoft XML Core Services). MSXML6 is distributed on all supported platforms except Windows Server 2003; On Windows Server 2003 MSML6 must be installed as a prerequisite – the “msxml6-KB973686-enu-*.exe” shortcut files point to their respective download location at Microsoft. Details of MSXML versions can be found here.

Installation Fast Track

You would typically automate this process. Prior to starting ensure Microsoft Windows is fully patched via Windows Update.

Before beginning, select a product name, denoted by <ProductName> below. This customised name gets used throughout the FireDaemon Pro application plus in various filesystem folders and registry keys plus as source name in the Windows Application Event Log.

  • Log in as a local or domain administrator
  • Unpack the OEM ZIP file to a temporary folder
  • Create C:\Program Files\FireDaemon Pro OEM folder

(Windows Vista and later) Create the following folders:

  • %ProgramData%\<ProductName>\ServiceDefinitions
  • %CommonProgramFiles%\<ProductName>\ServiceDefinitions

(Windows XP) Create the following folders:

  • %ALLUSERSPROFILE%\<ProductName>\ServiceDefinitions
  • %CommonProgramFiles%\<ProductName>\ServiceDefinitions

Copy the Default Template.xml file into the %ALLUSERSPROFILE%\<ProductName>\ServiceDefinitions folder (or %ProgramData%\<ProductName>\ServiceDefinitions for Windows Vista or later).

Then run the appropriate vc_redist.exe file — x86 for 32-bit operating systems, x64 for 64-bit operating systems.

Modify HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices to ensure it is 0.

Open an elevated command prompt. At that prompt, navigate to the FireDaemon Pro OEM folder and enter: FireDaemon --configure.

Run C:\Program Files\FireDaemon Pro OEM\FireDaemonUI.exe via Explorer to check the app will launch and elevate correctly.

Start another elevated command prompt and then run the following to install a service via the CLI: FireDaemon.exe --install test.xml

On Windows Vista or later ensure the UI0Detect (Interactive Services Detection Service) is started and running. At an elevated command prompt:

sc config UI0Detect start= auto
net start UI0Detect

Installing FireDaemon Pro OEM Alongside FireDaemon Pro

If you already have a version of FireDaemon Pro installed we recommend that you unzip the ZIP file into a temporary directory. Then copy the required components into the directory “C:\Program Files\FireDaemon Pro OEM”. FDO should never be installed into “C:\Program Files\FireDaemon” or “C:\Program Files\FireDaemon Pro” in order to avoid conflicts with current or future FireDaemon Pro installations.

Creating Optional Environment Variables

You can create two global environment variables: FIREDAEMON and FIREDAEMON_HOME to ease configuration. Note that this is entirely optional and these environment variables are not required for FireDaemon Pro OEM to run. To create global environment variables, enter the following at an elevated command prompt:

setx FIREDAEMON_HOME "C:\Program Files\FireDaemon Pro OEM" /m
setx FIREDAEMON "%FIREDAEMON_HOME%\FireDaemon.exe" /m

FireDaemon Pro OEM Registry Keys

In order to successfully setup FDO, your installer will either need to create a series of registry keys or you can use the command line functionality to do this for you.

On x86 (32-bit systems) using the 32-bit version of FDO or x64 (64-bit systems) using the 64-bit version of FDO create this top level key:

HKLM\SOFTWARE\FireDaemon Technologies\FireDaemon Pro OEM

On x64 (64-bit systems) using the 32-bit version of FDO create this top level key:

HKLM\SOFTWARE\Wow6432Node\FireDaemon Technologies\FireDaemon Pro OEM

The product configuration registry value names/values are:

NameTypeValue
HelpFileREG_SZhttps://www.firedaemon.com/documentation/firedaemon-pro/
InstallationDirREG_SZUnquoted path to where FDO has been deployed (e.g. C:\Program Files\FireDaemon Pro OEM)
ProductFlavorREG_SZOEM
ProductNameREG_SZFireDaemon Pro OEM
ProductShortNameREG_SZFireDaemon
ServiceExeREG_SZFireDaemon.exe
TurnOffInSessionCommandsREG_DWORD0
TurnOffSession0SwitchREG_DWORD0

Global product settings are located under HKLM\SOFTWARE\FireDaemon Technologies\FireDaemon Pro OEM\GlobalSettings\Services:

NameTypeValue
AutostartsOffOnInstallREG_DWORD0
CloneNamePrefixREG_SZClone-
CloneNameSeparatorREG_SZ-of-
ControlREG_DWORD0
UseCloneNameSeparatorREG_DWORD1

Global preferences for all users are located under HKLM\SOFTWARE\FireDaemon Technologies\FireDaemon Pro OEM\GlobalSettings\Preferences:

NameTypeValue
AffinityRadixREG_DWORD10
FilterServicesREG_DWORD1
RefreshFreqREG_DWORD30
SplashOnREG_DWORD1
SuppressPopupsREG_DWORD0
SummaryToolTipDelayREG_DWORD1000
VersionCheckREG_DWORD0

All global preference values get replicated and stored individually for each user by the FireDaemon Pro GUI at HKCU\Software\FireDaemon Technologies\<ProductName>\BCGWorkspace\Preferences.

The FireDaemon Pro GUI recalls the most recent application window placement and width of list columns and sorting. Those values are stored under their respective registry subkey located under HKCU\Software\FireDaemon Technologies\<ProductName>\BCGWorkspace.

Irrespective of platform, create the following top level key:

HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\<Product Name>

Then create the following registry values underneath:

NameTypeValue
EventMessageFileREG_SZPath to FDO's Core.DLL (e.g. C:\Program Files\FireDaemon Pro OEM\Core.dll)
TypesSupportedREG_DWORD7
CategoryMessageFileREG_SZPath to FDO's Core.DLL (e.g. C:\Program Files\FireDaemon Pro OEM\Core.dll)
CategoryCountREG_DWORD1
Setting Up FireDaemon Pro OEM Via The Command Line

To complete the setup of FireDaemon Pro OEM and to have the registry keys and filesystem folders automatically created for you, use the following command line syntax::

"C:\Program Files\Firedaemon Pro OEM\firedaemon.exe" --configure --ProductName="FireDaemon Pro OEM" --ProductShortName="FDO" --HelpFileName="https://www.firedaemon.com/documentation/firedaemon-pro/"

After configuration the Default Template.xml file should be copied into the ServiceDefinitions folder.

The command line options are case sensitive and are described below:

OptionDescription
--configureThis instructs FireDaemon Pro OEM to set up the registry and create necessary filesystem folders. The InstallationDir registry key is set by determining the location of the firedaemon.exe either via explicit path (e.g. "c:\some\path\firedaemon.exe") or implicit path based on current working directory. This argument is mandatory.
--ProductNameThis is the full name of the product. If not set it will default to "FireDaemon Pro OEM". This string is displayed in the title bar of the main GUI window and various other places including the command line and logs. This argument is optional.
--ProductShortNameThis is an abbreviated name of the product. If not set it will default to "FireDaemon". This string is displayed in various message and dialog boxes. This argument is optional.
--HelpFileNameThis is the URL or the file name, excluding any path information, to the FireDaemon Pro OEM help. This argument is optional and allows you to specify an alternate help file. HelpFileName can be any URL or file that Windows Explorer can open including URLs and file types such as PDF, CHM, shortcut containing a URL or any other file system object. The file (or filesystem object) must exist in the installation directory otherwise registry configuration will fail. This argument has three valid values:


  • Double quoted name of the replacement help file excluding the path (e.g. "MyHelp.chm" or "MyHelp.pdf")

  • Empty double quotes (i.e. ""). This will signify no help and disable F1 and Help->Contents menu in the FireDaemon Pro OEM GUI.

  • Omitted entirely where the help file will be set to the default of https://www.firedaemon.com/documentation/firedaemon-pro/



Any pre-pended path is stripped from the argument during configuration as the HelpFile value is appended to the InstallationDir value.
--TurnOffSession0Switch[=yes]Setting this option to Yes hides and disables 'Switch To Session 0'.
--TurnOffInSessionCommands[=yes]Setting this option to Yes hides and disables the 'Start Service In-Session' functionality.
Renaming FireDaemon.exe and FireDaemonUI.exe

FireDaemon.exe can be renamed. To ensure FireDaemon recognises the EXE name change make sure you update the ServiceExe registry key listed above to reflect the new name of the EXE. Additionally when you use the –configure option mentioned above, FireDaemon will automatically populate the ServiceExe registry key with the new EXE name. For example:

MyServiceApp.exe --configure

This will populate ServiceExe with MyServiceApp.exe. Note that ServiceExe is appended to the installation directory. ServiceExe should only contain the file name and extension delimited by a period (i.e. “.”). No path is permitted in ServiceExe.

Ramifications of Renaming FireDaemon.exe and FireDaemonUI.exe

If you choose to change the name of FireDaemon.exe, the only services that will be displayed in the FireDaemon GUI will be those where the ServiceExe matches the ImagePath registry key found in the service configuration itself typically located under HKLM\SYSTEM\CurrentControlSet\Services\<MyServiceName>. So if you decide to use the default name (i.e. firedaemon.exe) then rename the EXE and update the ServiceExe registry key – your pre-existing services won’t be recognised as FireDaemon services anymore, and will be hidden in the FireDaemon services list in the FireDaemon GUI.

FireDaemonUI.exe can be renamed with impunity. Core.dll and Core.manifest cannot be renamed.

Uninstalling FireDaemon Pro OEM

When cleaning up your installation ensure that you stop all FDO services in advance, then uninstall them prior to deconfiguring the registry. For example:

FireDaemon.exe --stop-all
FireDaemon.exe --uninstall-all
FireDaemon.exe --deconfigure

The complete list of CLI options can be found via: firedaemon --help

UAC and Session 0 Isolation

Ensure you familiarise yourself with UAC and Session 0 Isolation limitations when running FDO on Windows Vista or later.

Theming and Branding FireDaemon Pro OEM

FireDaemon Pro OEM is highly customisable from a theming and branding perspective. Please refer to the Theming and Branding section of this manual for more information.

What to Redistribute?

The following files should be minimally included in your installer or deployed on your platform. They must all reside in the same directory:

FileDescription
FireDaemon.exeFireDaemon Pro OEM service and command line executable
Core.dllFireDaemon Pro OEM Shared Library
FireDaemonUI.exeFireDaemon Pro OEM GUI executable
Licensing.dllFireDaemon Pro licensing logic

FDO is technically classified as a “native or unmanaged Visual C++ .NET application” and requires the Microsoft Visual C++ Runtime. The Visual C++ Runtime redistributable packages are included in the ZIP file or can be downloaded directly from Microsoft. Please ensure you install the 32-bit runtime to accompany the 32-bit version of FDO on 32-bit or 64-bit operating systems. Please ensure you install the 64-bit runtime to accompany the 64-bit version of FDO on 64-bit operating systems.

License Restrictions

The FireDaemon End User License Agreement allows a corporation to redistribute FDO royalty free as part of a product or platform. It is prohibited for FDO to be re-distributed or sold as a standalone product or be made available for public download.

13.CPU Binding

Last updated on August 18, 2018
Full

When you run your application under FireDaemon Pro you can stipulate the CPU Binding. CPU Binding allows you to specify which CPU or core or combination of CPUs or cores your application can run on. This is particularly useful on multi-processor multi-core machines where the process consumes many CPU cycles and you do not want the process to overwhelm the machine or you wish to explicitly direct a processes’ load onto a particular processor. CPU Binding under Windows is implemented by way of an Affinity Mask. The mask is a bitmap (represented as the integer in the first column below) that determines on which processors your application can run. The table below provides some valid values that you would use when modifying or creating your own FireDaemon Pro service definition XML. Note that FireDaemon Pro service definition XML only supports the CPU Binding in decimal (Base 10). Additionally the Affinity Mask relates to the specific core(s) the process is run on and not the number of cores the process is run on. Further, the x86 architecture is little endian. This means that the binding is determined by the bits set from right to left. For example, in the Binary Mask column, the value on the far right represents the first core. More information regarding the CPU Binding and the Affinity Mask can be found here.

Decimal Mask
(Base 10 - 0..9)
Binary Mask
(Base 2 - 0..1)
Hex Mask
(Base 16 - 0..F)
Cores Process Is Run On
000All
1111
510153, 1
101010A4, 2
151111F4, 3, 2, 1
1001100100647, 6, 3
100011111010003E810, 9, 8, 7, 6, 4
1000010011100010000271014, 11, 10, 9, 5
327691000000000000001800116, 1

14.Running FireDaemon Pro on Windows Vista, 2008 or Later

Last updated on August 18, 2018
Full

Windows Vista, Server 2008, 7, Server 2008 R2, 8, Server 2012, 8.1, Server 2012 R2, 10 and Server 2016 have several security features that can make running services with FireDaemon Pro challenging.

User Access Control (UAC)

The FireDaemon Pro Service Manager program needs to run as an administrative user in order to be able to gain access to the Service Control Manager. When you install FireDaemon Pro, different executables are deployed that work around most of the UAC limitations. However, if UAC is enabled, some features of FireDaemon Pro no longer work or behave differently. These are specifically:

  • Dragging XML service definition configurations onto the FireDaemon Pro GUI is disallowed
  • The FireDaemon Pro Console Application (CLI) will be run in a separate console window
  • Saving files into the FireDaemon Pro installation directory is disallowed
  • Various UAC popups confirming your actions when you run the FireDaemon Pro installer or FireDaemon Pro Service Manager will be presented.

To restore this functionality, simply disable UAC. To do this run msconfig.exe from a command prompt. Go to the Tools tab and scroll down until you find Change UAC Settings. Click the Launch button and then reboot your computer. UAC will now be disabled. The FireDaemon Pro installer gives you the opportunity to disable UAC during the installation process.

Session 0 Isolation and Interactive Services Detection Service

Since Windows Vista, Windows services are run in Session 0 and all other user initiated applications in other sessions. This is to protect services from attacks that originate in application code. In Windows Server 2003 and earlier versions of Windows, all services run in Session 0 along with applications. For a detailed explanation of Session 0 Isolation refer to this article.

The effect of this change is that interactive services are no longer immediately visible when you install them. You can work around this by enabling and starting the Interactive Services Detection Service. The FireDaemon Pro installer does this for you by default, however, if you want to enable it yourself, type the following two command at a command prompt:

sc config UI0Detect start= auto
net start UI0Detect

NB. UI0Detect is UI “zero” Detect.

On Windows 8 / Server 2012 or later, Interactive Services are disabled system wide by default. This means the Interactive Services Detection Service may fail to run. To resolve this simply use the Registry Edit and look for the key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows. Then change the value NoInteractiveServices from 1 to 0. Note that the FireDaemon Pro retail installer takes care of setting this registry value for you during product installation.

Now when you run interactive services, you will see the Interactive Services Detection dialog popup. If you click on “Show me the message” you will be switched onto Session 0. NOTE: Only GUI based applications will trigger the popup. Console based applications will not trigger the popup. The two screen shots below illustrate this. It is also a good idea to make your services depend on the UI0Detect service. This means the UI0Detect will be up and running before your service is started and will prompt you to switch to the Session 0 desktop immediately.

After installation of an interactive service you will see the following popup:

When you click on “Show me the message” you will be switched to Session 0. For example:

Your mileage may vary but it is possible to actually launch a semi-sensible desktop back on Session 0 . Use FireDaemon Pro to launch cmd.exe and then run Windows Explorer (c:\Windows\Explorer.exe) back on Session 0. Not everything works perfectly but you can now run your desktop as the SYSTEM account! This works well on Windows 7 or 2008 R2. On Windows 8 / 2012 or later – this technique doesn’t work at all and you will need to use FireDaemon Zero and FireDaemon ZeroInput instead.

To learn more about running interactive services on Session 0 as a Windows service, visit the Knowledge Base here.

Suggest Edit