Dependencies

itch uses a few external tools to download & manage content.

It installs and keeps them up-to-date automatically, which means you should never have to worry about them. However, in the interest of you knowing what runs on your computer, they're documented here.

Everything is downloaded from our download server at https://dl.itch.ovh.

Third-party programs like unarchiver or firejail are built from source. Home-grown programs are continuously built on our CI servers.

Directories

All dependencies are downloaded and extracted into the following folders:

  • %APPDATA%\itch\bin on Windows
  • ~/Library/Application Support/itch/bin on OSX
  • ~/.config/itch/bin on Linux

Packages

unarchiver

The Unarchiver is a GUI application for OS/X that can extract a great number of archive formats. Its underlying compression engine is cross-platform and comes with command-line utilities.

It is distributed by Dan Ågren under the LGPL 2.1

It's the first thing itch downloads, and the only uncompressed package we distribute. Subsequent dependencies are distributed in the .7z archive format, which helps us keep downloads fast.

  • e.g. a 15MB butler executable compresses down to a ~3MB .7z archive

The version distributed on dl.itch.ovh is built from source and is digitally signed where applicable (windows, macOS).

butler

butler is a homemade (itch.io-made) command-line tool, distributed under the MIT license.

Its source code is available here, for you to audit, debug, and improve at will:

Building your own version is as simple as running:

go get -v github.com/itchio/butler

(assuming you have Go 1.6+ installed on your system)

You can drop your custom build of butler in the directories described in the Directories section of this page — if it reports version head, itch will not attempt to update it.

elevate

elevate is a homemade (itch.io-made) command-line tool. Its purpose is to allow launching external processes (such as game installers) with elevated privileges, by asking the user permission with an UAC prompt.

Its source code is available here, for you to audit, debug, and improve at will:

activate

activate is a homemade (itch.io-made) command-line tool. Its purpose is to interact with macOS in ways that are not possible directly from Electron.

Its source code is available here, for you to audit, debug, and improve at will:

firejail

firejail is a sandbox for Linux that have very few dependencies (except a 3.x kernel). It is used by the itch app to run games sandboxed, see Linux sandboxing

The version distributed on dl.itch.ovh is built from source, on our CI server

Implementation

The logic for downloading, extracting and installing itch dependencies can be found in ibrew.js and required files.

The authors are aware of the irony of having an ad-hoc, half-baked Implementation of a package manager inside a package managing application, itself installed by various other package managers, and there is no need to point it out!

results matching ""

    No results matching ""