Installation Strategies

Why have an integrated installer, what it does, and how you can benefit from different installation strategies.

Why we built an integrated installer

First and foremost, we the developers built Dull to solve problems we had a software engineers. So it was built to be versatile in this area, running Portable, and as a Service.


Dull can easily run as a portable software, running from any place on the file system with administrative rights, having a config.json file in the same folder, and running it using dull run.

Run as a Service

Remote machines need to be available for connection all the time at startup, and that means installation as a service.

The Minimum

Our principle for "The Minimum" means that we couldn't rely on external software solutions, we wanted to maintain the portable command-line nature, and we had some particular scenarios in mind that mainstream installer solutions wouldn't be able to help with.

Rapid touchless installation

Given a large number of potential remote machines to install, the installation process needs to be as fast and touchless where possible. The user should be able to double-click the program after downloading, directly from a flash drive, or included in an operating system image as part of the system imaging process.

Order of strategy checking

So we decided to build a range of very specialized and novel installation feature directly into Dull. The configuration file is a common tool used to facilitate all strategies.

Dull uses the following rules to determine if installation is required, and which strategy to use.

  1. Check if Installation procedure should start

    1. If the install command-line argument is included, then installation will occur; OR

    2. If no parameters are specified, and the default installation path doesn't include Dull, then the user is asked if they want to install. If the respond yes, installation will occur.

  2. Ensure the Configuration saved to the install path

    1. If it already exists in the executable directory, then the configuration is initialized; OR

    2. Use the Homing and Await method; OR

    3. Use the Filename derived configuration method; OR

    4. Use the Manual Entry method; OR

    5. Create a default configuration from Dull.default.config.json program resource

    6. NOTE: Packaged configuration, requires code changes, and is not available during beta release of the software for customers.

  3. Ensure the Executable file is installed

    1. For Windows, C:\Program Files\Dull\Dull.exe

    2. For Ubuntu 18.04, /opt/dull/dull.exe

  4. Install the Service - Windows and Ubuntu 18.04 are supported

  5. Start the Service

Make sure you use dull run to run dull interactively on the command-line. That specific command is needed, so that installation can be the default process to try if the user double-clicks the program after downloading and no command-line parameters are supplied.

A range of options

Here is the overview of the installation strategies that are supported with particular scenarios in mind.

Manual Entry

Is the fallback, requiring the user to interactively type in the URL where to download the configuration file from.

Filename derived configuration

Allows a default configuration to be downloaded, with the URL found in the filename of the program itself. With this strategy, a mainstream version of Dull can be used.

Packaged configuration

A specially compiled version of Dull is prepared with a default configuration file as a packaged resource. Inquire for a quote at [email protected]

Homing and Await

Connects to a web service, with the URL specified in the filename or packaged configuration file. That web service is standardised, and anyone can build a compliant web service that integrates with their own web application.