pascalabcnet/ReleaseGenerators/DotNetChecker.nsh

142 lines
7.5 KiB
Plaintext
Raw Permalink Normal View History

!macro CheckNetFramework FrameworkVersion
Var /GLOBAL dotNetUrl${FrameworkVersion}
Var /GLOBAL dotNetReadableVersion${FrameworkVersion}
!ifndef DOTNET472_URL
!define DOTNET472_URL "https://go.microsoft.com/fwlink/?LinkId=863265"
!define DOTNET471_URL "https://go.microsoft.com/fwlink/?LinkId=852104"
!define DOTNET47_URL "https://go.microsoft.com/fwlink/?LinkId=825302"
!define DOTNET462_URL "https://go.microsoft.com/fwlink/?LinkId=780600"
!define DOTNET461_URL "https://go.microsoft.com/fwlink/?LinkId=671743"
!define DOTNET46_URL "https://go.microsoft.com/fwlink/?LinkId=528232"
!define DOTNET452_URL "https://go.microsoft.com/fwlink/?LinkId=397708"
!define DOTNET451_URL "https://go.microsoft.com/fwlink/?LinkId=322116"
!define DOTNET45_URL "https://go.microsoft.com/fwlink/?LinkId=225702"
!define DOTNET40Full_URL "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=0a391abd-25c1-4fc0-919f-b21f31ab88b7&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f9%2f5%2fA%2f95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE%2fdotNetFx40_Full_x86_x64.exe"
!define DOTNET40Client_URL "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f2%2f562A10F9-C9F4-4313-A044-9C94E0A8FAC8%2fdotNetFx40_Client_x86_x64.exe"
!define DOTNET35_URL "https://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe"
!define DOTNET30_URL "https://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe"
!define DOTNET20_URL "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=0856eacb-4362-4b0d-8edd-aab15c5e04f5&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe"
!define DOTNET11_URL "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=262d25e3-f589-4842-8157-034d1e7cf3a3&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fa%2fa%2fc%2faac39226-8825-44ce-90e3-bf8203e74006%2fdotnetfx.exe"
!define DOTNET10_URL "https://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=262d25e3-f589-4842-8157-034d1e7cf3a3&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fa%2fa%2fc%2faac39226-8825-44ce-90e3-bf8203e74006%2fdotnetfx.exe"
!endif
${If} ${FrameworkVersion} == "472"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET472_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.7.2"
${ElseIf} ${FrameworkVersion} == "471"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET471_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.7.1"
${ElseIf} ${FrameworkVersion} == "47"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET47_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.7"
${ElseIf} ${FrameworkVersion} == "462"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET462_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.6.2"
${ElseIf} ${FrameworkVersion} == "461"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET461_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.6.1"
${ElseIf} ${FrameworkVersion} == "46"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET46_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.6"
${ElseIf} ${FrameworkVersion} == "452"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET452_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.52"
${ElseIf} ${FrameworkVersion} == "451"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET451_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.51"
${ElseIf} ${FrameworkVersion} == "45"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET45_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.5"
${ElseIf} ${FrameworkVersion} == "40Full"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET40Full_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.0 Full"
${ElseIf} ${FrameworkVersion} == "40Client"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET40Client_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "4.0 Client"
${ElseIf} ${FrameworkVersion} == "35"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET35_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "3.5"
${ElseIf} ${FrameworkVersion} == "30"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET30_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "3.0"
${ElseIf} ${FrameworkVersion} == "20"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET20_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "2.0"
${ElseIf} ${FrameworkVersion} == "11"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET11_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "1.1"
${ElseIf} ${FrameworkVersion} == "10"
StrCpy $dotNetUrl${FrameworkVersion} ${DOTNET10_URL}
StrCpy $dotNetReadableVersion${FrameworkVersion} "1.0"
${EndIf}
DetailPrint "Проверка версии .NET Framework..."
Push $0
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
Push $7
DotNetChecker::IsDotNet${FrameworkVersion}Installed
Pop $0
${If} $0 == "false"
${OrIf} $0 == "f" ; if script is compiled in ANSI mode then we get only an "f" https://github.com/ReVolly/NsisDotNetChecker/issues/4
DetailPrint ".NET Framework $dotNetReadableVersion${FrameworkVersion} не найдена, требуется установить перед инсталляцией PascalABC.NET."
Goto NoDotNET${FrameworkVersion}
${Else}
DetailPrint ".NET Framework $dotNetReadableVersion${FrameworkVersion} найдена, нет необходимости инсталлировать."
Goto NewDotNET${FrameworkVersion}
${EndIf}
NoDotNET${FrameworkVersion}:
MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \
".NET Framework не установлена. Требуемая версия: $dotNetReadableVersion${FrameworkVersion}.$\nЗагрузить .NET Framework $dotNetReadableVersion${FrameworkVersion} с microsoft.com?" \
/SD IDYES IDYES DownloadDotNET${FrameworkVersion} IDNO NewDotNET${FrameworkVersion}
goto GiveUpDotNET${FrameworkVersion} ;IDCANCEL
DownloadDotNET${FrameworkVersion}:
DetailPrint "Начало скачивания .NET Framework $dotNetReadableVersion${FrameworkVersion}."
NSISDL::download $dotNetUrl${FrameworkVersion} "$TEMP\dotnetfx.exe"
DetailPrint "Скачивание окончено."
Pop $0
${If} $0 == "cancel"
MessageBox MB_YESNO|MB_ICONEXCLAMATION \
"Скачивание отменено. Продолжить инсталляцию?" \
IDYES NewDotNET${FrameworkVersion} IDNO GiveUpDotNET${FrameworkVersion}
${ElseIf} $0 != "success"
MessageBox MB_YESNO|MB_ICONEXCLAMATION \
"Скачивание завершилось неудачей:$\n$0$\n$\nПродолжить инсталляцию?" \
IDYES NewDotNET${FrameworkVersion} IDNO GiveUpDotNET${FrameworkVersion}
${EndIf}
DetailPrint "Пауза инсталляции PascalABC.NET пока запущен инсталлятор .NET Framework."
ExecWait '$TEMP\dotnetfx.exe /q /c:"install /q"'
DetailPrint "Завершена инсталляция .NET Framework. Удаляется .NET Framework инсталлятор."
Delete "$TEMP\dotnetfx.exe"
DetailPrint ".NET Framework инсталлятор удалён."
goto NewDotNet${FrameworkVersion}
GiveUpDotNET${FrameworkVersion}:
Abort "Инсталляция прервана пользователем."
NewDotNET${FrameworkVersion}:
DetailPrint "Переход к оставшейся части установки."
Pop $7
Pop $6
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
!macroend