view nsis/lilypond-prepost.nsh @ 6512:ccc20ae889ca default tip guix

mingw::guile-2.0.7 builds.
author Jan Nieuwenhuizen <janneke@gnu.org>
date Thu, 24 Mar 2016 08:03:39 +0100
parents cb3beb25f394
children
line wrap: on
line source


Function create_shortcuts
	;; Start menu
	CreateDirectory "$SMPROGRAMS\LilyPond"
	CreateShortCut "$SMPROGRAMS\LilyPond\LilyPond.lnk" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" "-dgui" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" 0 SW_SHOWMINIMIZED
	CreateShortCut "$SMPROGRAMS\LilyPond\LilyPond Tutorial.lnk" \
		"http://lilypond.org/tutorial" "" \
		"firefox.exe" 0
	CreateShortCut "$SMPROGRAMS\LilyPond\LilyPond Website.lnk" \
		"http://lilypond.org/" "" \
		"firefox.exe" 0
	CreateShortCut "$SMPROGRAMS\LilyPond\Music in Mutopia.lnk" \
		"http://www.mutopiaproject.org" "" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" 1
	CreateShortCut "$SMPROGRAMS\LilyPond\Uninstall.lnk" \
		"$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0


	;; Desktop
	ClearErrors
	ReadRegStr $R0 HKLM \
		"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
	IfErrors dos windows
dos:
	CreateShortCut "$DESKTOP\LilyPond.lnk" "" \
		"$INSTDIR\usr\bin\lilypond-windows.bat" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" 0 SW_SHOWMINIMIZED
	Goto exit
windows:
	CreateShortCut "$DESKTOP\LilyPond.lnk" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" "-dgui" \
		"$INSTDIR\usr\bin\lilypond-windows.exe" 0 SW_SHOWMINIMIZED
		
exit:
FunctionEnd


Function registry_lilypond
	WriteRegStr HKCR ".ly" "" "LilyPond"
	WriteRegStr HKCR ".ly" "LilyPond" "LilyPond"
	WriteRegStr HKCR ".ly" "Content Type" "text/lilypond-source"

;;ly_icon:
	WriteRegStr HKCR "LilyPond" "DefaultIcon" ""
	WriteRegStr HKCR "LilyPond\DefaultIcon" "" \
		    "$INSTDIR\usr\bin\lilypond-windows.exe,1"

;;ly_open:
	ReadRegStr $R0 HKCR "LilyPond\shell\open\command" ""
	;;StrCmp $R0 "" 0 ly_edit
	WriteRegStr HKCR "LilyPond\shell" "" "open"
	WriteRegExpandStr HKCR "LilyPond\shell\open\command" "" '"$EDITOR" "%1"'

;;ly_edit:
	ReadRegStr $R0 HKCR "LilyPond\shell\edit\command" ""
	;;StrCmp $R0 "" 0 ly_generate
	WriteRegStr HKCR "LilyPond\shell" "" "edit"
	WriteRegStr HKCR "LilyPond\shell\edit" "" "&Edit source..."
	WriteRegExpandStr HKCR "LilyPond\shell\edit\command" "" '"$EDITOR" "%1"'

;;ly_generate:
	ReadRegStr $R0 HKCR "LilyPond\shell\generate\command" ""
	;;StrCmp $R0 "" 0 ly_auto_file
	WriteRegStr HKCR "LilyPond\shell" "" "generate"
	WriteRegStr HKCR "LilyPond\shell\generate" "" "&Generate PDF ..."
	WriteRegExpandStr HKCR "LilyPond\shell\generate\command" "" \
			  '"$INSTDIR\usr\bin\lilypond-windows.exe" -dgui "%1"'

;; what's the difference between ly_auto_file and shell/open/command?
;;ly_auto_file:
	ReadRegStr $R0 HKCR "ly_auto_file\shell\open\command" ""
	;;StrCmp $R0 "" 0 ly_generate
	WriteRegStr HKCR "ly_auto_file\shell" "" "open"
	WriteRegExpandStr HKCR "ly_auto_file\shell\open\command" "" '"$EDITOR" "%1"'

;;textedit_open:
	WriteRegStr HKCR "textedit" "URL protocol" ""
	ReadRegStr $R0 HKCR "textedit\shell\open\command" ""
	;;StrCmp $R0 "" 0 exit
	WriteRegStr HKCR "textedit\shell" "" "open"
	WriteRegExpandStr HKCR "textedit\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -s "$INSTDIR\usr\bin\lilypond-invoke-editor" "%1"'
;;exit:
FunctionEnd



Function postinstall_lilypad
	ClearErrors
	ReadRegStr $R0 HKLM \
		"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
	IfErrors dos exit
dos:
	# In this case, the underlying OS does not support Unicode,
	# so the ASCII LilyPad should be the default.
	StrCpy $0 "$INSTDIR\usr\bin\lilypad"
	Rename "$0.exe" "$0-unicode.exe"
	Rename "$0-ascii.exe" "$0.exe"
	# Add lilypad-unicode.exe to files.txt to ensure complete uninstall.
	SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL
	FileOpen $UninstLog "$INSTDIR\${UninstLog}" a
	FileSeek $UninstLog 0 END
	FileWrite $UninstLog "\usr\bin\lilypad-unicode.exe$\r$\n"
	FileClose $UninstLog
exit:	
FunctionEnd

Function postinstall_lilypond
	StrCpy $0 "$INSTDIR\usr\bin\variables.sh"
	${SubstituteAtVariables} "$0.in" "$0"

	# use console version for gui too
	StrCpy $0 "$INSTDIR\usr\bin\lilypond"
	ClearErrors
	ReadRegStr $R0 HKLM \
		"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
	IfErrors dos exit
dos:
	CopyFiles /silent "$0-windows.exe" "$0-windows-orig.exe"
	CopyFiles /silent "$0.exe" "$0-windows.exe"
	StrCpy $0 "$INSTDIR\usr\bin\lilypond-windows.bat"
	${SubstituteAtVariables} "$0.in" "$0"

exit:	
FunctionEnd


Function registry_guile
	ReadRegStr $R0 HKLM "${ENVIRON}" "PATHEXT"
 	${StrLoc} $0 $R0 ".SCM;" >
	StrCmp $0 "" 0 scm_done
	WriteRegStr HKLM "${ENVIRON}" "PATHEXT" ".SCM;$R0"

scm_done:
	WriteRegStr HKCR ".scm" "" "GUILE"
	WriteRegStr HKCR ".scm" "GUILE" "GUILE"
	WriteRegStr HKCR ".scm" "Content Type" "text/x-guile"

	ReadRegStr $R0 HKCR "GUILE\shell\open\command" ""
	;;StrCmp $R0 "" 0 exit
	WriteRegStr HKCR "GUILE\shell" "" "open"
	WriteRegExpandStr HKCR "GUILE\shell\open\command" "" '"$INSTDIR\usr\bin\guile.exe" -s "%1"'
exit:
FunctionEnd

Function registry_python
	ReadRegStr $R0 HKLM "${ENVIRON}" "PATHEXT"
 	${StrLoc} $0 $R0 ".PY;" >
	StrCmp $0 "" 0 py_done
	WriteRegStr HKLM "${ENVIRON}" "PATHEXT" ".PY;$R0"

py_done:
	WriteRegStr HKCR ".py" "" "Python"
	WriteRegStr HKCR ".py" "Python" "Python"
	WriteRegStr HKCR ".py" "Content Type" "text/x-python"

;;py_open:
	ReadRegStr $R0 HKCR "Python\shell\open\command" ""
	;;StrCmp $R0 "" 0 py_auto_file
	WriteRegStr HKCR "Python\shell" "" "open"
	# %1 is the PYTHON command, other arguments may contain
	# filenames, so we quote them all to account for spaces
	WriteRegExpandStr HKCR "Python\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"'

;;py_auto_file:
	ReadRegStr $R0 HKCR "py_auto_file\shell\open\command" ""
	;;StrCmp $R0 "" 0 py_end
	WriteRegStr HKCR "py_auto_file\shell" "" "open"
	# %1 is the PYTHON command, other arguments may contain
	# filenames, so we quote them all to account for spaces
	WriteRegExpandStr HKCR "py_auto_file\shell\open\command" "" '"$INSTDIR\usr\bin\python.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" "%8" "%9"'
;;py_end:	
FunctionEnd


Function find_editor
	StrCpy $R0 "$WINDIR\emacs.exe"
	ifFileExists $R0 exit
	StrCpy $R0 $WINDIR\jedit.bat
	ifFileExists $R0 0 lilypad
	StrCpy $R0 "$R0 %(file)s +line:%(line)s"
lilypad:
	StrCpy $R0 "$INSTDIR\usr\bin\lilypad.exe"
	ifFileExists $R0 exit
	StrCpy $R0 "$WINDIR\wordpad.exe"
	ifFileExists $R0 exit
	StrCpy $R0 "$WINDIR\NOTEPAD.EXE"
exit:
	StrCpy $EDITOR "$R0" 0 0 
FunctionEnd