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
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
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! –
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 –