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!