This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/misc/yap.nsi
2014-11-05 07:45:36 +00:00

329 lines
8.3 KiB
Plaintext
Executable File

; YAP install-script (based on a similar scrip from SWI-Prolog)
!define TEMP1 $R0 ; Temp variable
!define EXT $3 ; Filename extension for Prolog sources
!define CWD $4 ; Working directory for startmenu shortcut
!define GRP $5 ; Startmenu group
!define SHCTX $6 ; Shell context (current/all)
!define ARCH $7 ; Architecture (x86, ia64 or amd64)
RequestExecutionLevel admin
MiscButtonText "<back" "next>" "abort" "finished"
SetCompressor /FINAL bzip2
; Preload files that are needed by the installer itself
ReserveFile "${NSISDIR}\Plugins\x86-unicode\UserInfo.dll"
ReserveFile "${NSISDIR}\Plugins\x86-unicode\InstallOptions.dll"
ReserveFile "${OPTIONS}"
!ifdef WIN64
InstallDir "$PROGRAMFILES64\${TARGET}"
!else
InstallDir "$PROGRAMFILES\${TARGET}"
!endif
InstallDirRegKey HKLM ${REGKEY} "home"
ComponentText "This will install YAP on your computer."
DirText "This program will install YAP on your computer.\
Choose a directory"
Icon ${ROOTDIR}\share\Yap\icons\yap.ico
LicenseData ${ROOTDIR}\share\doc\Yap\Artistic
LicenseText "YAP is governed by the Artistic License and LGPL;\
it includes code under the GPL and LGPL."
InstType "Typical (all except debug symbols)" # 1
InstType "Minimal (no graphics)" # 2
InstType "Full" # 3
Page license
Page directory
Page custom SetCustom "" ": Installation options"
Page instfiles
Section "Base system (required)"
SectionIn RO # do not allow to delete this
!ifdef WIN64
SetRegView 64
!endif
Delete $INSTDIR\bin\*.pdb
SetOutPath $INSTDIR\bin
File ${ROOTDIR}\bin\yap.exe
File ${ROOTDIR}\bin\yap.dll
File ${ROOTDIR}\bin\yap-win.exe
File ${ROOTDIR}\bin\*.dll
; first, copy library DLLs
SetOutPath $INSTDIR\lib\Yap
; SYSTEM STUFF
File ${ROOTDIR}\lib\Yap\*.dll
SetOutPath $INSTDIR\lib\Yap
; SYSTEM STUFF
File ${ROOTDIR}\lib\Yap\startup.yss
SetOutPath $INSTDIR\share\Yap
; SYSTEM STUFF
File /r ${ROOTDIR}\share\Yap\*
SetOutPath $INSTDIR\share\PrologCommons
; SYSTEM STUFF
File /r ${ROOTDIR}\share\PrologCommons
SetOutPath $INSTDIR\share\doc\Yap
File /r ${ROOTDIR}\share\doc\Yap\html\*
; File ${ROOTDIR}\share\doc\Yap\refman.pdf
; File ${ROOTDIR}\share\doc\Yap\yap.info
File ${ROOTDIR}\share\doc\Yap\Artistic
File ${ROOTDIR}\share\doc\Yap\README.TXT
File ${ROOTDIR}\share\doc\Yap\COPYING
; Write uninstaller
!ifdef WIN64
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" "DisplayName" "YAP64 (remove only)"
!else
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP" "DisplayName" "YAP (remove only)"
!endif
WriteUninstaller "uninstall.exe"
SectionEnd
Section "Start Menu shortcuts"
SectionIn 1 2 3
SetOutPath ${CWD}
!ifdef WIN64
StrCpy ${GRP} "YAP64"
!else
StrCpy ${GRP} "YAP"
!endif
CreateDirectory "$SMPROGRAMS\${GRP}"
CreateShortCut "$SMPROGRAMS\${GRP}\YAP-WIN.lnk" \
"$INSTDIR\bin\yap-win.exe" \
"" \
"$INSTDIR\bin\yap-win.exe" \
0
CreateShortCut "$SMPROGRAMS\${GRP}\YAP.lnk" \
"$INSTDIR\bin\yap.exe" \
"" \
"$INSTDIR\bin\yap.exe" \
0
CreateShortCut "$SMPROGRAMS\${GRP}\Readme.lnk" \
"$INSTDIR\share\doc\Yap\README.TXT" "" \
"$INSTDIR\share\doc\Yap\README.TXT" 0 \
"SW_SHOWNORMAL" "" "View readme"
CreateShortCut "$SMPROGRAMS\${GRP}\Manual Html.lnk" \
"$INSTDIR\share\doc\Yap\html\index.html" "" \
"$INSTDIR\share\doc\Yap\html\index.html" 0 \
"SW_SHOWNORMAL" "" "View readme"
; CreateShortCut "$SMPROGRAMS\${GRP}\Manual PDF.lnk" \
; "$INSTDIR\share\doc\Yap\refman.pdf" "" \
; "$INSTDIR\share\doc\Yap\refman.pdf" 0 \
; "SW_SHOWNORMAL" "" "View readme"
CreateShortCut "$SMPROGRAMS\${GRP}\Uninstall.lnk" \
"$INSTDIR\uninstall.exe" \
"" \
"$INSTDIR\uninstall.exe" \
0
WriteRegStr HKLM ${REGKEY} fileExtension ${EXT}
WriteRegStr HKLM ${REGKEY} group ${GRP}
WriteRegStr HKLM ${REGKEY} cwd ${CWD}
WriteRegStr HKLM ${REGKEY} context ${SHCTX}
SectionEnd
################################################################
# The uninstaller
################################################################
!ifdef WIN64
UninstallText "This will uninstall YAP64. Hit Uninstall to continue."
!else
UninstallText "This will uninstall YAP. Hit Uninstall to continue."
!endif
Section "Uninstall"
!ifdef WIN64
SetRegView 64
!endif
ReadRegStr ${EXT} HKLM ${REGKEY} fileExtension
StrCmp ${EXT} "" 0 UExt
StrCpy ${EXT} "pl"
UExt:
ReadRegStr ${GRP} HKLM ${REGKEY} group
StrCmp ${GRP} "" 0 UHasGroup
!ifdef WIN64
StrCpy ${GRP} "YAP64"
!else
StrCpy ${GRP} "YAP"
!endif
UHasGroup:
ReadRegStr ${SHCTX} HKLM ${REGKEY} context
StrCmp ${SHCTX} "" 0 UHasContext
StrCpy ${SHCTX} "all"
UHasContext:
StrCmp ${SHCTX} "all" 0 +2
SetShellVarContext all
MessageBox MB_YESNO "Delete the following components?\r$\n \
Install dir: $INSTDIR$\r$\n \
Extension: ${EXT}$\r$\n \
Program Group ${GRP}" \
IDNO Done
StrCmp "${EXT}" "" NoExt
ReadRegStr $1 HKCR .${EXT} ""
StrCmp $1 "PrologFile" 0 NoOwn ; only do this if we own it
ReadRegStr $1 HKCR .${EXT} "backup_val"
StrCmp $1 "" 0 RestoreBackup ; if backup == "" then delete the whole key
DeleteRegKey HKCR .${EXT}
Goto NoOwn
RestoreBackup:
WriteRegStr HKCR .${EXT} "" $1
DeleteRegValue HKCR .${EXT} "backup_val"
NoOwn:
NoExt:
StrCmp "${GRP}" "" NoGrp
MessageBox MB_OK "Deleting $SMPROGRAMS\${GRP}"
RMDir /r "$SMPROGRAMS\${GRP}"
NoGrp:
IfFileExists "$INSTDIR\bin\yap.exe" 0 NoDir
RMDir /r "$INSTDIR"
goto Done
NoDir:
MessageBox MB_OK "Folder $INSTDIR doesn't seem to contain Prolog"
Done:
!ifdef WIN64
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64"
!else
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP"
!endif
DeleteRegKey HKLM ${REGKEY}
SectionEnd
################################################################
# FUNCTIONS
################################################################
Function .onInit
;Extract InstallOptions files
;$PLUGINSDIR will automatically be removed when the installer closes
InitPluginsDir
File /oname=$PLUGINSDIR\options.ini "${OPTIONS}"
FunctionEnd
################################################################
# Handle customisation; Settings are maintained in
#
# HKLM ${REGKEY}
#
# Using the following mapping:
#
# ${EXT} fileExtension
################################################################
Function SetCustom
!ifdef WIN64
SetRegView 64
!endif
# Basic system info
Call UserInfo
# Filename extension
ReadRegStr ${EXT} HKLM ${REGKEY} fileExtension
StrCmp ${EXT} "" 0 HasExt
StrCpy ${EXT} "pl"
HasExt:
WriteINIStr $PLUGINSDIR\options.ini "Field 4" "State" ${EXT}
StrCpy ${CWD} $INSTDIR
# Startmenu program group
ReadRegStr ${GRP} HKLM ${REGKEY} group
StrCmp ${GRP} "" 0 HasGroup
!ifdef WIN64
StrCpy ${GRP} "YAP64"
!else
StrCpy ${GRP} "YAP"
!endif
HasGroup:
WriteINIStr $PLUGINSDIR\options.ini "Field 6" "State" ${GRP}
# Start the dialog
Push ${TEMP1}
InstallOptions::dialog "$PLUGINSDIR\options.ini"
Pop ${TEMP1}
Pop ${TEMP1}
# Get the results
ReadINIStr ${EXT} $PLUGINSDIR\options.ini "Field 4" "State"
ReadINIStr ${GRP} $PLUGINSDIR\options.ini "Field 6" "State"
ReadINIStr ${GRP} $PLUGINSDIR\options.ini "Field 5" "State"
FunctionEnd
Function UserInfo
ClearErrors
UserInfo::GetName
IfErrors Win9x
Pop $0
UserInfo::GetAccountType
Pop $1
StrCmp $1 "Admin" 0 +4
SetShellVarContext all
StrCpy ${SHCTX} "all"
Goto done
StrCmp $1 "Power" 0 +3
StrCpy ${SHCTX} "all"
Goto done
StrCmp $1 "User" 0 +3
StrCpy ${SHCTX} "current"
Goto done
StrCmp $1 "Guest" 0 +3
StrCpy ${SHCTX} "current"
Goto done
StrCpy ${SHCTX} "current" # Unkown accounttype
Goto done
Win9x:
StrCpy ${SHCTX} "current"
Goto end
done:
StrCmp ${SHCTX} "all" 0 +2
SetShellVarContext all
end:
FunctionEnd
Function .onInstSuccess
MessageBox MB_YESNO "Installation complete. View readme?" IDNO NoReadme
ExecShell "open" "$INSTDIR\share\doc\Yap\README.TXT"
NoReadme:
FunctionEnd
Function .onInstFailed
MessageBox MB_OK "Installation failed.$\r$\n\
If you cannot resolve the issue or it is a bug in the$\r$\n\
installer, please contact yap-users@sf.net"
FunctionEnd
outfile "${OUT_DIR}\yap${ABI}-${VERSION}-installer.exe"