mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-16 20:19:13 +03:00
123 lines
4.2 KiB
Java
123 lines
4.2 KiB
Java
package ru.gravit.launchserver.binary;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.Path;
|
|
|
|
import ru.gravit.launcher.Launcher;
|
|
import ru.gravit.launcher.LauncherAPI;
|
|
import ru.gravit.utils.helper.IOHelper;
|
|
import ru.gravit.utils.helper.LogHelper;
|
|
import ru.gravit.launchserver.LaunchServer;
|
|
import net.sf.launch4j.Builder;
|
|
import net.sf.launch4j.Log;
|
|
import net.sf.launch4j.config.Config;
|
|
import net.sf.launch4j.config.ConfigPersister;
|
|
import net.sf.launch4j.config.Jre;
|
|
import net.sf.launch4j.config.LanguageID;
|
|
import net.sf.launch4j.config.VersionInfo;
|
|
|
|
public final class EXEL4JLauncherBinary extends LauncherBinary {
|
|
private final static class Launch4JLog extends Log {
|
|
private static final Launch4JLog INSTANCE = new Launch4JLog();
|
|
|
|
@Override
|
|
public void append(String s) {
|
|
LogHelper.subInfo(s);
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
// Do nothing
|
|
}
|
|
}
|
|
|
|
// URL constants
|
|
private static final String DOWNLOAD_URL = "http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html"; // Oracle
|
|
// JRE
|
|
// 8
|
|
|
|
// File constants
|
|
private final Path faviconFile;
|
|
|
|
@LauncherAPI
|
|
public EXEL4JLauncherBinary(LaunchServer server) {
|
|
super(server, server.dir.resolve(server.config.binaryName + ".exe"));
|
|
faviconFile = server.dir.resolve("favicon.ico");
|
|
setConfig();
|
|
}
|
|
|
|
@Override
|
|
public void build() throws IOException {
|
|
LogHelper.info("Building launcher EXE binary file (Using Launch4J)");
|
|
|
|
// Set favicon path
|
|
Config config = ConfigPersister.getInstance().getConfig();
|
|
if (IOHelper.isFile(faviconFile))
|
|
config.setIcon(faviconFile.toFile());
|
|
else {
|
|
config.setIcon(null);
|
|
LogHelper.warning("Missing favicon.ico file");
|
|
}
|
|
|
|
// Start building
|
|
Builder builder = new Builder(Launch4JLog.INSTANCE);
|
|
try {
|
|
builder.build();
|
|
} catch (Throwable e) {
|
|
throw new IOException(e);
|
|
}
|
|
}
|
|
|
|
private void setConfig() {
|
|
Config config = new Config();
|
|
// Set string options
|
|
config.setChdir(".");
|
|
config.setErrTitle("JVM Error");
|
|
config.setDownloadUrl(DOWNLOAD_URL);
|
|
|
|
// Set boolean options
|
|
config.setPriorityIndex(0);
|
|
config.setHeaderType(Config.GUI_HEADER);
|
|
config.setStayAlive(false);
|
|
config.setRestartOnCrash(false);
|
|
|
|
// Prepare JRE
|
|
Jre jre = new Jre();
|
|
jre.setMinVersion("1.8.0");
|
|
jre.setRuntimeBits(Jre.RUNTIME_BITS_64_AND_32);
|
|
jre.setJdkPreference(Jre.JDK_PREFERENCE_PREFER_JRE);
|
|
config.setJre(jre);
|
|
|
|
// Prepare version info (product)
|
|
VersionInfo info = new VersionInfo();
|
|
info.setProductName(server.config.launch4j.productName);
|
|
info.setProductVersion(formatVars(server.config.launch4j.productVer));
|
|
info.setFileDescription(server.config.launch4j.fileDesc);
|
|
info.setFileVersion(formatVars(server.config.launch4j.fileVer));
|
|
info.setCopyright(server.config.launch4j.copyright);
|
|
info.setTrademarks(server.config.launch4j.trademarks);
|
|
info.setInternalName(formatVars(server.config.launch4j.internalName));
|
|
// Prepare version info (file)
|
|
info.setTxtFileVersion(formatVars(server.config.launch4j.txtFileVersion));
|
|
info.setTxtProductVersion(formatVars(server.config.launch4j.txtProductVersion));
|
|
// Prepare version info (misc)
|
|
info.setOriginalFilename(binaryFile.getFileName().toString());
|
|
info.setLanguage(LanguageID.RUSSIAN);
|
|
config.setVersionInfo(info);
|
|
|
|
// Set JAR wrapping options
|
|
config.setDontWrapJar(false);
|
|
config.setJar(server.launcherBinary.syncBinaryFile.toFile());
|
|
config.setOutfile(binaryFile.toFile());
|
|
|
|
// Return prepared config
|
|
ConfigPersister.getInstance().setAntConfig(config, null);
|
|
}
|
|
|
|
private static String VERSION = Launcher.getVersion().getVersionString();
|
|
private static int BUILD = Launcher.getVersion().build;
|
|
|
|
public static String formatVars(String mask) {
|
|
return String.format(mask, VERSION, BUILD);
|
|
}
|
|
}
|