diff --git a/head/head.o b/head/head.o index c7ef319..53ac94a 100644 Binary files a/head/head.o and b/head/head.o differ diff --git a/head_src/head.c b/head_src/head.c index 4ec50cd..d219f09 100644 --- a/head_src/head.c +++ b/head_src/head.c @@ -321,8 +321,13 @@ int findNextVersionPart(const char* startAt) char* firstSeparatorA = strchr(startAt, '.'); char* firstSeparatorB = strchr(startAt, '_'); + char* firstSeparatorC = strchr(startAt, 'u'); char* firstSeparator; - if (firstSeparatorA == NULL) + if (firstSeparatorC != NULL) + { + firstSeparator = firstSeparatorC; + } + else if (firstSeparatorA == NULL) { firstSeparator = firstSeparatorB; } @@ -490,9 +495,23 @@ BOOL isJavaHomeValid(const char* keyName, const int searchType) BOOL valid = FALSE; HKEY hKey; char path[_MAX_PATH] = {0}; + + char searchKeyName[_MAX_PATH] = {0}; + char searchValueName[_MAX_PATH] = {0}; + if(strstr(keyName, "AdoptOpenJDK") != NULL) + { + strcpy(searchValueName, "Path"); + strcpy(searchKeyName, keyName); + appendPath(searchKeyName, "hotspot\\MSI"); + } + else + { + strcpy(searchValueName, "JavaHome"); + strcpy(searchKeyName, keyName); + } if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - keyName, + searchKeyName, 0, KEY_READ | (searchType & KEY_WOW64_64KEY), &hKey) == ERROR_SUCCESS) @@ -501,7 +520,7 @@ BOOL isJavaHomeValid(const char* keyName, const int searchType) unsigned long bufferlength = _MAX_PATH; unsigned long datatype; - if (RegQueryValueEx(hKey, "JavaHome", NULL, &datatype, buffer, + if (RegQueryValueEx(hKey, searchValueName, NULL, &datatype, buffer, &bufferlength) == ERROR_SUCCESS) { int i = 0; @@ -655,6 +674,14 @@ BOOL findJavaHome(char* path, const int jdkPreference) jdkPreference); } + // AdoptOpenJDK + if (search.foundJava == NO_JAVA_FOUND) + { + regSearchJreSdk("SOFTWARE\\AdoptOpenJDK\\JRE", + "SOFTWARE\\AdoptOpenJDK\\JDK", + jdkPreference); + } + if (search.foundJava != NO_JAVA_FOUND) { strcpy(path, search.foundJavaHome); diff --git a/src/net/sf/launch4j/config/Jre.java b/src/net/sf/launch4j/config/Jre.java index cd91661..2de3333 100644 --- a/src/net/sf/launch4j/config/Jre.java +++ b/src/net/sf/launch4j/config/Jre.java @@ -54,7 +54,7 @@ public class Jre implements IValidatable { public static final String ARGS = "jvmArgs"; // __________________________________________________________________________________ - public static final String VERSION_PATTERN = "(1\\.\\d\\.\\d(_\\d{1,3})?)|[1-9][0-9]{0,2}(\\.\\d{1,3}){0,2}"; + public static final String VERSION_PATTERN = "(1\\.\\d\\.\\d((_|\\.)\\d{1,3})?)|[1-9][0-9]{0,2}(\\.\\d{1,3}){0,2}"; public static final String JDK_PREFERENCE_JRE_ONLY = "jreOnly"; public static final String JDK_PREFERENCE_PREFER_JRE = "preferJre";