lutris/docs/installers.rst

127 lines
4.1 KiB
ReStructuredText
Raw Normal View History

2013-05-25 05:48:03 +00:00
==================
Writing installers
==================
2013-06-09 22:00:52 +00:00
Fetching required files
=======================
2013-06-17 22:05:32 +00:00
The ``files`` section of the installer references every file needed for
installing the game. The section's keys are an unique identifier used later by
the installer. The value can be either a string containing an URI pointing at
2013-06-09 22:00:52 +00:00
the required file or a dictionnary containing the ``filename`` and ``uri`` keys.
2013-06-17 22:05:32 +00:00
The ``uri`` key is equivalent to passing only a string to the installer and the
2013-06-09 22:00:52 +00:00
``filename`` key will be used to give the local copy another name.
2013-06-17 22:05:32 +00:00
If the game contains copyrighted files that cannot be redistributed, the value
should be ``N\A``. When the installer encounter this value, it will prompt the
2013-06-09 22:00:52 +00:00
user for the location of the file.
2013-06-17 22:05:32 +00:00
If the game makes use of (Windows) Steam data, the value should be
``$WINESTEAM:appid:path/to/data``. This will check that the data is available
2013-06-09 22:00:52 +00:00
or install it otherwise.
2013-06-18 00:13:03 +00:00
Installer meta data
===================
Installing mods and add-ons
---------------------------
Mods and add-ons require that a base game is already available on the system.
2013-06-28 10:15:37 +00:00
You can let now the installer that you want to install an add-on by specifying
the ``requires`` directive. The value of ``requires`` must be the canonical
2013-06-18 00:13:03 +00:00
slug name of a game, not one of its aliases. For example, to install the add-on
2013-06-28 10:15:37 +00:00
"The reckoning" for Quake 2, you should add:
2013-06-18 00:13:03 +00:00
``requires: quake-2``
2013-06-17 22:05:32 +00:00
Writing the installation script
===============================
After every file needed by the game have been aquired, the actual installation
can take place. A series of directives will tell the installer how to set up
the game correctly.
2013-05-25 05:48:03 +00:00
2013-05-25 11:08:39 +00:00
Displaying an 'Insert disc' dialog
----------------------------------
The ``insert-disc`` command will display a message box to the user requesting
2013-05-25 11:08:39 +00:00
him to insert the game's disc into the optical drive. A link to CDEmu homepage's
and PPA will also be displayed if the program isn't detected on the machine,
2013-05-25 11:08:39 +00:00
otherwise it will be replaced with a button to open gCDEmu.
An optional parameter ``message`` will override the default text if given.
2013-06-17 22:05:32 +00:00
Moving files and directories
----------------------------
2013-05-25 05:48:03 +00:00
Move files by using the ``move`` command. ``move`` requires two parameters:
2013-05-25 05:48:03 +00:00
``src`` and ``dst``.
The ``src`` parameter can either be a ``file id`` or a relative location. If the
parameter value is not found in the list of ``file ids``, then it must be
2013-05-25 05:48:03 +00:00
prefixed by either ``$CACHE`` or ``$GAMEDIR`` to move a file or directory from
the download cache or the game installation dir, respectively.
The ``dst`` parameter should be prefixed by either ``$GAMEDIR`` or ``$HOME``
to move files to path relative to the game dir or the current user's home
2013-05-25 05:48:03 +00:00
directory.
The ``move`` command cannot overwrite files.
2013-06-28 10:15:37 +00:00
Example:
::
move:
src: game-file-id
dst: $GAMEDIR/location
2013-06-17 22:05:32 +00:00
Copying and merging directories
-------------------------------
2013-06-28 10:15:37 +00:00
Both merging and copying actions are done with the ``merge`` directive.
Whether the actions acts as merge or copy depends of the existence of the
destination directory. When merging into an existing directory, original files
2013-06-17 22:05:32 +00:00
with the same as ones present in the merged directory will be overwritten, take
this into account when writing your script and order your actions accordingly.
2013-06-28 10:15:37 +00:00
Example:
::
merge:
src: game-file-id
dst: $GAMEDIR/location
2013-06-17 22:05:32 +00:00
Extracting archives
-------------------
2013-06-28 10:15:37 +00:00
Extracting archives is done with the ``extract`` directive, the ``file``
argument is a ``file id``. If the archive should be extracted in some other
location than the ``$GAMEDIR``, you can specify a ``dst`` argument.
Example:
::
extract:
file: game-archive
dst: $GAMEDIR/datadir/
Making a file executable
------------------------
Marking the file as executable is done with the ``chmodx`` command. It is often
needed for games that ships in a zip file which does not retain file permissions.
Example: ``chmodx: $GAMEDIR/game_binary``
Calling the installer
=====================
2013-06-09 22:00:52 +00:00
The installer can be called with the ``lutris:<game-slug>`` url scheme or by
specifying the path to an installer script.