Tremulous Launcher Development
We need some interested developers to pick up on the Tremulous Launcher project. I’m going to try to outline what the Tremulous Launcher is, what has been implemented, and what needs to be done to make it usable.
The launcher has one major goal: to seamlessly install/update Tremulous as development continues past release. Secondary goals include a UI to manage PK3 files and backup/restore feature for qkeys, private keys and binds.
The Tremulous Launcher project is actually a group of 3 closely related projects. There is the Tremulous Launcher itself, the server side PHP for updates, and sigtool to RSA sign components.
The Tremulous Launcher is written in C++ and uses the JUCE library for its cross-platform GUI toolkit and utility classes.
At this time, we’ll only cover our primary goal. Upon starting the Tremulous Launcher, it will check for updates and notify the user there is an update and prompt them to update. If there is no update, it will immediately launch Tremulous. Updates consist of components, which can have dependencies on other components. There are also 3 possible update channels: alpha, beta, and release. Component version numbers use sematic versioning. Updates should be released as zip files to be decompressed or pk3 files to be replaced or added. The launcher needs to be able to update itself so that new features can be added after release as well.
The launcher must work on all of our supported platforms: Windows, OS X, Linux, and FreeBSD. FreeBSD support is trival once Linux is fully working.
A list of things that are currently implemented:
- Sematic version parsing (ALL)
- INI file handling (ALL)
- Update notification (ALL)
- Downloads, including resuming partial downloads (ALL)
- Public key revocation (ALL)
- Hashing and signature verification (ALL)
- Process elevation for writing to system paths (Win/Linux)
- Restarting the launcher after an update and starting Tremulous (Win/Linux)
A list of things that need to be done:
- Process elevation (OSX)
- Process execution (OSX)
- Allow use of a user local installation path (Win/OSX/Linux)
- Unpacking the “tremulous” component (ALL)
There may be some stuff I missed, so this post may change.