You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Niklas 12ef9537eb
Merge pull request #2 from Gurkengewuerz/dependabot/maven/gui/org.apache.logging.log4j-log4j-core-2.15.0
12 months ago
dist pack logo into zip file 3 years ago
gui Bump log4j-core from 2.13.1 to 2.15.0 in /gui 12 months ago
linux some bugfixed and improvements 3 years ago
patcher now using packr for distribution 3 years ago
screenshots added README content 3 years ago
.drone.yml fixed drone branch and added event 3 years ago
.gitignore added file/console logging 3 years ago
LICENSE changed license from MIT to GPLv3 3 years ago added build status 3 years ago
pom.xml added download progress for current file and calculate speed and current progress during same download 3 years ago

Custom ArmA 3 Launcher

Build Status Artifacts

This is the official launcher/download-client of

This launcher uses a differential download method called zsync. This means that only changes between any old versions of the files on the computer and the files provided online are downloaded.

An optimised client-side implementation of the rsync algorithm. It allows updating of files from a remote web server, with efficiency approaching that of rsync -z, without requiring a special remote server application.


If you want to use our launcher for your project, please change the icons! Open gui/src/main/resources/arma3launcher.json and edit the variables as you need. To configure your logo replace the logo* files inside the gui/src/main/resources/icons/ folder.


To build this project you need JDK12+ and maven.
To compile a single module run

mvn package -pl {gui/patcher}

To compile the project for distribution you a bundled JRE in dist/src/main/resources/ A bundled JRE should be an OpenJDK with the following folder structure:
└── jre
    ├── bin
    ├── conf
    ├── include
    ├── jmods
    ├── legal
    ├── lib
    └── release

After that run

mvn package

After building the project for distribution you find the universal auto patcher inside patcher/target/patcher.jar. Inside gui/target/ you find the gui as jar and jar with dependencies. The jar wrapper build with packr can be found as an assembled zip file inside the dis/target/ folder.


After building the package you find inside the dist/target/ folder an zip file. This zip file contains the bundled jre/ folder and an empty logs/ folder.

Please note that the .exe does not have an icon!!
I tried rcedit to edit the resource icon in assembly but many anti virus scanner flag the wrapper than an false positive!

Linux/Mac users can run the arma3launcher-gui.jar.
Windows users can simply run the arma3launcher.exe and the packr wrapper prioritize the local JRE else use the bundled jre.

Server side setup

For the server side you need a simple webserver with no special configuration.

The server side setup/configuration is done inside the <webserver root>/.sync/ folder. Upload the files from linux/.sync/ to <webserver root>/.sync/.

The is very important to run after every update of mods. Add new mods simply to <webserver root>.

You should generate the repository locally and update the changes via rsync. On Windows choose mingw or the linux subsystem.

rsync -a --exclude '*' ./ remote_user@remote_host_or_ip:<webserver root>


The modset.json file is generated automatically by running the It is containing the folder structure as well as the file sizes and sha1 sums.


The server.json file contains all server as well as the modsets. The modsets are simply strings that should equal the corresponding folder.
Please see the example file.


The changelog.txt is a plain text file to write your changelogs for the modpacks, client or what ever.
The file is caches for 5 minutes and only loaded if the user switches the tab to the changelog tab.


The version.txt is used for the autoupdater. It contains one line:


x.x.x is the new version. FILE.jar is the new file that the client will download inside the <webserver root>/.sync/ folder.


The patcher.jar is a universal patcher and should not need to be updated. The client download the patcher just once the %APDATA%/<launcher name> directory and only if a new version is available. If the patcher.jar already exists, the client skips the download.


The arma3launcher.jar is only a representation of the FILE.jar. See version.txt.


server server server server