I recently (3 months ago ::)) created a standalone launcher for one of my LWJGL games, and I wanted to share it with the newer members of the community so that they wouldn’t need to create their own. This launcher automatically downloads LWJGL and (usually) Slick from the official site (as of writing this, the URL points to my own webserver, as Slick’s is down), along with of course the main JAR of the game. It then places them in a specified folder in the application data directory (this works on Windows, Linux, and OS X) under the subdirectory “bin”. When it comes time to launch the game, it automatically passes on command line arguments and launches the game.
The launcher also contains an auto-updater, which retrieves a version file from an online host and compares it to a local copy. This version file contains two keys followed by ": " and the value, named “stage” and “version”. The stage should contain a String such as “Alpha”, “Beta”, or “Release”, while the version should contain a String representing the complete version number (e.g. 2.9.0). If both the version and stage of the two version files do not match, the launcher will ask the user if they would like to update, after which it will retrieve the new JAR and version file.
Another feature, though minor, of the launcher is that it displays the progress of each download in the form of downloaded/total kb, percentage completed, and a visual status bar.
Currently, configurable global variables include all URLs, the subdirectory containing the “jar” folder in the LWJGL ZIP the game’s name (used in the GUI), the folder to be created in the application data directory, and the main JAR’s name.
The source code for the launcher may be found here (note that configurables are not set to generic values, and are instead set up for one of my own games), and if you wish to see an example of the compiled launcher, you may click here.