Browse Source

fix passing custom java path and env vars to minecraft process

Veloe 2 years ago
parent
commit
6a4321ae14
1 changed files with 12 additions and 3 deletions
  1. 12 3
      VeloeMinecraftLauncher/ViewModels/MainWindowViewModel.cs

+ 12 - 3
VeloeMinecraftLauncher/ViewModels/MainWindowViewModel.cs

@@ -480,7 +480,13 @@ public class MainWindowViewModel : ViewModelBase
 
                 if (!Settings.useCustomJava)
                 {
-                    javaPath = Settings.minecraftForlderPath + "javaruntime/" + version + "/bin/java";
+                    javaPath = Path.GetFullPath(Settings.minecraftForlderPath + "javaruntime/" + version + "/bin/java");
+                    if (OperatingSystem.IsWindows())
+                        javaPath += ".exe";
+                }
+                else
+                {
+                    javaPath = Path.Combine(Settings.javaPath, "bin/java");
                     if (OperatingSystem.IsWindows())
                         javaPath += ".exe";
                 }
@@ -498,7 +504,7 @@ public class MainWindowViewModel : ViewModelBase
                     CreateNoWindow = true,
                     FileName = Path.GetFullPath(Path.Combine(Settings.minecraftForlderPath, javaPath)),
                     StandardErrorEncoding = Encoding.UTF8,
-                    WorkingDirectory = Path.GetDirectoryName(Path.Combine(Settings.minecraftForlderPath)),
+                    WorkingDirectory = Path.GetDirectoryName(Path.Combine(Settings.minecraftForlderPath, javaPath)),
                     Arguments = ArgumentsBox
                 };
 
@@ -506,7 +512,10 @@ public class MainWindowViewModel : ViewModelBase
 
                 minecraft.StartInfo = proc;
 
-                minecraft.StartInfo.EnvironmentVariables["JAVA_HOME"] = $"{Settings.minecraftForlderPath}javaruntime/{version}";
+                if (!Settings.useCustomJava)
+                    minecraft.StartInfo.EnvironmentVariables["JAVA_HOME"] = $"{Settings.minecraftForlderPath}javaruntime/{version}";
+                else
+                    minecraft.StartInfo.EnvironmentVariables["JAVA_HOME"] = Directory.GetParent(Path.GetDirectoryName(Settings.javaPath)).ToString();
                 minecraft.StartInfo.EnvironmentVariables["PATH"] = "%JAVA_HOME%\bin;%PATH%";
 
                 Task.Run(() =>