我正在尝试按照this page的说明更新我的JAVA_HOME的路径 但是在设定新值之后,价值似乎没有改变。
这是我的代码:
StrCpy $TemplateJavaPath "$INSTDIR\jdk1.7.0_03"
System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("JAVA_HOME", "$TempJavaPath").r0'
ReadEnvStr $R0 "JAVA_HOME"
MessageBox MB_OK $R0 ; The value is still C:\program Files\Java6...
ExecWait '"C:\test.bat" ;containing the single line echo %JAVA_HOME%, set to Java6...
我使用PATH进行了相同的测试,结果相同。
有什么想法吗?
答案 0 :(得分:0)
您获得该代码的Wiki页面错误,您不应该将A / W函数后缀与t
类型混合。
Var /Global TempJavaPath
StrCpy $TempJavaPath "C:\foo\bar"
System::Call 'kernel32::SetEnvironmentVariable(t "JAVA_HOME", t "$TempJavaPath")i'
Exec '"cmd" /k echo %JAVA_HOME%'
这仅适用于您的设置启动的进程,如果此变量应适用于所有进程,则需要写入注册表...