A repurposable application-downloader and -launcher

View the Project on GitHub setlog/trivrost

Building trivrost

trivrost needs certain resource files generated with go generate and then can be built using go build. Depending on the operating system and for extra debug information, additional flags are required. For convenience a Makefile is provided with several make targets. The default target detects the OS and will build all project components and can be run using just make inside the project root. The resulting binaries are placed under the out/update_files/<windows|linux|darwin>/ subdirectory.

In this document, we will focus on how to get the project to build, i.e. successfully run just make, disregarding its configuration for now. Additional make-targets are mentioned further below.

Common prerequisites




  1. go get -d -u
    • Ignore warnings about missing .go-files.
  2. cd ${GOPATH}/
  3. make copy-test-files
  4. make



Further instructions

  1. Install mingw-w64 (specifically the Mingw-builds package) as a recent GCC-compatible compiler.
    • For Architecture, choose x86_64.
    • For Threads, choose win32.
    • For Exception, choose seh.
    • Add the bin folder of MinGW to your %PATH%.
  2. Install Cygwin. (Cygwin effectively simulates a Linux environment with typical Linux developer tools, which we currently need to run make on Windows; getting away from this is an open issue)
    • When prompted what packages to install, add make.
    • Do not use Cygwin GIT, as it is currently outdated and broken.


  1. go get -d -u
    • Ignore warnings about missing .go-files.
  2. Open the Cygwin Terminal and enter the following commands. Note that you can run the Unix command ls -la at any time to see what’s in the current directory.
  3. cd ${GOPATH}/ (Note how after entering the command, the working directory starts with /cygdrive/, under which Cygwin mimics your Windows drives.)
  4. make copy-test-files
  5. make

Additional make targets

Run make help to see all available targets. To force trivrost to spawn a console which shows log output when starting on Windows, set environment variable TRIVROST_FORCECONSOLE to anything non-empty.

You can run make bundle to build an archive of the program for distribution. Requires zip on MacOS and tar everywhere else.

On Windows, you can sign the binary by running make sign. For this to work, install signtool from the Windows SDK and put a base64-encoded p12 certificate into the environment variable CERT_FILE and its password into CERT_KEY.


It is possible to create an MSI package with bundles which get installed system-wide and cannot be updated. The bundles that should be prebundled need a JSON-array under the key Tags containing an element called "msi" in the deployment-config. The launcher will no longer be able to update itself and store those bundles under a directory called systembundles under the ‘Program Files’ directory. (Usually: C:\Program Files\Vendor\Product). We call this a system mode installation.