Installation and Update Systems for Windows (Part 1): The History of LiveChat Application

Krzysztof Górski in Programming, on November 30, 2015, Comments

When looking at the history of LiveChat application one can easily notice that LiveChat desktop application for Windows took many shapes and forms over the years, but regardless of its features and appearance, two of its tasks are common for practically all desktop applications: installation and update.

In this series of blog posts, I will describe installation and update systems that the LiveChat application used before and uses now. This will also show you how the application itself changed with time.

I started working for LiveChat in 2006 as a Windows desktop application developer and many things looked different back then. Especially LiveChat desktop application for Windows. It was developed using Visual C++ and MFC, with a help of Codejock visual controls library, which allowed the application to look better than just a dull and grey, rectangle window.

History of LiveChat - LiveChat application over the years LiveChat desktop application over the years

The installer

The tool used for the application deployment was Nullsoft Scriptable Install System (NSIS), an open source system for creating Windows installers. It creates lightweight and fast installers, and provides many features, both built-in and plugged-in. Frankly, the amount of available plugins is almost intimidating. There are plugins for launch condition detection, prerequisites installation, database support, compression, special visual effects and many, many more.

At first, creating a script for the first simple installer may be a little overwhelming, but there are almost as many helpful tutorials and examples as plugins, which is a lot. Once you get past this first hurdle, development of more complicated projects is quick, pleasant and satisfying.

History of LiveChat - NSIS LiveChat installer NSIS LiveChat installer

LiveChat application NSIS installer was simple, required minimum user engagement, yet provided expected customisation capabilities. Default installer pages allowed to read EULA, select destination folder and display installation progress. Custom page let the user choose the shortcuts location and whether the application should start after the installation is completed. The script included custom actions for checking whether the application was already running and the user had privileges to install software. The installer ran fast and seldom crashed.

Meanwhile some of LiveChat customers, mostly corporate, required the installer in a form of a MSI package, which the NSIS could not produce. To meet this demand, the MSI installer was created using Setup Project in Visual Studio 2005, as it was the easiest and the fastest way at that time. It didn’t look great and lacked some customisation properties but it was sufficient, especially since the installation in corporate environments is usually performed remotely and silently.

MSI LiveChat installer

MSI LiveChat installer

The updater

Basically an application update is a four step process:

  1. The updater asks for the newest application version information. The location of that information is stored in updater’s configuration.
  2. The update server returns newest version number with the information where the update package can be downloaded from.
  3. If there is newer application available, the updater downloads the package.
  4. The updater closes the application, installs the update and starts the application again. To do so, the updater should be separated from the application itself as a different process.

At first, the LiveChat desktop application didn’t have any proper updater. It just downloaded the newest application installer when it was available, and depended on the user to run it manually. The update ratio was low, so it was clear that the LiveChat application needed something more effective.

The CatenaLogic Updater seemed like the appropriate solution. It was able to perform all updater tasks, as you would expect, and additionally allowed for differentiating between updates for older and more recent applications. It was possible because update packages were prepared as ZIP archives containing update files. The ‘small’ update package contained only recent changes to the application, while the ‘big’ update package, intended for older versions, contained all files that changed over a longer period of time. The upside of this solution was that most users downloaded the smaller package. The downside - you had to prepare and maintain separate update packages aside from the installer.

History of LiveChat - CatenaLogic Updater statistics for LiveChat application in 2010 CatenaLogic Updater statistics for LiveChat application in 2010

With the Updater, the update process demanded less engagement from the user, which improved the update ratio, so this solution became an integral part of the LiveChat desktop application for a couple of years. Unfortunately, CatenaLogic ceased to develop its product, which meant that neither any bugs could be fixed, nor any feature request fulfilled.

Meanwhile, inspired by the Slack desktop application for OS X, LiveChat decided to create a new desktop application in a form of a smart client - web application wrapped in a desktop application window.

New application, based on new technologies, provided us with the opportunity to search for new solutions for application installation and update. But that’s a topic for another post in this series.