This is an old revision of the document!
Table of Contents
About
Status
Right now we are evaluating to switch from loki_setup (GTK2) to mojosetup.
Problems
- doesn't create a symlink which points to the startscript of the game (https://bugzilla.icculus.org/show_bug.cgi?id=3129)
- how can we launch a shell script from within the installer?
- how can we copy the same behavior which is possible with loki_setup and the component tag (there is something nasty for the downloadable Postal installers done by Ryan)
- no support for extracting Wise setup archives (*.exe)
- no support for extracting Microsoft cabinet files (*.cab)
- no support for extracting InstallShield cabinet files (*.cab)
- no support for extracting Descent 3 Mercenary archives
- no support for 7z archives (but there is support for *.xz files)
x86 and x86-64 Support
If we have binaries for both architectures we build two installers, most likely we only have binaries for x86, in this case we will only make a installer for x86. It would not make sense to build a native x86_64 installer, if you need the 32 libs anyway to run the game.
- since the installer itself is a binary, there has to be a separate x64 installer to deliver x64-game-binaries
Worth reading
Initial tech discussion about MojoSetup features:
http://icculus.org/pipermail/lokisetup/2007-May/000810.html
Documentation:
http://hg.icculus.org/icculus/mojosetup/raw-file/tip/docs.txt
Naming schema
$GameName_$Version-$Language.$Special-$Patchlevel_$Arch.mojo.run
What does all those fields mean?
- $GameName: name of the game (multiple words have to be separated by a dot)
- $Version: version number of the game
- $Language: indicates in which language the game is, if it supports more than one language use multilingual for this field
- $Special: normally this field can be omitted, it's used to distinguish special flavours of a game, e.g. our Serious Sam 2 installer is avaiable as a dvd, 4 cd and Software Pyramide dvd version (multiple words have to be separated by a dot)
- $Patchlevel: only used if a already released installer had to be fixed, so omit this field if it's a regular release, it's 1 for the first patched installer, 2 for the second and so on
- $Arch: x86 or x86_64
Example 1: mohaa_1.11beta3-dutch.warchest.edition_x86
$GameName | $Version | $Language | $Special | $Patchlevel | $Arch |
---|---|---|---|---|---|
mohaa | 1.11beta3 | dutch | warchest.edition | x86 |
Example 2: true.combat.elite_0.49b-english-4_x86_64
$GameName | $Version | $Language | $Special | $Patchlevel | $Arch |
---|---|---|---|---|---|
true.combat.elite | 0.49b | english | 4 | x86_64 |
Installer Howto
- get a clone of the LIFLG repository:
hg clone https://kratz00.org/hg/liflg/
- create your working copy:
cp -pr liflg/mojosetup_dummy/ $DIRNAME-ACCORDING-TO-THE-NAMING-SCHEMA
- change to the directory:
cd $DIRNAME-ACCORDING-TO-THE-NAMING-SCHEMA
- delete unneeded files:
- delete the lua-compiler:
rm mojoluac.x86*
- delete x86_64-files (for x86 installer):
find . -type f -name "*x86_64" -exec rm "{}" \; -o -name "*64.so" -exec rm "{}" \;
- delete x86-files (for x86_64 installer):
find . -type f -name "*x86" -exec rm "{}" \; -o -name "*x86.so" -exec rm "{}" \;
- edit (at least) those files:
- scripts/config.lua
- meta/splash.png
- data/README.liflg
- data/startscript
- add needed files to data/
- pack the installer:
#!/bin/sh NAME=`basename "$PWD".mojo.run` cp mojosetup* "$NAME" zip - -qr9 data/ guis/ meta/ scripts/ | cat >> "$NAME" sha256sum "$NAME" > "$NAME".sha256
If anybody knows why the following does not work, please let us know:
zip - -qr9 data/ guis/ meta/ scripts/ >> "$NAME".mojo.run
Create the hash file
sha256sum $Installer > $Installer.sha256
Signing the hash file
gpg -b --armor -u team@liflg.org $Installer.sha256
Bugreports by the LIFLG team
Open reports
- Installer deletes only it's own directory. Assuming you installed the game to /home/reto/glest/3/2/1/ MojoSetup will delete only the directory 1 when uninstalling the game, even when MojoSetup has installed glest, 3, 2, and 1
not-yet-done
- Sort install sources by location, then option
http://bugzilla.icculus.org/show_bug.cgi?id=3131
- Wrong wording vs. automatically mount install CD/DVD
Closed/fixed reports
- Installation fails if pathname contains a whitespace
http://bugzilla.icculus.org/show_bug.cgi?id=4074
- MojoSetup eats RAM (confirmed, will be fixed)
https://bugzilla.icculus.org/show_bug.cgi?id=3925
- MojoSetup slows down when using points in filenames
https://bugzilla.icculus.org/show_bug.cgi?id=3989
- Symlinks don't get deleted - Uninstallation fails
http://bugzilla.icculus.org/show_bug.cgi?id=3941
- MojoSetup throws “BUG: no options”
https://bugzilla.icculus.org/show_bug.cgi?id=3926
- old tar file incompatibility
http://bugzilla.icculus.org/show_bug.cgi?id=3932
- filter function - permission problem
http://bugzilla.icculus.org/show_bug.cgi?id=3763
- SVN and HG repositories out of sync
http://bugzilla.icculus.org/show_bug.cgi?id=3764
- Only depend on a c++ compiler on Beos
http://bugzilla.icculus.org/show_bug.cgi?id=3765
- INCLUDE Could not find include file: CheckCCompilerFlag