Nie powinieneś sprawdzać dokładnego numeru wersji. To się zmieni w przyszłości (tak jak w przypadku 4,0> 4,5). Zamiast tego użyj kodów z deployment guide.
Oprócz tego należy spróbować obsługiwać ponowne uruchomienie z .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
świetna odpowiedź! Usuwam moją odpowiedź na włamanie ze wstydem! Edytowane również w kodzie 1641 sprawdzanie ponownego uruchomienia (oryginalna wersja została skompilowana bez błędu). – fiat
Dzięki temu jest dokładnie to, czego potrzebowałem. Uratował mi mnóstwo czasu! –
Próbowałem różnych fragmentów, ale twój jest zdecydowanie najbardziej eleganckim i czytelnym rozwiązaniem, jakie widziałem. +1 –