File 4792-win32-Use-OTP-version-as-default-install-path.patch of Package erlang

From d9d894a28f9c3e4d068f3d176024abae3f2990d7 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Thu, 20 Feb 2020 12:09:57 +0100
Subject: [PATCH 2/2] win32: Use OTP-version as default install path

Use OTP release version as install path to easier see which release is
installed. erts-version doesn't always step it's first version number.
Which might cause confusion with which OTP release is installed.

Also remove support for old nsis version.
---
 erts/etc/win32/nsis/Makefile     |  11 +-
 erts/etc/win32/nsis/erlang.nsi   | 386 ---------------------------------------
 erts/etc/win32/nsis/erlang20.nsi |   4 +-
 3 files changed, 4 insertions(+), 397 deletions(-)
 delete mode 100644 erts/etc/win32/nsis/erlang.nsi

diff --git a/erts/etc/win32/nsis/Makefile b/erts/etc/win32/nsis/Makefile
index 4c5e5325b3..6273181a9d 100644
--- a/erts/etc/win32/nsis/Makefile
+++ b/erts/etc/win32/nsis/Makefile
@@ -72,17 +72,10 @@ release_spec:
 	@NSIS_VER=`makensis.exe -version`; \
 	case $$NSIS_VER in \
 	v2.0b*) \
-	  echo '!define MUI_VERSION "$(SYSTEM_VSN)"' > $(VERSION_HEADER);\
-	  echo '!define ERTS_VERSION "$(VSN)"' >> $(VERSION_HEADER);\
-	  echo '!define TESTROOT "$(WTESTROOT)"' >> $(VERSION_HEADER);\
-	  echo '!define OUTFILEDIR "$(WTARGET_DIR)"' >> $(VERSION_HEADER);\
-	  if [ -f "$(RELEASE_PATH)/docs/doc/index.html" ];\
-	  then\
-		echo '!define HAVE_DOCS 1' >> $(VERSION_HEADER); \
-	  fi;\
-	  $(MAKENSIS) erlang.nsi;;\
+	  echo "Unsupported NSIS version: $$NSIS_VER";;\
 	v2.* | v3.*) \
 	  echo '!define OTP_VERSION "$(SYSTEM_VSN)"' > $(VERSION_HEADER);\
+	  echo '!define OTP_RELEASE_VERSION "$(OTP_VERSION)"' >> $(VERSION_HEADER);\
 	  echo '!define ERTS_VERSION "$(VSN)"' >> $(VERSION_HEADER);\
 	  echo '!define TESTROOT "$(WTESTROOT)"' >> $(VERSION_HEADER);\
 	  echo '!define OUTFILEDIR "$(WTARGET_DIR)"' >> $(VERSION_HEADER);\
