mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-07-19 14:28:09 +00:00
362 lines
9.1 KiB
NSIS
362 lines
9.1 KiB
NSIS
;--------------------------------
|
||
;Include Modern UI
|
||
|
||
!include "MUI2.nsh"
|
||
|
||
;--------------------------------
|
||
;General
|
||
|
||
;These are defined in Ant script:
|
||
;!define APP_VER "4.0"
|
||
;!define APP_VER_MAJOR 4
|
||
;!define APP_VER_MINOR 0
|
||
;!define APP_URL "http://www.free-decompiler.com/flash/"
|
||
;!define APP_PUBLISHER "JPEXS"
|
||
;!define APP_NAME "JPEXS Free Flash Decompiler"
|
||
|
||
|
||
|
||
!define APP_VERNAME "${APP_NAME} v. ${APP_VER}"
|
||
!define MUI_WELCOMEFINISHPAGE_BITMAP "graphics\installer_164x314.bmp"
|
||
!define MUI_HEADERIMAGE
|
||
!define MUI_HEADERIMAGE_BITMAP "graphics\installer_150x57.bmp"
|
||
|
||
!define APP_UNINSTKEY "{E618D276-6596-41F4-8A98-447D442A77DB}_is1"
|
||
|
||
SetCompressor /SOLID lzma
|
||
|
||
;Name and file
|
||
Name "${APP_VERNAME}"
|
||
OutFile "${APP_SETUPFILE}"
|
||
|
||
|
||
|
||
;Default installation folder
|
||
InstallDir "$PROGRAMFILES\FFDec"
|
||
|
||
;Get installation folder from registry if available
|
||
InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "InstallLocation"
|
||
|
||
;Request application privileges for Windows Vista
|
||
RequestExecutionLevel admin
|
||
|
||
;--------------------------------
|
||
;Interface Settings
|
||
|
||
!define MUI_ABORTWARNING
|
||
|
||
|
||
|
||
|
||
!include LogicLib.nsh
|
||
|
||
; Return on top of stack the total size of the selected (installed) sections, formated as DWORD
|
||
; Assumes no more than 256 sections are defined
|
||
Var GetInstalledSize.total
|
||
Function GetInstalledSize
|
||
Push $0
|
||
Push $1
|
||
StrCpy $GetInstalledSize.total 0
|
||
${ForEach} $1 0 256 + 1
|
||
${if} ${SectionIsSelected} $1
|
||
SectionGetSize $1 $0
|
||
IntOp $GetInstalledSize.total $GetInstalledSize.total + $0
|
||
${Endif}
|
||
|
||
; Error flag is set when an out-of-bound section is referenced
|
||
${if} ${errors}
|
||
${break}
|
||
${Endif}
|
||
${Next}
|
||
|
||
ClearErrors
|
||
Pop $1
|
||
Pop $0
|
||
IntFmt $GetInstalledSize.total "0x%08X" $GetInstalledSize.total
|
||
Push $GetInstalledSize.total
|
||
FunctionEnd
|
||
|
||
Function GetTime
|
||
!define GetTime `!insertmacro GetTimeCall`
|
||
|
||
!macro GetTimeCall _FILE _OPTION _R1 _R2 _R3 _R4 _R5 _R6 _R7
|
||
Push `${_FILE}`
|
||
Push `${_OPTION}`
|
||
Call GetTime
|
||
Pop ${_R1}
|
||
Pop ${_R2}
|
||
Pop ${_R3}
|
||
Pop ${_R4}
|
||
Pop ${_R5}
|
||
Pop ${_R6}
|
||
Pop ${_R7}
|
||
!macroend
|
||
|
||
Exch $1
|
||
Exch
|
||
Exch $0
|
||
Exch
|
||
Push $2
|
||
Push $3
|
||
Push $4
|
||
Push $5
|
||
Push $6
|
||
Push $7
|
||
ClearErrors
|
||
|
||
StrCmp $1 'L' gettime
|
||
StrCmp $1 'A' getfile
|
||
StrCmp $1 'C' getfile
|
||
StrCmp $1 'M' getfile
|
||
StrCmp $1 'LS' gettime
|
||
StrCmp $1 'AS' getfile
|
||
StrCmp $1 'CS' getfile
|
||
StrCmp $1 'MS' getfile
|
||
goto error
|
||
|
||
getfile:
|
||
IfFileExists $0 0 error
|
||
System::Call /NOUNLOAD '*(i,l,l,l,i,i,i,i,&t260,&t14) i .r6'
|
||
System::Call /NOUNLOAD 'kernel32::FindFirstFileA(t,i)i(r0,r6) .r2'
|
||
System::Call /NOUNLOAD 'kernel32::FindClose(i)i(r2)'
|
||
|
||
gettime:
|
||
System::Call /NOUNLOAD '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7'
|
||
StrCmp $1 'L' 0 systemtime
|
||
System::Call /NOUNLOAD 'kernel32::GetLocalTime(i)i(r7)'
|
||
goto convert
|
||
systemtime:
|
||
StrCmp $1 'LS' 0 filetime
|
||
System::Call /NOUNLOAD 'kernel32::GetSystemTime(i)i(r7)'
|
||
goto convert
|
||
|
||
filetime:
|
||
System::Call /NOUNLOAD '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)'
|
||
System::Free /NOUNLOAD $6
|
||
StrCmp $1 'A' 0 +3
|
||
StrCpy $2 $3
|
||
goto tolocal
|
||
StrCmp $1 'C' 0 +3
|
||
StrCpy $2 $4
|
||
goto tolocal
|
||
StrCmp $1 'M' tolocal
|
||
|
||
StrCmp $1 'AS' tosystem
|
||
StrCmp $1 'CS' 0 +3
|
||
StrCpy $3 $4
|
||
goto tosystem
|
||
StrCmp $1 'MS' 0 +3
|
||
StrCpy $3 $2
|
||
goto tosystem
|
||
|
||
tolocal:
|
||
System::Call /NOUNLOAD 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)'
|
||
tosystem:
|
||
System::Call /NOUNLOAD 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)'
|
||
|
||
convert:
|
||
System::Call /NOUNLOAD '*$7(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i(.r5,.r6,.r4,.r0,.r3,.r2,.r1,)'
|
||
System::Free $7
|
||
|
||
IntCmp $0 9 0 0 +2
|
||
StrCpy $0 '0$0'
|
||
IntCmp $1 9 0 0 +2
|
||
StrCpy $1 '0$1'
|
||
IntCmp $2 9 0 0 +2
|
||
StrCpy $2 '0$2'
|
||
IntCmp $6 9 0 0 +2
|
||
StrCpy $6 '0$6'
|
||
|
||
StrCmp $4 0 0 +3
|
||
StrCpy $4 Sunday
|
||
goto end
|
||
StrCmp $4 1 0 +3
|
||
StrCpy $4 Monday
|
||
goto end
|
||
StrCmp $4 2 0 +3
|
||
StrCpy $4 Tuesday
|
||
goto end
|
||
StrCmp $4 3 0 +3
|
||
StrCpy $4 Wednesday
|
||
goto end
|
||
StrCmp $4 4 0 +3
|
||
StrCpy $4 Thursday
|
||
goto end
|
||
StrCmp $4 5 0 +3
|
||
StrCpy $4 Friday
|
||
goto end
|
||
StrCmp $4 6 0 error
|
||
StrCpy $4 Saturday
|
||
goto end
|
||
|
||
error:
|
||
SetErrors
|
||
StrCpy $0 ''
|
||
StrCpy $1 ''
|
||
StrCpy $2 ''
|
||
StrCpy $3 ''
|
||
StrCpy $4 ''
|
||
StrCpy $5 ''
|
||
StrCpy $6 ''
|
||
|
||
end:
|
||
Pop $7
|
||
Exch $6
|
||
Exch
|
||
Exch $5
|
||
Exch 2
|
||
Exch $4
|
||
Exch 3
|
||
Exch $3
|
||
Exch 4
|
||
Exch $2
|
||
Exch 5
|
||
Exch $1
|
||
Exch 6
|
||
Exch $0
|
||
FunctionEnd
|
||
|
||
|
||
;--------------------------------
|
||
;Pages
|
||
|
||
!insertmacro MUI_PAGE_LICENSE "resources/license.txt"
|
||
!insertmacro MUI_PAGE_COMPONENTS
|
||
!insertmacro MUI_PAGE_DIRECTORY
|
||
|
||
var SMDir
|
||
|
||
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${APP_NAME}"
|
||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
|
||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}"
|
||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Inno Setup: Icon Group"
|
||
!insertmacro MUI_PAGE_STARTMENU 0 $SMDir
|
||
!insertmacro MUI_PAGE_INSTFILES
|
||
|
||
!define MUI_FINISHPAGE_RUN "$INSTDIR\ffdec.exe"
|
||
!insertmacro MUI_PAGE_FINISH
|
||
|
||
|
||
!insertmacro MUI_UNPAGE_CONFIRM
|
||
!insertmacro MUI_UNPAGE_INSTFILES
|
||
|
||
;--------------------------------
|
||
;Languages
|
||
|
||
!insertmacro MUI_LANGUAGE "English"
|
||
!insertmacro MUI_LANGUAGE "Czech"
|
||
|
||
|
||
|
||
;--------------------------------
|
||
;Installer Sections
|
||
|
||
|
||
LangString Sec1Name ${LANG_ENGLISH} "FFDec"
|
||
LangString Sec1Name ${LANG_CZECH} "FFDec"
|
||
|
||
LangString Sec2Desktop ${LANG_ENGLISH} "Desktop Shortcut"
|
||
LangString Sec2Desktop ${LANG_CZECH} "Z<EFBFBD>stupce na Plo<6C>e"
|
||
|
||
|
||
Section !$(Sec1Name) SecDummy
|
||
|
||
SetShellVarContext all
|
||
|
||
SetOutPath "$INSTDIR"
|
||
|
||
File "dist\ffdec.exe"
|
||
File "dist\ffdec.bat"
|
||
File "dist\ffdec.jar"
|
||
File "dist\license.txt"
|
||
|
||
SetOutPath "$INSTDIR"
|
||
File /r "dist\lib"
|
||
|
||
|
||
;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...
|
||
|
||
CreateDirectory "$SMPROGRAMS\$SMDir"
|
||
CreateShortCut "$SMPROGRAMS\$SMDir\Uninstall ${APP_NAME}.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0
|
||
CreateShortCut "$SMPROGRAMS\$SMDir\${APP_NAME}.lnk" "$INSTDIR\ffdec.exe" "" "$INSTDIR\ffdec.exe" 0
|
||
!insertmacro MUI_STARTMENU_WRITE_END
|
||
|
||
;Store installation folder
|
||
|
||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "DisplayName" "${APP_NAME} (remove only)"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "UninstallString" '"$INSTDIR\Uninstall.exe"'
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "QuietUninstallString" '"$INSTDIR\Uninstall.exe" /S'
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "DisplayVersion" "${APP_VER}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "URLInfoAbout" "${APP_URL}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "URLUpdateInfo" "${APP_URL}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "HelpLink" "${APP_URL}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "Publisher" "${APP_PUBLISHER}"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "InstallLocation" "$INSTDIR"
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "Inno Setup: Icon Group" "$SMDir"
|
||
|
||
Call GetInstalledSize
|
||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "EstimatedSize" $GetInstalledSize.total
|
||
|
||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "MajorVersion" ${APP_VER_MAJOR}
|
||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "MinorVersion" ${APP_VER_MINOR}
|
||
|
||
${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
|
||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}" "InstallDate" "$2$1$0"
|
||
|
||
|
||
;Create un1installer
|
||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||
|
||
SectionEnd
|
||
|
||
Section !$(Sec2Desktop)
|
||
SetShellVarContext all
|
||
CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$INSTDIR\ffdec.exe" ""
|
||
SectionEnd
|
||
|
||
Function .onInit
|
||
# set section 'test' as selected and read-only
|
||
IntOp $0 ${SF_SELECTED} | ${SF_RO}
|
||
SectionSetFlags ${SecDummy} $0
|
||
FunctionEnd
|
||
|
||
;--------------------------------
|
||
;Descriptions
|
||
|
||
;Language strings
|
||
LangString DESC_SecDummy ${LANG_ENGLISH} "Application GUI and Libraries"
|
||
LangString DESC_SecDummy ${LANG_CZECH} "Aplika<EFBFBD>n<EFBFBD> rozhran<61> a knihovny"
|
||
|
||
;Assign language strings to sections
|
||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||
!insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy)
|
||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||
|
||
;--------------------------------
|
||
;Uninstaller Section
|
||
|
||
Section "Uninstall"
|
||
|
||
SetShellVarContext all
|
||
RMDir /r "$INSTDIR\*.*"
|
||
|
||
Delete "$INSTDIR\Uninstall.exe"
|
||
|
||
RMDir "$INSTDIR"
|
||
|
||
;Delete Start Menu Shortcuts
|
||
Delete "$DESKTOP\${APP_NAME}.lnk"
|
||
|
||
|
||
!insertmacro MUI_STARTMENU_GETFOLDER 0 $SMDir
|
||
|
||
RmDir /r "$SMPROGRAMS\$SMDir\*.*"
|
||
RMDir "$SMPROGRAMS\$SMDir"
|
||
|
||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${APP_UNINSTKEY}"
|
||
|
||
SectionEnd
|
||
|