Skip to content

Complete automation software for installing/uninstalling Chaos products.

Notifications You must be signed in to change notification settings

svetlozardraganov/chaos-installer

Repository files navigation

Chaos Installer

Complete automation software for installing/uninstalling Chaos products with support for:

  • All Chaos products
  • All Operating Systems Windows, Linux, and macOS.
  • All installation types (Official, Nightly, ZIP/Arbitrary)
  • Product Uninstallation
  • License Listener
  • Settings

Overview / Problem solved

QA and Support engineers' daily tasks require multiple installations/uninstallations of various versions of the products. This although a simple task requires some effort from the team members and also causes inconveniences. The main idea of the tool is to optimize/automate the process of downloading and installing the software and make it much more pleasant for the engineer.

Challenges

First challenge:

Huge variations of Chaos Products and their versions. There aren't common standards established between different products and versions. Naming conventions, environment variables, parameters, etc are very different from product to product and from version to version. This extreme versatility requires lots of classes and functions to be aware of those discrepancies to properly install and remove the software.

Second challenge:

Different Host Platforms (DCC) integrations. Chaos products support more than 10 different host applications. For each host application, Chaos products support at least the latest 5 versions. Similarly, as the first challenge, there aren't established standards between different host applications, and different versions of the host applications and in combination with the first challenge, the complexity of the classes and functions increased even more.

Third Challenge:

Different Operating Systems. The tool supports Windows, Linux, and macOS. Most of the functions have completely different implementations between the different Operating Systems.

Combining the above points with a variety of internal functions makes the whole project a lot more complex than it looks on the surface.

Disclamer

FTP and HTTP connection information has been removed due to their sensitivity. This will make the code unusable but this is not important since the project is for demonstration purposes only.

Technology

The project is built mainly on Python and PyQt. Of course, many python standard libraries have been used to deliver additional functionality like:

  • os, json, time, datetime, sys, platform, tempfile, subprocess, operator, logging, shutil, ftplib, re, requests, winreg, zipfile, pathlib, threading, csv, signal, xml.etree.ElementTree, asyncio.format_helpers

What I learned

  • How to build software that supports multiple OSes
  • How to build GUI applications with PyQT library
  • How to build software entirely on OOP
  • Work with Windows Registry
  • How to run processes on separate threads
  • How to separate complex project into modules/classes

Examples

image image image image