Почему проверка NSIS для JRE сломана? - PullRequest
0 голосов
/ 22 октября 2010

Почему этот скрипт пытается установить JRE, когда это не нужно?Я проверил, что C:\Windows\System32\java.exe действительно существует, но этот скрипт не видит его.Сценарий предназначен для XP, Vista, 32-разрядных и 64-разрядных.Скрипт! Включает x64.nsh.Причиной первого ElseIf является то, что javaw.exe иногда устанавливается в C:\Windows\System32\ на 64-битных системах.Является ли логика поддельной?Если так, то как?Является ли использование 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}

1 Ответ

1 голос
/ 22 октября 2010

Требуется, если блоки и 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}  
...