- support for long path entries (2048 characters)
git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@135 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
MODULE UsbUtils;
|
||||
IMPORT WinApi, Strings, Log := StdLog, XC := XdeCmds;
|
||||
IMPORT WinApi, Strings, Log := StdLog;
|
||||
|
||||
CONST
|
||||
HK_LM_JRE_Key = "SOFTWARE\javaSoft\Java Runtime Environment";
|
||||
@@ -9,6 +9,27 @@ IMPORT WinApi, Strings, Log := StdLog, XC := XdeCmds;
|
||||
HK_CU_PATH_Key = "Environment";
|
||||
PATH_value = "PATH";
|
||||
|
||||
PROCEDURE RegLMQuery* (IN subKey, valueName: ARRAY OF SHORTCHAR;
|
||||
OUT qValue: ARRAY OF SHORTCHAR): BOOLEAN;
|
||||
VAR
|
||||
res, length: INTEGER; hKey: WinApi.HKEY;
|
||||
BEGIN
|
||||
qValue := "";
|
||||
res := WinApi.RegOpenKeyEx(WinApi.HKEY_LOCAL_MACHINE,
|
||||
subKey, 0, WinApi.KEY_QUERY_VALUE, hKey);
|
||||
IF res # WinApi.ERROR_SUCCESS THEN
|
||||
RETURN FALSE
|
||||
ELSE
|
||||
length := LEN(qValue);
|
||||
res := WinApi.RegQueryValueEx(hKey, valueName, NIL, NIL, qValue[0], length);
|
||||
IF res # WinApi.ERROR_SUCCESS THEN
|
||||
RETURN FALSE
|
||||
END
|
||||
END;
|
||||
res := WinApi.RegCloseKey(hKey);
|
||||
RETURN TRUE;
|
||||
END RegLMQuery;
|
||||
|
||||
PROCEDURE RegCUQuery* (IN subKey, valueName: ARRAY OF SHORTCHAR;
|
||||
OUT qValue: ARRAY OF SHORTCHAR): BOOLEAN;
|
||||
VAR
|
||||
@@ -53,15 +74,19 @@ IMPORT WinApi, Strings, Log := StdLog, XC := XdeCmds;
|
||||
CONST
|
||||
PATH_Pattern = "\bin\client";
|
||||
VAR
|
||||
jreHome, regValue, tmpRegValue: ARRAY 512 OF SHORTCHAR;
|
||||
pos: INTEGER; noUserPathValue, found: BOOLEAN;
|
||||
jreHome, regValue, tmpRegValue: ARRAY 2048 OF SHORTCHAR;
|
||||
pos: INTEGER; noUserPathValue, success, found: BOOLEAN;
|
||||
BEGIN
|
||||
(* get jre home path *)
|
||||
XC.RegLocalMachineQuery(HK_LM_JRE_Key, HK_LM_JRE_CurrentVersion_value, tmpRegValue); (* e.g. "1.5" *)
|
||||
XC.RegLocalMachineQuery(HK_LM_JRE_Key + "\" + tmpRegValue, HK_LM_JRE_JavaHome_value, jreHome);
|
||||
IF ~RegLMQuery(HK_LM_JRE_Key, HK_LM_JRE_CurrentVersion_value, tmpRegValue) (* e.g. "1.5" *) THEN
|
||||
Log.String("UsbUtils: Error getting " + HK_LM_JRE_Key + "! Is Java installed?"); Log.Ln; RETURN
|
||||
END;
|
||||
IF ~RegLMQuery(HK_LM_JRE_Key + "\" + tmpRegValue, HK_LM_JRE_JavaHome_value, jreHome) THEN
|
||||
Log.String("UsbUtils: Error getting " + HK_LM_JRE_Key + "\" + tmpRegValue + "! Is Java installed?"); Log.Ln; RETURN
|
||||
END;
|
||||
(* look for %javahome%\bin\client on system and user path*)
|
||||
regValue := jreHome + PATH_Pattern;
|
||||
XC.RegLocalMachineQuery(HK_LM_PATH_Key, PATH_value, tmpRegValue);
|
||||
found := RegLMQuery(HK_LM_PATH_Key, "Path", tmpRegValue);
|
||||
Strings.Find(LONG(tmpRegValue), LONG(regValue), 0, pos);
|
||||
found := pos >= 0;
|
||||
IF found THEN
|
||||
@@ -78,7 +103,7 @@ IMPORT WinApi, Strings, Log := StdLog, XC := XdeCmds;
|
||||
ELSE
|
||||
tmpRegValue := tmpRegValue + ";" + regValue
|
||||
END;
|
||||
IF RegCUCreateKeyAndSetValue(HK_CU_PATH_Key, PATH_value, tmpRegValue) THEN
|
||||
IF RegCUCreateKeyAndSetValue(HK_CU_PATH_Key, PATH_value, tmpRegValue) THEN
|
||||
IF noUserPathValue THEN (* create user PATH value first *)
|
||||
Log.String("user value PATH created"); Log.Ln;
|
||||
END;
|
||||
|
||||
Reference in New Issue
Block a user