diff --git a/erts/etc/win32/nsis/erlang.nsi b/erts/etc/win32/nsis/erlang.nsi
deleted file mode 100644
index f4fd2b4cdb..0000000000
--- a/erts/etc/win32/nsis/erlang.nsi
+++ /dev/null
@@ -1,386 +0,0 @@
-; NSIS Modern User Interface version 1.63
-; Erlang OTP installation script based on "Start Menu Folder Selection 
-; Example Script"
-; Original example written by Joost Verburg
-; Modified for Erlang by Patrik
-
-; Verbosity does not come naturally with MUI, have to set it back now and then.
-	!verbose 1
-	!define MUI_MANUALVERBOSE 1
-
-	!define MUI_PRODUCT "Erlang OTP"
-
-	!include "erlang.nsh" ; All release specific parameters come from this
-
-
-	!include "MUI.nsh"
-
-;--------------------------------
-;Configuration
-
-	;SetCompressor bzip2
-
-;General
-	OutFile "${OUTFILEDIR}\otp_win32_${MUI_VERSION}.exe"
-
-;Folder selection page
-  	InstallDir "$PROGRAMFILES\erl${ERTS_VERSION}"
-  
-;Remember install folder
-  	InstallDirRegKey HKLM "SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}" ""
-  
-;$9 is being used to store the Start Menu Folder.
-;Do not use this variable in your script (or Push/Pop it)!
-
-;To change this variable, use MUI_STARTMENUPAGE_VARIABLE.
-;Have a look at the Readme for info about other options (default folder,
-;registry).
-
-; Set the default start menu folder
-
-	!define MUI_STARTMENUPAGE_DEFAULTFOLDER "${MUI_PRODUCT} ${MUI_VERSION}"
-
-; Registry keys where start menu folder is stored
-  	!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" 
-  	!define MUI_STARTMENUPAGE_REGISTRY_KEY \
-		"SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}"
-  	!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
-
-; Temporary variable used here and there...
-  	!define TEMP $R0
-  
-;--------------------------------
-;Modern UI Configuration
-  	!define MUI_ICON "erlang_inst.ico"
-  	!define MUI_UNICON "erlang_uninst.ico"
-	!define MUI_WELCOMEPAGE
-  	!define MUI_COMPONENTSPAGE
-  	!define MUI_DIRECTORYPAGE
-  	!define MUI_STARTMENUPAGE
-  
-  	!define MUI_ABORTWARNING
-  
-  	!define MUI_UNINSTALLER
-  	!define MUI_UNCONFIRMPAGE
-
-;--------------------------------
-;Languages
- 
-  	!insertmacro MUI_LANGUAGE "English"
-  
-;--------------------------------
-;Language Strings
-
-;Description
-  	LangString DESC_SecErlang ${LANG_ENGLISH} "Erlang OTP."
-  	LangString DESC_SecErlangDev ${LANG_ENGLISH} \
-		"Erlang OTP development environment (required)."
-  	LangString DESC_SecErlangAssoc ${LANG_ENGLISH} \
-		"Erlang filetype associations (.erl, .hrl, .beam)."
-!ifdef HAVE_DOCS
-  	LangString DESC_SecErlangDoc ${LANG_ENGLISH} "Documentation."
-!endif
-;--------------------------------
-;Installer Sections
-
-SubSection /e "Erlang" SecErlang
-Section "Development" SecErlangDev
-SectionIn 1 RO
-
-  	StrCmp ${MUI_STARTMENUPAGE_VARIABLE} "" 0 skip_silent_mode
-	StrCpy ${MUI_STARTMENUPAGE_VARIABLE} \
-		"${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
-skip_silent_mode:
-
-  	SetOutPath "$INSTDIR"
-  	File "${TESTROOT}\Install.ini"
-  	File "${TESTROOT}\Install.exe"
-  	File /r "${TESTROOT}\releases"
-  	File /r "${TESTROOT}\lib"
-  	File /r "${TESTROOT}\erts-${ERTS_VERSION}"
-  	File /r "${TESTROOT}\usr"
-  
-;Store install folder
-  	WriteRegStr HKLM "SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}" "" $INSTDIR
-
-; Run the setup program  
-  	ExecWait '"$INSTDIR\Install.exe" -s'
-
-; The startmenu stuff
-  	!insertmacro MUI_STARTMENU_WRITE_BEGIN
-; Set back verbosity...
-  	!verbose 1
-; Try to use the Common startmenu...
-  	SetShellVarContext All
-  	ClearErrors
-  	CreateDirectory "$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}"
-  	IfErrors 0 continue_create
-    	;MessageBox MB_OK "Error creating file"
-    	SetShellVarContext current
-    	CreateDirectory "$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}"
-continue_create:
-  	WriteUninstaller "$INSTDIR\Uninstall.exe"
-  	CreateShortCut "$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}\Erlang.lnk" \
-		"$INSTDIR\bin\werl.exe"
-  	CreateShortCut \
-		"$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}\Uninstall.lnk" \
-		"$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 
-  
-  	!insertmacro MUI_STARTMENU_WRITE_END
-; And once again, the verbosity...
-  	!verbose 1
-;Create uninstaller
-;  	WriteUninstaller "$INSTDIR\Uninstall.exe"
-
-  	WriteRegStr HKLM \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"DisplayName" "Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})"
-  	WriteRegStr HKLM \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"UninstallString" "$INSTDIR\Uninstall.exe"
-  	WriteRegDWORD HKLM \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"NoModify" 1
-  	WriteRegDWORD HKLM \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"NoRepair" 1
-
-; Check that the registry could be written, we only check one key,
-; but it should be sufficient...
-  	ReadRegStr ${TEMP} "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_KEY}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
-
-  	StrCmp ${TEMP} "" 0 done
-
-; Now we're done if we are a superuser. If the registry stuff failed, we 
-; do the things below...
-
-  	WriteRegStr HKCU "Software\Ericsson\Erlang\${ERTS_VERSION}" \
-		"" $INSTDIR
-  	WriteRegStr HKCU "${MUI_STARTMENUPAGE_REGISTRY_KEY}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}" \
-		"${MUI_STARTMENUPAGE_VARIABLE}"
-  	WriteRegStr HKCU \
-		"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"DisplayName" "Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})"
-  	WriteRegStr HKCU \
-		"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"UninstallString" "$INSTDIR\Uninstall.exe"
-  	WriteRegDWORD HKCU \
-		"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"NoModify" 1
-  	WriteRegDWORD HKCU \
-		"Software\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})" \
-		"NoRepair" 1
-
-done:
-SectionEnd ; SecErlangDev
-
-Section "Associations" SecErlangAssoc
-
-  	;File /r "${TESTROOT}\usr\lib\icons"
-
-; .erl
-  	; back up old value of .erl
-  	ReadRegStr $1 HKCR ".erl" ""
-  	StrCmp $1 "" OwnErl
-    	StrCmp $1 "ErlangSource" OwnErl
-    	WriteRegStr HKCR ".erl" "backup_val" $1
-OwnErl:
-  	WriteRegStr HKCR ".erl" "" "ErlangSource"
-  	ReadRegStr $0 HKCR "ErlangSource" ""
-  	StrCmp $0 "" 0 skipErlAssoc
-	WriteRegStr HKCR "ErlangSource" "" "Erlang source file"
-	WriteRegStr HKCR "ErlangSource\shell" "" "open"
-	WriteRegStr HKCR "ErlangSource\shell\compile" "" "Compile"
-	WriteRegStr HKCR "ErlangSource\shell\compile\command" "" \
-		'"$INSTDIR\bin\erlc.exe" "%1"'
-	WriteRegStr HKCR "ErlangSource\DefaultIcon" "" \
-		$INSTDIR\usr\lib\icons\erl_icon.ico
-  	WriteRegStr HKCR "ErlangSource\shell\open\command" \
-		"" 'write.exe "%1"'
-skipErlAssoc:
-
-; .hrl
-  	; back up old value of .hrl
-  	ReadRegStr $1 HKCR ".hrl" ""
-  	StrCmp $1 "" OwnHrl
-    	StrCmp $1 "ErlangHeader" OwnHrl
-    	WriteRegStr HKCR ".hrl" "backup_val" $1
-OwnHrl:
-  	WriteRegStr HKCR ".hrl" "" "ErlangHeader"
-  	ReadRegStr $0 HKCR "ErlangHeader" ""
-  	StrCmp $0 "" 0 skipHrlAssoc
-	WriteRegStr HKCR "ErlangHeader" "" "Erlang header file"
-	WriteRegStr HKCR "ErlangHeader\shell" "" "open"
-	WriteRegStr HKCR "ErlangHeader\DefaultIcon" "" \
-		$INSTDIR\usr\lib\icons\hrl_icon.ico
-  	WriteRegStr HKCR "ErlangHeader\shell\open\command" \
-		"" 'write.exe "%1"'
-skipHrlAssoc:
-
-; .beam
-  	; back up old value of .beam
-  	ReadRegStr $1 HKCR ".beam" ""
-  	StrCmp $1 "" OwnBeam
-    	StrCmp $1 "ErlangBeam" OwnBeam
-    	WriteRegStr HKCR ".beam" "backup_val" $1
-OwnBeam:
-  	WriteRegStr HKCR ".beam" "" "ErlangBeam"
-  	ReadRegStr $0 HKCR "ErlangBeam" ""
-  	StrCmp $0 "" 0 skipBeamAssoc
-	WriteRegStr HKCR "ErlangBeam" "" "Erlang beam code"
-	WriteRegStr HKCR "ErlangBeam\DefaultIcon" "" \
-		$INSTDIR\usr\lib\icons\beam_icon.ico
-skipBeamAssoc:
-
-SectionEnd ; SecErlangAssoc
-SubSectionEnd
-
-!ifdef HAVE_DOCS
-Section "Erlang Documentation" SecErlangDoc
-
-  	SetOutPath "$INSTDIR"
-  	File /r "${TESTROOT}\docs\*"
-  
-; The startmenu stuff
-  	!insertmacro MUI_STARTMENU_WRITE_BEGIN
-; Set back verbosity...
-  	!verbose 1
-; Try to use the Common startmenu...
-  	SetShellVarContext All
-  	ClearErrors
-  	CreateShortCut "$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}\Erlang Documentation.lnk" \
-		"$INSTDIR\doc\index.html"
-  	IfErrors 0 continue_create
-    	;MessageBox MB_OK "Error creating file"
-    	SetShellVarContext current
-  	CreateShortCut \
-		"$SMPROGRAMS\${MUI_STARTMENUPAGE_VARIABLE}\Erlang Documentation.lnk" \
-		"$INSTDIR\doc\index.html"
-continue_create:
-  
-  	!insertmacro MUI_STARTMENU_WRITE_END
-; And once again, the verbosity...
-  	!verbose 1
-SectionEnd ; ErlangDoc
-!endif
-
-
-;Display the Finish header
-;Insert this macro after the sections if you are not using a finish page
-	!insertmacro MUI_SECTIONS_FINISHHEADER
-
-;--------------------------------
-;Descriptions
-
-	!insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
-  	!insertmacro MUI_DESCRIPTION_TEXT ${SecErlang} $(DESC_SecErlang)
-  	!insertmacro MUI_DESCRIPTION_TEXT ${SecErlangDev} $(DESC_SecErlangDev)
-  	!insertmacro MUI_DESCRIPTION_TEXT ${SecErlangAssoc} \
-		$(DESC_SecErlangAssoc)
-!ifdef HAVE_DOCS
-  	!insertmacro MUI_DESCRIPTION_TEXT ${SecErlangDoc} $(DESC_SecErlangDoc)
-!endif
-	!insertmacro MUI_FUNCTIONS_DESCRIPTION_END
- 
-;--------------------------------
-;Uninstaller Section
-
-Section "Uninstall"
-
-  	RMDir /r "$INSTDIR"  
-  
-;Remove shortcut
-  	ReadRegStr ${TEMP} "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_KEY}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
-	StrCmp ${TEMP} "" 0 end_try
-; Try HKCU instead...
-  	ReadRegStr ${TEMP} HKCU \
-		"${MUI_STARTMENUPAGE_REGISTRY_KEY}" \
-		"${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
-; If this failed to, we have no shortcuts (eh?)
-  	StrCmp ${TEMP} "" noshortcuts
-end_try:
-  	SetShellVarContext All
-  	ClearErrors
-; If we cannot find the shortcut, switch to current user context
-  	GetFileTime "$SMPROGRAMS\${TEMP}\Erlang.lnk" $R1 $R2
-  	IfErrors 0 continue_delete
-    	;MessageBox MB_OK "Error removing file"
-    	SetShellVarContext current
-continue_delete:
-  	Delete "$SMPROGRAMS\${TEMP}\Erlang.lnk"
-  	Delete "$SMPROGRAMS\${TEMP}\Uninstall.lnk"
-  	Delete "$SMPROGRAMS\${TEMP}\Erlang Documentation.lnk"
-  	RMDir "$SMPROGRAMS\${TEMP}" ;Only if empty
-
-noshortcuts:
-; We delete both in HKCU and HKLM, we don't really know were they might be...
-  	DeleteRegKey /ifempty HKLM "SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}"
-  	DeleteRegKey /ifempty HKCU "SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}"
-  	DeleteRegKey HKLM \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})"
-  	DeleteRegKey HKCU \
-		"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Erlang OTP ${MUI_VERSION} (${ERTS_VERSION})"
-
-
-; Now remove shell/file associations we'we made...
-; .erl
-  	ReadRegStr $1 HKCR ".erl" ""
-  	StrCmp $1 "ErlangSource" 0 NoOwnSourceExt 
-    	ReadRegStr $1 HKCR ".erl" "backup_val"
-    	StrCmp $1 "" 0 RestoreBackupSource 
-      	DeleteRegKey HKCR ".erl"
-    	Goto NoOwnSourceExt
-RestoreBackupSource:
-      	WriteRegStr HKCR ".erl" "" $1
-      	DeleteRegValue HKCR ".erl" "backup_val"
-NoOwnSourceExt:
-	
-  	ReadRegStr $1 HKCR "ErlangSource\DefaultIcon" ""
-	StrCmp $1 "$INSTDIR\usr\lib\icons\erl_icon.ico" 0 NoOwnSource 
-  	DeleteRegKey HKCR "ErlangSource"
-NoOwnSource:
-
-;.hrl
-  	ReadRegStr $1 HKCR ".hrl" ""
-  	StrCmp $1 "ErlangHeader" 0 NoOwnHeaderExt 
-    	ReadRegStr $1 HKCR ".hrl" "backup_val"
-    	StrCmp $1 "" 0 RestoreBackupHeader 
-      	DeleteRegKey HKCR ".hrl"
-    	Goto NoOwnHeaderExt
-RestoreBackupHeader:
-      	WriteRegStr HKCR ".hrl" "" $1
-      	DeleteRegValue HKCR ".hrl" "backup_val"
-NoOwnHeaderExt:
-	
-  	ReadRegStr $1 HKCR "ErlangHeader\DefaultIcon" ""
-	StrCmp $1 "$INSTDIR\usr\lib\icons\hrl_icon.ico" 0 NoOwnHeader 
-  	DeleteRegKey HKCR "ErlangHeader"
-NoOwnHeader:
-
-;.beam
-  	ReadRegStr $1 HKCR ".beam" ""
-  	StrCmp $1 "ErlangBeam" 0 NoOwnBeamExt 
-    	ReadRegStr $1 HKCR ".beam" "backup_val"
-    	StrCmp $1 "" 0 RestoreBackupBeam 
-      	DeleteRegKey HKCR ".beam"
-    	Goto NoOwnBeamExt
-RestoreBackupBeam:
-      	WriteRegStr HKCR ".beam" "" $1
-      	DeleteRegValue HKCR ".beam" "backup_val"
-NoOwnBeamExt:
-	
-  	ReadRegStr $1 HKCR "ErlangBeam\DefaultIcon" ""
-	StrCmp $1 "$INSTDIR\usr\lib\icons\beam_icon.ico" 0 NoOwnBeam 
-  	DeleteRegKey HKCR "ErlangBeam"
-NoOwnBeam:
-
-;Display the Finish header
-  	!insertmacro MUI_UNFINISHHEADER
-
-SectionEnd
-	!verbose 3
diff --git a/erts/etc/win32/nsis/erlang20.nsi b/erts/etc/win32/nsis/erlang20.nsi
index 66746b684d..63e63a06cb 100644
--- a/erts/etc/win32/nsis/erlang20.nsi
+++ b/erts/etc/win32/nsis/erlang20.nsi
@@ -56,9 +56,9 @@ Var STARTMENU_FOLDER
 
 ;Folder selection page
 !if ${WINTYPE} == "win64"
-  	InstallDir "$PROGRAMFILES64\erl${ERTS_VERSION}"
+  	InstallDir "$PROGRAMFILES64\erl-${OTP_RELEASE_VERSION}"
 !else
-  	InstallDir "$PROGRAMFILES\erl${ERTS_VERSION}"
+  	InstallDir "$PROGRAMFILES\erl-${OTP_RELEASE_VERSION}"
 !endif  
 ;Remember install folder
   	InstallDirRegKey HKLM "SOFTWARE\Ericsson\Erlang\${ERTS_VERSION}" ""
-- 
2.16.4

openSUSE Build Service is sponsored by