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

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.

Categorised in:

  • Bryan Channon

    The chromium wrapper style of applications is such a double edged sword. Slack is a good example, because I use it and find it eats memory and is always sluggish as it has to redraw chat history when switching between channels. HipChat on the other hand has native applications on Windows, OSX and Linux and each feel and perform as actual native clients.

    I never used LCI’s web offering. I personally found the UI to be too silly and trendy. What’s wrong with putting open chats in tabs!? Those circles with maps in are just pointless eyecandy. I opted to use the Windows application that listed them all neatly on the side and performed much better than even Chrome!

    Reading between the lines, you can now drop a fairly significant codebase used by relatively few people in favour of a simple codebase that will be cross platform. I’d imagine that’s also the core motivation for applications like Slack, Postman, Atom, etc.

    • Krzysztof Górski

      You are right – a smart client may be not as fast and optimized as a native application, however it significantly speeds up development, and allows to release new features for different platforms sooner and at the same time.

      We are aware that the current layout of chats may not utilise available space very efficiently, but we are working on it.

      Thanks for your comment.

  • Pingback: Installation and update systems for Windows. Part 2: ClickOnce - as simple as it gets? - LiveChat Developers()

  • Magdalena Becerra

    Great Article. ideas ! I was enlightened
    by the insight . Does anyone know where my assistant might get ahold of a
    sample IRS 1040 version to fill out ?

    • Ava Cueto1

      Greetings Magdalena Becerra . my friend worked with a sample IRS 1099-A example at this place