Go to file
Niklas 12ef9537eb
Merge pull request #2 from Gurkengewuerz/dependabot/maven/gui/org.apache.logging.log4j-log4j-core-2.15.0
Bump log4j-core from 2.13.1 to 2.15.0 in /gui

https://www.heise.de/news/Kritische-Zero-Day-Luecke-in-log4j-gefaehrdet-zahlreiche-Server-und-Apps-6291653.html
2021-12-10 15:26:52 +01:00
dist pack logo into zip file 2020-04-01 15:21:22 +02:00
gui Bump log4j-core from 2.13.1 to 2.15.0 in /gui 2021-12-10 01:36:13 +00:00
linux some bugfixed and improvements 2020-04-16 19:49:31 +02:00
patcher now using packr for distribution 2020-04-01 02:03:13 +02:00
screenshots added README content 2020-03-30 04:43:10 +02:00
.drone.yml fixed drone branch and added event 2020-06-02 00:27:07 +02:00
.gitignore added file/console logging 2020-04-01 18:55:10 +02:00
LICENSE changed license from MIT to GPLv3 2020-03-30 02:57:42 +02:00
README.md added build status 2020-05-30 23:04:54 +02:00
pom.xml added download progress for current file and calculate speed and current progress during same download 2020-04-23 03:56:56 +02:00

README.md

Custom ArmA 3 Launcher

Build Status Artifacts

This is the official launcher/download-client of the-town.net.

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.

Configure

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.

Build

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/jre.zip. A bundled JRE should be an OpenJDK with the following folder structure:

jre.zip
└── 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.

Distribute

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/.

generateRepo.sh

The generateRepo.sh 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 'generateRepo.sh*' ./ remote_user@remote_host_or_ip:<webserver root>

modset.json

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

server.json

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.

changelog.txt

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.

version.txt

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

x.x.x:FILE.jar

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

patcher.jar

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.

arma3launcher.jar

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

Screenshots

server server server server