为什么这个脚本会在不需要时尝试安装jre?我确认C:\Windows\System32\java.exe
确实存在,但是这个脚本没有看到它。该脚本的目标是XP,Vista,32位和64位。脚本!包括x64.nsh
。第一个ElseIf的原因是javaw.exe有时安装在64位系统上的C:\Windows\System32\
中。逻辑是假的吗?如果是这样,怎么样?是C:\Windows\System32\javaw.exe
使用不当吗?
${If} ${FileExists} `$SYSDIR\javaw.exe`
; Skip JRE install
${ElseIf} ${FileExists} `C:\Windows\System32\javaw.exe`
; Skip JRE install
${ElseIf} ${RunningX64}
ExecWait '"jre-6u22-windows-x64.exe"'
${Else}
ExecWait '"jre-6u22-windows-i586-s.exe"'
${EndIf}
答案 0 :(得分:1)
需要除非block和DisableX64FSRedirection。
${If} ${RunningX64}
${DisableX64FSRedirection}
${Unless} ${FileExists} "$SYSDIR\javaw.exe"
ExecWait '"jre-6u22-windows-x64.exe"'
${EndUnless}
${EnableX64FSRedirection}
${Else}
${Unless} ${FileExists} "$SYSDIR\javaw.exe"
ExecWait '"jre-6u22-windows-i586-s.exe"'
${EndUnless}
${EndIf}