Проверьте для .NET4.5 + с NSIS

Все, мне известны следующие способы проверки версии фреймворка в NSIS. Для .NET4.0 + я сейчас использую

Function IsDotNetInstalled

    StrCpy $0 "0"
    StrCpy $1 "SOFTWARE\Microsoft\.NETFramework" ; Registry entry to look in.
    StrCpy $2 0

    StartEnum:
    ; Enumerate the versions installed.
    EnumRegKey $3 HKLM "$1\policy" $2

    ; If we don't find any versions installed, it's not here.
    StrCmp $3 "" noDotNet notEmpty

    ; We found something.
    notEmpty:
        ; Find out if the RegKey starts with 'v'.  
        ; If it doesn't, goto the next key.
        StrCpy $4 $3 1 0
        StrCmp $4 "v" +1 goNext
        StrCpy $4 $3 1 1

        ; It starts with 'v'.  Now check to see how the installed major version
        ; relates to our required major version.
        ; If it's equal check the minor version, if it's greater, 
        ; we found a good RegKey.
        IntCmp $4 ${DOT_MAJOR} +1 goNext yesDotNetReg
        ; Check the minor version.  If it's equal or greater to our requested 
        ; version then we're good.
        StrCpy $4 $3 1 3
        IntCmp $4 ${DOT_MINOR} yesDotNetReg goNext yesDotNetReg

    goNext:
        ; Go to the next RegKey.
        IntOp $2 $2 + 1
        goto StartEnum

    yesDotNetReg:
        ; Now that we've found a good RegKey, let's make sure it's actually
        ; installed by getting the install path and checking to see if the 
        ; mscorlib.dll exists.
        EnumRegValue $2 HKLM "$1\policy\$3" 0
        ; $2 should equal whatever comes after the major and minor versions 
        ; (ie, v1.1.4322)
        StrCmp $2 "" noDotNet
        ReadRegStr $4 HKLM $1 "InstallRoot"
        ; Hopefully the install root isn't empty.
        StrCmp $4 "" noDotNet
        ; Build the actuall directory path to mscorlib.dll.
        StrCpy $4 " для хранения любой новой информации, то есть этот путь, кажется, не содержит значения, которое изменяется между .NET4.0 и 4.5. Теперь я видел следующие сообщения:3.$2\mscorlib.dll"
        IfFileExists $4 yesDotNet noDotNet

    noDotNet:
        ; No, something went wrong along the way.  Looks like the 
        ; proper .NET Framework isn't installed.  
        MessageBox MB_ICONEXCLAMATION "To install UserCost, Microsoft's .NET Framework v${DOT_MAJOR}.${DOT_MINOR} \
        (or higher) must be installed. Cannot proceed with the installation!"
        ${OpenURL} "${WWW_MS_DOTNET4}"
        Abort

    yesDotNet:
        ; Everything checks out. Proceed with the rest of the installation.

FunctionEnd

Это очень хорошо работает для .NET4.0, но я теперь расширил свое приложение, чтобы использовать /asyncawait функции и впоследствии нужны пользователи для установки .NET4.5 +. Вышеуказанный метод не подходит, так как установка для .NET4.5 теперь не использует путь повторного входа 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ Policy»$4$

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

который использует путь / запись реестра 'HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ NET Framework Setup \ NDP ' делать проверки. Теперь это также работает бот, так как запись не меняется с .NET4.0 на 4.5. Я заметил, что есть и запись называетсяHKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v4.0.30319 \ SKUs.NETFramework, Version = v4.5' я могу использовать это для проверки версии Framework неизменно?

Есть ли официальная линия для проверки .NET4.5 с использованием NSIS?

Спасибо за ваше время.

Примечание: впоследствии некоторые установки .NET4.5, выполненные моими пользователями, имели значения реестра для

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 

значение DWORD с именемRelease не было378389 но378181, Внесение этого изменения, казалось, решило проблему как запись дляRelease отсутствует в реестре для .NET4.5 и ниже.

Ответы на вопрос(6)

Ваш ответ на вопрос