Table of Contents
About
Status
Right now we are evaluating to switch from loki_setup (GTK2) to mojosetup.
Problems
- doesn't create a symbolic link which points to the start script 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 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 x86 binaries, in this case we will only make an installer for x86. It would not make sense to build a native x86_64 installer, if you need all the 32 bit libraries anyway to run the game.
- since the installer itself is a binary, there has to be a separate x86_64 installer to deliver x86_64 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