Installers structure

Each installer is a set of instructions and these are saved in manifests (YAML files) which are interpreted by Bottles. For this it is important that the structure of these is correct, otherwise Bottles will not be able to process them.


Like Dependencies each manifest has two parts:

The header is the first part of the manifest, it contains the metadata of the installer and its dependencies if any.

The header must provide the following keys:

These keys are used by Bottles to show the installer in the Installers view and handle its requirements before proceeding with the installation. Let’s see an example:

Name: epicgamestore
Description: The official Epic Games launcher.
Grade: Platinum
Arch: win64

- d3dx9
- msls31
- riched20
- allfonts
- d3dcompiler_43
- d3dcompiler_47
- vcredist2015

  dxvk: true
  sync: esync
  discrete_gpu: true
  name: Epic Games Store
  icon: epicgamestore.svg
  file: EpicGamesLauncher.exe
  path: Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe
  arguments: -opengl -SkipBuildPatchPrereq
- action: install_msi
  file_name: EpicGamesLauncherInstaller.msi
  file_checksum: ebde67191bc1a483fd821daf8e01ce46
  arguments: /q

    - Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe

In this example, the installer is named epicgamestore, the grade is Platinum, the needed bottle arch is win64 and it depends on the following dependencies:

It also has the following parameters:

Finally it configure the Executable and add a new entry in the bottle programs list. The path key also support the userdir/ placeholder, which will be automatically replaced by Bottles using the right user path, so use this if the executable is placed in the user directory (e.g. drive_c/users/john/AppData/Program/Program.exe).

This installer came with an optional Checks key, which can be used to look for one or more files, to ensure the installation was ended successfully.


Like dependencies, each installer has a set of steps that must be executed in order to install the software. Each step define an action type and a set of parameters.

Note: the steps are executed in the order they are listed in the manifest, so be careful when you add a new one, if your new step depends on the previous one, you should add it after the previous one.


Despite YAML is a simple language and our installer syntax is very simple and should be very easy to read, it is still possible to write comments in the manifest to explain what is going on or why it is needed:

- action: install_msi
  file_checksum: e413dfc296c3701416e3fe5af45aedbf
  # Downloading the file . . .