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 に答える