【问题标题】:NSIS Installer with .NET 4.5带有 .NET 4.5 的 NSIS 安装程序
【发布时间】:2012-10-11 22:11:04
【问题描述】:

我正在寻找一些代码 sn-ps 以便 NSIS 检测并有条件地运行 .NET 4.5 安装程序

这个答案 - NSIS Installer with .NET 4.0 - 太天真了,因为只检查注册表项(而不是值)的存在不会区分 4.0 和 4.5

【问题讨论】:

    标签: .net nsis


    【解决方案1】:

    您不应该检查确切的版本号。这将在未来发生变化(如 4.0 > 4.5 的情况)。请改用deployment guide 中的代码。

    除此之外,您应该尝试从 .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
    

    【讨论】:

    • 很好的答案!我会羞愧地删除我的黑客答案!还编辑了1641代码检查重启(你的原始版本编译没有错误)
    • 谢谢,这正是我所需要的。为我节省了很多时间!
    • 我一直在为此尝试不同的 sn-ps,但你的是迄今为止我见过的最优雅和可读的解决方案。 +1
    • 如果他们只是安装了 .net5 或其他未来的 .net 主要版本怎么办?这种方法仍然有效吗?大概下一个主要版本将向后兼容,因此如果安装了 5,6 或其他任何版本,用户就不需要安装 4.5?
    • 考虑这个注册表项的公共表面区域。 .Net 保证它将出现在所有将来运行 .Net 4.x 应用程序的版本中。
    猜你喜欢
    • 2010-11-29
    • 2018-11-16
    • 2012-10-12
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多