diff --git a/installer.nsi b/installer.nsi
index ac2c873f2..9bb6e76e8 100644
--- a/installer.nsi
+++ b/installer.nsi
@@ -17,7 +17,7 @@
!define JRE_VERSION "1.8"
!endif
- Unicode true
+Unicode true
!define APP_EXENAME "ffdec.exe"
@@ -27,12 +27,15 @@
SetCompressor /SOLID lzma
-;Java 8 Update 31 JRE
-!define JRE_URL_32 "http://javadl.sun.com/webapps/download/AutoDL?BundleId=101406"
-!define JRE_URL_64 "http://javadl.sun.com/webapps/download/AutoDL?BundleId=101408"
+!include "StrFunc.nsh"
+${StrLoc}
!include "nsis_plugins\JREDyna_Inetc.nsh"
-!define FLASH_URL "http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player_ax.exe"
+;Old not working
+;!define FLASH_URL "http://download.macromedia.com/pub/flashplayer/current/support/install_flash_player_ax.exe"
+
+!define FLASH_URL "http://fpdownload.macromedia.com/pub/flashplayer/latest/help/install_flash_player_ax.exe"
+
!include "nsis_plugins\Flash_Inetc.nsh"
!include x64.nsh
@@ -106,81 +109,6 @@ Function GetInstalledSize
Push $GetInstalledSize.total
FunctionEnd
-
-
-!define StrLoc "!insertmacro StrLoc"
-
-!macro StrLoc ResultVar String SubString StartPoint
- Push "${String}"
- Push "${SubString}"
- Push "${StartPoint}"
- Call StrLoc
- Pop "${ResultVar}"
-!macroend
-
-Function StrLoc
-/*After this point:
- ------------------------------------------
- $R0 = StartPoint (input)
- $R1 = SubString (input)
- $R2 = String (input)
- $R3 = SubStringLen (temp)
- $R4 = StrLen (temp)
- $R5 = StartCharPos (temp)
- $R6 = TempStr (temp)*/
-
- ;Get input from user
- Exch $R0
- Exch
- Exch $R1
- Exch 2
- Exch $R2
- Push $R3
- Push $R4
- Push $R5
- Push $R6
-
- ;Get "String" and "SubString" length
- StrLen $R3 $R1
- StrLen $R4 $R2
- ;Start "StartCharPos" counter
- StrCpy $R5 0
-
- ;Loop until "SubString" is found or "String" reaches its end
- ${Do}
- ;Remove everything before and after the searched part ("TempStr")
- StrCpy $R6 $R2 $R3 $R5
-
- ;Compare "TempStr" with "SubString"
- ${If} $R6 == $R1
- ${If} $R0 == `<`
- IntOp $R6 $R3 + $R5
- IntOp $R0 $R4 - $R6
- ${Else}
- StrCpy $R0 $R5
- ${EndIf}
- ${ExitDo}
- ${EndIf}
- ;If not "SubString", this could be "String"'s end
- ${If} $R5 >= $R4
- StrCpy $R0 ``
- ${ExitDo}
- ${EndIf}
- ;If not, continue the loop
- IntOp $R5 $R5 + 1
- ${Loop}
-
- ;Return output to user
- Pop $R6
- Pop $R5
- Pop $R4
- Pop $R3
- Pop $R2
- Exch
- Pop $R1
- Exch $R0
-FunctionEnd
-
Function GetTime
!define GetTime `!insertmacro GetTimeCall`
@@ -411,7 +339,7 @@ var SMDir
!insertmacro MUI_LANGUAGE "${LANGLOAD}"
!verbose push
!verbose 0
- !include "nsis_locales/${LANGLOAD}.nsh"
+ !include "nsis_locales\${LANGLOAD}.nsh"
!verbose pop
!undef LANG
!macroend
@@ -738,14 +666,6 @@ Section "FFDec" SecDummy
SetOutPath "$INSTDIR"
File /r "dist\lib"
-/*
- ${If} $AddToContextMenu == 1
-
-
-
- ${EndIf}
-
- */
;create start-menu items
!insertmacro MUI_STARTMENU_WRITE_BEGIN 0 ;This macro sets $SMDir and skips to MUI_STARTMENU_WRITE_END if the "Don't create shortcuts" checkbox is checked...
@@ -803,7 +723,7 @@ Section "$(STRING_SWC)" SecPlayerGlobal
;checkadobe:
DetailPrint "$(STRING_SWC_CHECK)"
GetTempFileName $pghtml
-inetc::get /SILENT /USERAGENT "${APP_NAME} Setup" "https://www.adobe.com/support/flashplayer/downloads.html" "$pghtml"
+inetc::get /SILENT /USERAGENT "${APP_NAME} Setup" "https://www.adobe.com/support/flashplayer/downloads.html" "$pghtml" /END
Pop $0
StrCmp $0 "OK" dlok
MessageBox MB_OK "$(STRING_SWC_NOTFOUND)"
@@ -843,7 +763,7 @@ done:
IfFileExists "$APPDATA\JPEXS\FFDec\flashlib\$pgname" swcexists
CreateDirectory "$APPDATA\JPEXS\FFDec\flashlib"
DetailPrint "$(STRING_STARTING_DOWNLOAD) PlayerGlobal.swc"
- inetc::get /USERAGENT "${APP_NAME} Setup" $txt "$APPDATA\JPEXS\FFDec\flashlib\$pgname"
+ inetc::get /USERAGENT "${APP_NAME} Setup" $txt "$APPDATA\JPEXS\FFDec\flashlib\$pgname" /END
Pop $0
StrCmp $0 "OK" saved
MessageBox MB_OK "$(STRING_SWC_NOTFOUND)"
diff --git a/nsis_plugins/JREDyna_Inetc.nsh b/nsis_plugins/JREDyna_Inetc.nsh
index 3d48ae651..13bc1f4dc 100644
--- a/nsis_plugins/JREDyna_Inetc.nsh
+++ b/nsis_plugins/JREDyna_Inetc.nsh
@@ -1,6 +1,7 @@
; Version 1.0.1
;JPEXS : Added 64 bit support
+;JPEXS : Added getting latest JRE from java web
!ifndef JRE_DECLARES
@@ -17,13 +18,17 @@
!ifndef JRE_VERSION
!error "JRE_VERSION must be defined"
!endif
-
- !ifndef JRE_URL_64
- !error "JRE_URL_64 must be defined"
+
+ !ifndef JRE_DOWNLOAD_PAGE_URL
+ !define JRE_DOWNLOAD_PAGE_URL "https://java.com/en/download/manual.jsp"
!endif
-
- !ifndef JRE_URL_32
- !error "JRE_URL_32 must be defined"
+
+ !ifndef JRE_DOWNLOAD_ANCHOR_32
+ !define JRE_DOWNLOAD_ANCHOR_32 "Windows Offline"
+ !endif
+
+ !ifndef JRE_DOWNLOAD_ANCHOR_64
+ !define JRE_DOWNLOAD_ANCHOR_64 "Windows Offline (64-bit)"
!endif
@@ -77,6 +82,39 @@ exit:
FunctionEnd
+Function Trim
+ Exch $R1 ; Original string
+ Push $R2
+Loop:
+ StrCpy $R2 "$R1" 1
+ StrCmp "$R2" " " TrimLeft
+ StrCmp "$R2" "$\r" TrimLeft
+ StrCmp "$R2" "$\n" TrimLeft
+ StrCmp "$R2" "$\t" TrimLeft
+ GoTo Loop2
+TrimLeft:
+ StrCpy $R1 "$R1" "" 1
+ Goto Loop
+Loop2:
+ StrCpy $R2 "$R1" 1 -1
+ StrCmp "$R2" " " TrimRight
+ StrCmp "$R2" "$\r" TrimRight
+ StrCmp "$R2" "$\n" TrimRight
+ StrCmp "$R2" "$\t" TrimRight
+ GoTo Done
+TrimRight:
+ StrCpy $R1 "$R1" -1
+ Goto Loop2
+Done:
+ Pop $R2
+ Exch $R1
+FunctionEnd
+!define Trim "!insertmacro Trim"
+ !macro Trim ResultVar String
+ Push "${String}"
+ Call Trim
+ Pop "${ResultVar}"
+!macroend
@@ -86,6 +124,14 @@ FunctionEnd
var JRE_URL
+var JRE_ANCHOR
+var jpghtml
+var aurl
+var astate
+var atext
+var jf
+var jtxt
+var jpos
Function DownloadAndInstallJREIfNecessary
Push $0
@@ -104,12 +150,79 @@ Function DownloadAndInstallJREIfNecessary
downloadJRE:
${If} ${RunningX64}
- Push ${JRE_URL_64}
+ Push "${JRE_DOWNLOAD_ANCHOR_64}"
${Else}
- Push ${JRE_URL_32}
+ Push "${JRE_DOWNLOAD_ANCHOR_32}"
${EndIf}
- Pop $JRE_URL
+ Pop $JRE_ANCHOR
+
+ GetTempFileName $jpghtml
+ inetc::get /SILENT /USERAGENT "${APP_NAME} Setup" "${JRE_DOWNLOAD_PAGE_URL}" "$jpghtml" /END
+Pop $0
+StrCmp $0 "OK" 0 urlcheckfailed
+StrCpy $astate 0
+
+FileOpen $jf "$jpghtml" r
+jloop:
+ FileRead $jf $jtxt
+ IfErrors jdone
+ ${Trim} $jtxt $jtxt
+ ;MessageBox MB_OK $jtxt
+ StrCmp $astate 0 astate0
+ StrCmp $astate 1 astate1
+ StrCmp $astate 2 astate2
+ StrCmp $astate 3 astate3
+
+ astate0:
+ ${StrLoc} $jpos $jtxt ""
+ StrCmp $jpos "" jloop
+ IntOp $jpos $jpos + 3 ;"
+ StrCmp $jpos "" jloop
+ IntOp $jpos $jpos + 6 ;href=" len
+ StrCpy $jtxt $jtxt "" $jpos
+ ${StrLoc} $jpos $jtxt "$\"" ">"
+ StrCmp $jpos "" jloop
+ StrCpy $aurl $jtxt $jpos
+ IntOp $jpos $jpos + 1 ;" len
+ StrCpy $jtxt $jtxt "" $jpos
+
+ astate2:
+ StrCpy $astate 2
+ ${StrLoc} $jpos $jtxt ">" ">"
+ StrCmp $jpos "" jloop
+ IntOp $jpos $jpos + 1 ;> len
+ StrCpy $jtxt $jtxt "" $jpos
+
+ StrCpy $atext ""
+
+ astate3:
+ StrCpy $astate 3
+ ${StrLoc} $jpos $jtxt "" ">"
+ StrCmp $jpos "" 0 telse
+ StrCpy $atext "$atext$jtxt"
+ Goto jloop
+ telse:
+ StrCpy $jtxt $jtxt $jpos
+ StrCpy $atext "$atext$jtxt"
+ StrCpy $astate 0
+
+ StrCmp $atext $JRE_ANCHOR 0 jloop
+ StrCpy $JRE_URL $aurl
+jdone:
+ FileClose $jf
+
+ StrCmp $JRE_URL "" urlcheckfailed urlgetsuccessfull
+ urlcheckfailed:
+ MessageBox MB_ABORTRETRYIGNORE|MB_ICONSTOP "$(STRING_JRE_CANNOTDOWNLOAD)" /SD IDIGNORE IDRETRY downloadJRE IDIGNORE End
+ Abort
+ urlgetsuccessfull:
+
DetailPrint "$(STRING_JRE_WILLDOWNLOAD)$JRE_URL"
Inetc::get "$JRE_URL" "$TEMP\jre_Setup.exe" /END
Pop $0 # return value = exit code, "OK" if OK
@@ -121,14 +234,13 @@ downloadJRE:
downloadsuccessful:
-
DetailPrint "$(STRING_JRE_LAUNCHSETUP)"
IfSilent doSilent
- ExecWait '"$TEMP\jre_setup.exe" REBOOT=Suppress /L \"$TEMP\jre_setup.log\"' $0
+ ExecWait '"$TEMP\jre_setup.exe" REBOOT=Suppress SPONSORS=0 /L "$TEMP\jre_setup.log"' $0
goto jreSetupfinished
doSilent:
- ExecWait '"$TEMP\jre_setup.exe" /S REBOOT=Suppress /L \"$TEMP\jre_setup.log\"' $0
+ ExecWait '"$TEMP\jre_setup.exe" /S REBOOT=Suppress SPONSORS=0 /L "$TEMP\jre_setup.log"' $0
jreSetupFinished: