| 
									
										
										
										
											2011-10-22 00:19:48 +01:00
										 |  |  | ; YAP install-script (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)
 | 
					
						
							|  |  |  | !define REGKEY SOFTWARE\YAP\Prolog64
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RequestExecutionLevel admin
 | 
					
						
							|  |  |  | SetCompressor bzip2
 | 
					
						
							|  |  |  | MiscButtonText "<back" "next>" "abort" "finished"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ; Preload files that are needed by the installer itself
 | 
					
						
							|  |  |  | ReserveFile "${NSISDIR}\Plugins\UserInfo.dll"
 | 
					
						
							|  |  |  | ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
 | 
					
						
							|  |  |  | ReserveFile "options.ini"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | InstallDir $PROGRAMFILES64\Yap64
 | 
					
						
							|  |  |  | InstallDirRegKey HKLM ${REGKEY} "home"
 | 
					
						
							|  |  |  | ComponentText "This will install YAP64 on your computer."
 | 
					
						
							|  |  |  | DirText "This program will install YAP64 on your computer.\
 | 
					
						
							|  |  |  |          Choose a directory"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | LicenseData c:\Yap64\share\doc\Yap\Artistic
 | 
					
						
							|  |  |  | LicenseText "YAP64 is governed by the Artistic License,\
 | 
					
						
							|  |  |  | 	but 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
 | 
					
						
							|  |  |  |   ; make sure we use 64 bits registry
 | 
					
						
							|  |  |  |   SetRegView 64
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Delete $INSTDIR\bin\*.pdb
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\bin
 | 
					
						
							|  |  |  |   File c:\Yap64\bin\yap.exe
 | 
					
						
							|  |  |  |   File c:\Yap64\bin\yap.dll
 | 
					
						
							|  |  |  |   File c:\Yap64\bin\pl-yap.exe
 | 
					
						
							|  |  |  |   File c:\Yap64\bin\plterm.dll
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\bin
 | 
					
						
							|  |  |  | ; SYSTEM STUFF
 | 
					
						
							|  |  |  |   File c:\Yap64\lib\Yap\*.dll
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\lib
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\lib
 | 
					
						
							|  |  |  | ; SYSTEM STUFF
 | 
					
						
							|  |  |  |   File c:\Yap64\lib\Yap\startup.yss
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\share
 | 
					
						
							|  |  |  | ; SYSTEM STUFF
 | 
					
						
							|  |  |  |   File /r c:\Yap64\share\Yap\*
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR\doc\Yap
 | 
					
						
							|  |  |  |   File c:\Yap64\share\doc\Yap\yap.html
 | 
					
						
							|  |  |  |   File c:\Yap64\share\doc\Yap\yap.pdf
 | 
					
						
							|  |  |  |   File c:\Yap64\share\doc\Yap\Artistic
 | 
					
						
							|  |  |  |   File c:\Yap64\share\doc\Yap\README.TXT
 | 
					
						
							|  |  |  |   File c:\Yap64\share\doc\Yap\COPYING.TXT
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} "home" "$INSTDIR"
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} "startup" "$INSTDIR\lib\startup.yss"
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} "library" "$INSTDIR\share"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ; Write uninstaller
 | 
					
						
							|  |  |  |   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" "DisplayName" "YAP64 (remove only)"
 | 
					
						
							|  |  |  |   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64" "UninstallString" '"$INSTDIR\uninstall.exe"'
 | 
					
						
							|  |  |  |   WriteUninstaller "uninstall.exe"
 | 
					
						
							|  |  |  | SectionEnd
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Section "Start Menu shortcuts"
 | 
					
						
							|  |  |  |   SectionIn 1 2 3
 | 
					
						
							|  |  |  |   SetOutPath ${CWD}
 | 
					
						
							|  |  |  |   CreateDirectory "$SMPROGRAMS\${GRP}"
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\Prolog.lnk" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\bin\yap.exe" \
 | 
					
						
							|  |  |  | 		 "" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\bin\yap.exe" \
 | 
					
						
							|  |  |  | 		 0
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\PLYap.lnk" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\bin\pl-yap.exe" \
 | 
					
						
							|  |  |  | 		 "" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\bin\pl-yap.exe" \
 | 
					
						
							|  |  |  | 		 0
 | 
					
						
							|  |  |  |   SetOutPath $INSTDIR
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\Readme.lnk" \
 | 
					
						
							|  |  |  |   		  "$INSTDIR\doc\Yap\README.TXT" "" \
 | 
					
						
							|  |  |  | 		  "$INSTDIR\doc\Yap\README.TXT" 0 \
 | 
					
						
							|  |  |  | 		  "SW_SHOWNORMAL" "" "View readme"
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\Manual Html.lnk" \
 | 
					
						
							|  |  |  |   		  "$INSTDIR\doc\Yap\yap.html" "" \
 | 
					
						
							|  |  |  | 		  "$INSTDIR\doc\Yap\yap.html" 0 \
 | 
					
						
							|  |  |  | 		  "SW_SHOWNORMAL" "" "View readme"
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\Manual PDF.lnk" \
 | 
					
						
							|  |  |  |   		  "$INSTDIR\doc\Yap\yap.pdf" "" \
 | 
					
						
							|  |  |  | 		  "$INSTDIR\doc\Yap\yap.pdf" 0 \
 | 
					
						
							|  |  |  | 		  "SW_SHOWNORMAL" "" "View readme"
 | 
					
						
							|  |  |  |   CreateShortCut "$SMPROGRAMS\${GRP}\Uninstall.lnk" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\uninstall.exe" \
 | 
					
						
							|  |  |  | 		 "" \
 | 
					
						
							|  |  |  | 		 "$INSTDIR\uninstall.exe" \
 | 
					
						
							|  |  |  | 		 0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} group   ${GRP}
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} cwd     ${CWD}
 | 
					
						
							|  |  |  |   WriteRegStr HKLM ${REGKEY} context ${SHCTX}
 | 
					
						
							|  |  |  | SectionEnd
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ################################################################
 | 
					
						
							|  |  |  | # The uninstaller
 | 
					
						
							|  |  |  | ################################################################
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | UninstallText "This will uninstall YAP.64 Hit Uninstall to continue."
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Section "Uninstall"
 | 
					
						
							|  |  |  |   ReadRegStr ${EXT}   HKLM Software\YAP\Prolog64 fileExtension
 | 
					
						
							|  |  |  |   ReadRegStr ${GRP}   HKLM Software\YAP\Prolog64 group
 | 
					
						
							|  |  |  |   ReadRegStr ${SHCTX} HKLM Software\YAP\Prolog64 context
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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:
 | 
					
						
							|  |  |  |     DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAP64"
 | 
					
						
							|  |  |  |     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.ini"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FunctionEnd
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ################################################################
 | 
					
						
							|  |  |  | # Handle customisation;  Settings are maintained in
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # 	HKLM ${REGKEY}
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | # Using the following mapping:
 | 
					
						
							|  |  |  | #
 | 
					
						
							|  |  |  | #	${EXT} fileExtension
 | 
					
						
							|  |  |  | ################################################################
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Function SetCustom
 | 
					
						
							|  |  |  | # 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}  
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Startmenu program group
 | 
					
						
							|  |  |  |   ReadRegStr ${GRP} HKLM ${REGKEY} group
 | 
					
						
							|  |  |  |   StrCmp ${GRP} "" 0 HasGroup
 | 
					
						
							|  |  |  |     StrCpy ${GRP} "YAP64"
 | 
					
						
							|  |  |  |   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"
 | 
					
						
							|  |  |  | 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\doc\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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-13 19:30:00 +00:00
										 |  |  | outfile "yap64-6.3.2-installer.exe"
 |