0

我正在尝试按照此页面的说明更新我的 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 进行了相同的测试,结果相同。

任何想法 ?

4

1 回答 1

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%'

这仅适用于您的设置启动的进程,如果此变量应适用于所有进程,则需要写入注册表...

于 2013-08-27T14:00:14.697 回答