为什么 NSIS 对 JRE 的检查被破坏?
为什么这个脚本在不需要的时候却尝试安装 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}
Why does this script try to install the jre when it doesn't need to? I verified that C:\Windows\System32\java.exe
does in fact exist, but this script doesn't see it. The script is targeting XP, Vista, 32 bit, and 64 bit. The script !includes x64.nsh
. The reason for the first ElseIf is that the javaw.exe is sometimes installed in C:\Windows\System32\
on 64 bit systems. Is the logic bogus? If so, how? Is the use of C:\Windows\System32\javaw.exe
improper?
${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}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
需要除非阻止并禁用X64FSRedirection。
Needed Unless blocks and DisableX64FSRedirection.