2012-10-11 40 views
6

tôi là sau khi một số đoạn mã cho NSIS để phát hiện và có điều kiện chạy trình cài đặt .NET 4.5NSIS Installer với .NET 4.5

Câu trả lời này - NSIS Installer with .NET 4.0 - là quá ngây thơ như kiểm tra chỉ presense của khóa registry (không phải là giá trị) sẽ không phân biệt giữa 4.0 và 4.5

Trả lời

17

Bạn không nên kiểm tra số phiên bản chính xác. Điều này sẽ thay đổi trong tương lai (như trường hợp cho 4.0> 4.5). Thay vào đó hãy sử dụng các mã số từ deployment guide.

Ngoài ra, bạn nên cố gắng xử lý khởi động lại từ .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 
+3

câu trả lời tuyệt vời! Tôi sẽ xóa câu trả lời hack của tôi trong sự xấu hổ! Cũng được chỉnh sửa trong kiểm tra mã 1641 để khởi động lại (phiên bản gốc của bạn được biên dịch mà không có lỗi) – fiat

+1

Cảm ơn đây chính xác là những gì tôi cần. Đã cứu tôi một loạt thời gian! –

+1

Tôi đã thử các đoạn trích khác nhau cho điều này nhưng bạn là giải pháp thanh lịch và dễ đọc nhất mà tôi từng thấy. +1 –

Các vấn đề liên quan