NSIS设置临时环境变量不起作用

时间:2013-08-27 09:17:20

标签: environment-variables nsis

我正在尝试按照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进行了相同的测试,结果相同。

有什么想法吗?

1 个答案:

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

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