diff --git a/pom.xml b/pom.xml index c424a42..d4b7c89 100644 --- a/pom.xml +++ b/pom.xml @@ -6,12 +6,12 @@ de.chaos swlnmngr - 0.1.2 + 0.1.3 SteamWarLinkManager - 17 - 17 + 11 + 11 @@ -98,5 +98,10 @@ commons-lang 2.6 + + com.github.vatbub + mslinks + 1.0.6.2 + \ No newline at end of file diff --git a/src/main/java/de/chaos/swlnmngr/config/CLIConfig.java b/src/main/java/de/chaos/swlnmngr/config/CLIConfig.java index 507b480..2d164b6 100644 --- a/src/main/java/de/chaos/swlnmngr/config/CLIConfig.java +++ b/src/main/java/de/chaos/swlnmngr/config/CLIConfig.java @@ -19,7 +19,7 @@ public class CLIConfig { options.addOption(new Option("d", "debug", false, "Set the Log Level to Debug")); options.addOption(new Option("c", "config", true, "Use another Config File")); options.addOption(new Option("i", "installdir", true, "Use other Install Dir")); - options.addOption(new Option("u", "no-update", false, "Disable the Auto-Update Checker")); + options.addOption(new Option("u", "update-checker", false, "Enable the Auto-Update Checker")); CommandLine cli = null; CommandLineParser parser = new DefaultParser(); diff --git a/src/main/java/de/chaos/swlnmngr/route/routes/InstallRoute.java b/src/main/java/de/chaos/swlnmngr/route/routes/InstallRoute.java index 613a80e..cf51554 100644 --- a/src/main/java/de/chaos/swlnmngr/route/routes/InstallRoute.java +++ b/src/main/java/de/chaos/swlnmngr/route/routes/InstallRoute.java @@ -2,6 +2,7 @@ package de.chaos.swlnmngr.route.routes; import de.chaos.swlnmngr.Main; import de.chaos.swlnmngr.config.CLIConfig; +import mslinks.ShellLink; import org.apache.commons.lang.SystemUtils; import org.json.JSONObject; import org.json.JSONTokener; @@ -9,9 +10,13 @@ import org.json.JSONTokener; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.nio.file.StandardOpenOption; +import java.nio.file.attribute.FileAttribute; +import java.nio.file.attribute.PosixFilePermission; import java.util.Objects; public class InstallRoute implements Route { @@ -54,12 +59,30 @@ public class InstallRoute implements Route { Main.getLogger().error("Could not create SymLink", e); return false; } + } else if(SystemUtils.IS_OS_WINDOWS) { + try { + ShellLink link = ShellLink.createLink(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").getAbsolutePath(), new File(CLIConfig.INSTALL_DIR, "swlnmngr.lnk").getAbsolutePath()).setWorkingDir(CLIConfig.INSTALL_DIR.getAbsolutePath()); + link.getHeader().getLinkFlags().setRunAsUser(); + link.saveTo(new File(CLIConfig.INSTALL_DIR, "swlnmngr.lnk").getAbsolutePath()); + Files.writeString(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").toPath(), Files.readString(new File(CLIConfig.INSTALL_DIR, "swlnmngr.bat").toPath()).replace("${iDir}", CLIConfig.INSTALL_DIR.getAbsolutePath()), StandardCharsets.UTF_8, StandardOpenOption.TRUNCATE_EXISTING); + } catch (IOException e) { + Main.getLogger().error("Could not create Link", e); + return false; + } + } File configFile = new File(installDir, "config.json"); if(!configFile.exists()) { try { - Files.copy(Objects.requireNonNull(InstallRoute.class.getResourceAsStream("/default_config.json")), configFile.toPath()); + String configStr = new String(Objects.requireNonNull(InstallRoute.class.getResourceAsStream("/default_config.json")).readAllBytes()); + if(SystemUtils.IS_OS_WINDOWS) { + configStr = configStr.replace("~", System.getProperty("user.home")) + .replace("\\", "\\\\") + .replace("/", "\\\\") + .replace("https:\\\\\\\\steamwar.de\\\\lib.php", "https://steamwar.de/lib.php"); + } + Files.writeString(configFile.toPath(), configStr, StandardOpenOption.CREATE_NEW); } catch (IOException e) { Main.getLogger().error("Could not copy Config File", e); return false; diff --git a/src/main/java/de/chaos/swlnmngr/route/routes/LinkRoute.java b/src/main/java/de/chaos/swlnmngr/route/routes/LinkRoute.java index 3e26bca..3b2fd95 100644 --- a/src/main/java/de/chaos/swlnmngr/route/routes/LinkRoute.java +++ b/src/main/java/de/chaos/swlnmngr/route/routes/LinkRoute.java @@ -34,7 +34,7 @@ public class LinkRoute implements Route { Main.getLogger().error("No Project with name: {}", args[0]); return false; } - File link = new File(projectDir, "libs"); + File link = new File(projectDir, "lib"); try { Files.deleteIfExists(link.toPath()); Main.getLogger().debug(libsFile); diff --git a/src/main/resources/default_swlnmngr.bat b/src/main/resources/default_swlnmngr.bat index 8f3e2ed..eb0de03 100644 --- a/src/main/resources/default_swlnmngr.bat +++ b/src/main/resources/default_swlnmngr.bat @@ -1 +1,5 @@ -java -jar ./SteamWarLinkManager.jar %* \ No newline at end of file +set args=--help +set /p args=Arguments: +echo %args% +java -jar ${iDir}\SteamWarLinkManager.jar %args% %* +pause \ No newline at end of file