Properly fix os type detection for windows on different locales

This commit is contained in:
crschnick 2023-04-01 12:45:11 +00:00
parent b1f2272fc2
commit e4a85573c0

View file

@ -2,6 +2,7 @@ package io.xpipe.core.process;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
public interface OsType {
@ -36,7 +37,8 @@ public interface OsType {
@Override
public String getHomeDirectory(ShellControl pc) throws Exception {
return pc.executeStringSimpleCommand(pc.getShellDialect().getPrintEnvironmentVariableCommand("USERPROFILE"));
return pc.executeStringSimpleCommand(
pc.getShellDialect().getPrintEnvironmentVariableCommand("USERPROFILE"));
}
@Override
@ -59,9 +61,17 @@ public interface OsType {
@Override
public String determineOperatingSystemName(ShellControl pc) throws Exception {
var properties = getProperties(pc);
return properties.getOrDefault("OS Name", "Windows") + " "
+ properties.getOrDefault("OS Version", "?").split(" ")[0];
return pc.executeStringSimpleCommand("wmic os get Caption")
.lines()
.skip(1)
.collect(Collectors.joining())
.trim()
+ " "
+ pc.executeStringSimpleCommand("wmic os get Version")
.lines()
.skip(1)
.collect(Collectors.joining())
.trim();
}
}