aboutsummaryrefslogtreecommitdiff
path: root/Src/installer/winamp/sections/directX.nsh
diff options
context:
space:
mode:
Diffstat (limited to 'Src/installer/winamp/sections/directX.nsh')
-rw-r--r--Src/installer/winamp/sections/directX.nsh190
1 files changed, 190 insertions, 0 deletions
diff --git a/Src/installer/winamp/sections/directX.nsh b/Src/installer/winamp/sections/directX.nsh
new file mode 100644
index 00000000..48c051cb
--- /dev/null
+++ b/Src/installer/winamp/sections/directX.nsh
@@ -0,0 +1,190 @@
+!include "logicLib.nsh"
+
+!define DIRECTXINSTALL_URL_FULL "http://download.nullsoft.com/redist/dx/dxwebsetup.exe"
+!define DIRECTXINSTALL_URL_EMBED "http://download.nullsoft.com/redist/dx/d3dx9_31_42_x86_embed.exe"
+
+!define DIRECTX_MSDOWNLOAD_URL "https://www.microsoft.com/download/details.aspx?id=35"
+;!define DIRECTX_MSDOWNLOAD_URL "https://support.microsoft.com/kb/179113"
+
+!define DIRECTXINSTAL_DIRECTXNAME "Microsoft DirectX®"
+!define DIRECTXINSTAL_WINDOWSNAME "Microsoft Windows®"
+!define DIRECTXINSTAL_WINAMPNAME "Winamp"
+!define DIRECTXINSTAL_WINVER_LO "${DIRECTXINSTAL_WINDOWSNAME} Vista"
+!define DIRECTXINSTAL_WINVER_HI "${DIRECTXINSTAL_WINDOWSNAME} 7"
+!define DIRECTXINSTALL_DIRECTXMINVER "9.0"
+
+!macro DirextXInstall_CheckLibrary __libraryName __outputVar
+ StrCpy ${__outputVar} ""
+
+ Push $0
+ StrCpy $0 ${__libraryName}
+ DetailPrint "$(IDS_DIRECTX_CHECKING_D3DX_COMPONENT)..."
+ Pop $0
+
+ ${If} ${FileExists} "$SYSDIR\${__libraryName}"
+ DetailPrint " $(IDS_DIRECTX_FOUND)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_MISSING)."
+ StrCpy ${__outputVar} "${DIRECTXINSTALL_URL_EMBED}"
+ ${EndIf}
+!macroend
+
+!define DirextXInstall_CheckLibrary "!insertmacro 'DirextXInstall_CheckLibrary'"
+
+!macro DirectXInstall_GetRequiredDownloadUrl __outputVar
+ StrCpy ${__outputVar} ""
+
+ ${If} ${AtMostWin2003}
+ ${OrIf} ${AtMostWinVista}
+ DetailPrint "$(IDS_DIRECTX_DETECTED_WINVER_OR_LOWER)"
+
+ DetailPrint "$(IDS_DIRECTX_CHECKING_DIRECTX_VER)..."
+ DetailPrint " $(IDS_DIRECTX_REQUIRED_DIRECTX_MINVER): ${DIRECTXINSTALL_DIRECTXMINVER}"
+ ; check directX version
+
+ Push $0
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\Microsoft\DirectX" "Version"
+ ${If} $0 == ""
+ DetailPrint " $(IDS_DIRECTX_UNABLE_DETECT_DIRECTX)"
+ StrCpy $0 "0"
+ ${Else}
+ Push $1
+ StrCpy $1 $0 2 5 ; get the minor version
+ StrCpy $0 $0 2 2 ; get the major version
+ IntOp $0 $0 * 100 ; $0 = major * 100 + minor
+ IntOp $0 $0 + $1
+ Pop $1
+ DetailPrint " $(IDS_DIRECTX_DETECTED_DIRECTX_VER): $0"
+ ${EndIf}
+
+ ${If} $0 < 900
+ Pop $0
+ DetailPrint " $(IDS_DIRECTX_UNSUPPORTED_DIRECTX_VER)."
+ StrCpy ${__outputVar} "${DIRECTXINSTALL_URL_FULL}"
+ ${Else}
+ Pop $0
+ ${EndIf}
+ ${Else}
+ DetailPrint "$(IDS_DIRECTX_DETECTED_WINVER_OR_HIGHER)"
+ ${DirextXInstall_CheckLibrary} "d3dx9_42.dll" ${__outputVar}
+ ${EndIF}
+
+ ${If} ${__outputVar} == ""
+ ${DirextXInstall_CheckLibrary} "d3dx9_31.dll" ${__outputVar}
+ ${EndIf}
+!macroend
+
+!define DirectXInstall_GetRequiredDownloadUrl "!insertmacro 'DirectXInstall_GetRequiredDownloadUrl'"
+
+!macro DirectXInstall_CheckConnection __outputVar
+ StrCpy ${__outputVar} ""
+ ClearErrors
+ Dialer::AttemptConnect
+ ${IfNot} ${Errors}
+ nsExec::Exec "ping -n 1 -w 400 www.google.com"
+ Pop ${__outputVar}
+ ${If} ${__outputVar} <> 0
+ nsExec::Exec "ping -n 1 -w 400 www.yahoo.com"
+ Pop ${__outputVar}
+ ${EndIf}
+
+ ${If} ${__outputVar} == 0
+ StrCpy ${__outputVar} "success"
+ ${EndIf}
+ ${EndIf}
+!macroend
+
+!define DirectXInstall_CheckConnection "!insertmacro 'DirectXInstall_CheckConnection'"
+
+!macro DirectXInstall_ShowErrorMessage __installerUrl __messageFull __messageEmbed
+ Push $2
+ ${If} ${__installerUrl} == "${DIRECTXINSTALL_URL_FULL}"
+ StrCpy $2 "${__messageFull}."
+ ${Else}
+ StrCpy $2 "${__messageEmbed}."
+ ${EndIf}
+ StrCpy $2 "$2$\r$\n$\r$\n$(IDS_DIRECTX_LINK_TO_MSDOWNLOAD)$\r$\n${DIRECTX_MSDOWNLOAD_URL}"
+ MessageBox MB_OK|MB_ICONEXCLAMATION $2 /SD IDOK
+ Pop $2
+!macroend
+
+!define DirectXInstall_ShowErrorMessage "!insertmacro 'DirectXInstall_ShowErrorMessage'"
+
+!macro DIRECTXINSTALL_INSERT_SECTION
+!ifdef FULL
+ Section -DirectXInstall IDX_DIRECTX_INSTALL
+
+ ; check if at least one dependent section selected
+ ${IfNot} ${SectionIsSelected} ${IDX_GRP_MMEDIA_VIDEO_DEC}
+ ${AndIfNot} ${SectionIsPartiallySelected} ${IDX_GRP_MMEDIA_VIDEO_DEC}
+ ${AndIfNot} ${SectionIsSelected} ${IDX_SEC_MILKDROP2}
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; get url to download or empty string if download not required
+ ${DirectXInstall_GetRequiredDownloadUrl} $0
+ ${If} $0 == ""
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; check internet connection
+ DetailPrint "$(IDS_DIRECTX_DOWNLOAD_REQUIRED)"
+ DetailPrint "$(IDS_DIRECTX_CHECKING_INTERNET)..."
+ ${DirectXInstall_CheckConnection} $1
+ ${If} $1 == "success"
+ DetailPrint " $(IDS_DIRECTX_SUCCESS)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_CONNECT_FAILED)""$(IDS_DIRECTX_EMBED_CONNECT_FAILED)"
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+
+ ; download installer
+
+ DetailPrint "$(IDS_DIRECTX_DOWNLOADING_SETUP)..."
+ NSISdl::download /TRANSLATE2 "$(IDS_DIRECTX_DOWNLOADING_SETUP)..." "$(IDS_CONNECTING)" "$(IDS_SECOND)" "$(IDS_MINUTE)" "$(IDS_HOUR)" "$(IDS_SECONDS)" "$(IDS_MINUTES)" "$(IDS_HOURS)" "$(IDS_PROGRESS)" /TIMEOUT=30000 "$0" "$PLUGINSDIR\wadxsetup.exe"
+ Pop $1
+ ${If} $1 != "success"
+ ${If} $1 == "cancel"
+ DetailPrint " $(IDS_DIRECTX_ABORTED)."
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${EndIf}
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_DOWNLOAD_FAILED)""$(IDS_DIRECTX_EMBED_DOWNLOAD_FAILED)"
+ Goto DirectXInstall_SectionEnd
+ ${Else}
+ DetailPrint " $(IDS_DIRECTX_DONE)."
+ ${EndIf}
+
+ ; run setup
+ DetailPrint "$(IDS_DIRECTX_RUNNING_SETUP)..."
+ ClearErrors
+ ${If} $0 == "${DIRECTXINSTALL_URL_FULL}"
+ StrCpy $2 "$(IDS_DIRECTX_FULL_INSTALL_APPROVAL)"
+ ${IfNot} ${Cmd} 'MessageBox MB_YESNO|MB_ICONEXCLAMATION $2 /SD IDYES IDYES'
+ DetailPrint " $(IDS_DIRECTX_ABORTED)."
+ Goto DirectXInstall_SectionEnd
+ ${EndIf}
+ Exec '$PLUGINSDIR\wadxsetup.exe'
+ ${If} ${Errors}
+ StrCpy $1 "-9"
+ ${EndIf}
+ ${Else}
+ ExecWait "$PLUGINSDIR\wadxsetup.exe" $1
+ ${If} $1 != 0
+ SetErrors
+ ${EndIf}
+ ${EndIf}
+
+ ${If} ${Errors}
+ DetailPrint " $(IDS_DIRECTX_FAILED)."
+ ${DirectXInstall_ShowErrorMessage} "$0" "$(IDS_DIRECTX_FULL_INSTALL_FAILED)""$(IDS_DIRECTX_EMBED_INSTALL_FAILED)"
+ ${EndIf}
+
+ DirectXInstall_SectionEnd:
+ SectionEnd
+!endif
+!macroend
+
+!define DIRECTXINSTALL_INSERT_SECTION "!insertmacro 'DIRECTXINSTALL_INSERT_SECTION'" \ No newline at end of file