Установщик NSIS с .NET 4.5

Я после некоторых фрагментов кода для NSIS для обнаружения и условного запуска установщика .NET 4.5

Этот ответ - NSIS Installer с .NET 4.0 - слишком наивен, поскольку проверка только присутствия ключа реестра (а не значения) не будет различать между 4.0 и 4.5

Ответ 1

Вы не должны проверять наличие точной версии. Это изменится в будущем (как в случае 4.0 > 4.5). Вместо этого используйте коды из руководства по развертыванию.

В дополнение к этому вы должны попытаться выполнить перезагрузку с .Net 4.5.

Function CheckAndInstallDotNet
    ; Magic numbers from http://msdn.microsoft.com/en-us/library/ee942965.aspx
    ClearErrors
    ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Release"

    IfErrors NotDetected

    ${If} $0 >= 378389

        DetailPrint "Microsoft .NET Framework 4.5 is installed ($0)"
    ${Else}
    NotDetected:
        DetailPrint "Installing Microsoft .NET Framework 4.5"
        SetDetailsPrint listonly
        ExecWait '"$INSTDIR\Tools\dotNetFx45_Full_setup.exe" /passive /norestart' $0
        ${If} $0 == 3010 
        ${OrIf} $0 == 1641
            DetailPrint "Microsoft .NET Framework 4.5 installer requested reboot"
            SetRebootFlag true
        ${EndIf}
        SetDetailsPrint lastused
        DetailPrint "Microsoft .NET Framework 4.5 installer returned $0"
    ${EndIf}

FunctionEnd