Skip to content

Support being called as Java-Agent #14

@zbx1425

Description

@zbx1425

Support being called as Java-Agent would enable Packwiz-Installer to be used on:

  • Launchers that has incorrect handling of $INST_JAVA, meaning they can't start packwiz-installer from pre-launch commands reliably (HMCL / PCL2)
  • Launchers that don't support pre-launch commands (Mojang Launcher, IIRC?)

Currently there's a community workaround for the aforementioned issues ("packwiz-installer-bootstrap-wrapper") by teacon.org:

package org.teacon.codenamed;

import java.io.File;
import java.lang.instrument.Instrumentation;

public class JavaAgentEntryPoint {

  public static void premain(String args, Instrumentation inst) {
    String javaExecutable = System.getProperty("java.home") + System.getProperty("java.home") + "bin" + File.separator;
    if (System.getProperty("os.name").startsWith("Win")) {
      javaExecutable = javaExecutable + "javaw.exe";
    } else {
      javaExecutable = javaExecutable + "java";
    } 
    try {
      Process p = (new ProcessBuilder(new String[] { javaExecutable, "-jar", "packwiz-installer-bootstrap.jar", "--bootstrap-main-jar", "packwiz-installer.jar", "--bootstrap-no-update", args })).inheritIO().start();
      int exitCode;
      if ((exitCode = p.waitFor()) != 0)
        throw new RuntimeException("Process exit status is " + exitCode + ", meaning an error has occurred."); 
    } catch (Exception e) {
      throw new RuntimeException("Game failed to launch, see console output for details.", e);
    } 
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions