patch 8.2.3214: MS-Windows: passing /D does not set the install location

Problem:    MS-Windows: passing /D does not set the install location.
Solution:   Adjust how the installer uses $VIM. Update the documentation.
            (Christian Brabandt, closes #8605)
This commit is contained in:
Christian Brabandt
2021-07-24 21:19:42 +02:00
committed by Bram Moolenaar
parent 9c9472ff49
commit 7d60384a00
3 changed files with 38 additions and 16 deletions

View File

@ -126,10 +126,11 @@ RequestExecutionLevel highest
# This adds '\Vim' to the user choice automagically. The actual value is
# obtained below with CheckOldVim.
!ifdef WIN64
InstallDir "$PROGRAMFILES64\Vim"
!define DEFAULT_INSTDIR "$PROGRAMFILES64\Vim"
!else
InstallDir "$PROGRAMFILES\Vim"
!define DEFAULT_INSTDIR "$PROGRAMFILES\Vim"
!endif
InstallDir ${DEFAULT_INSTDIR}
# Types of installs we can perform:
InstType $(str_type_typical)
@ -710,8 +711,13 @@ Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
!endif
# Check $VIM
ReadEnvStr $INSTDIR "VIM"
${If} $INSTDIR == ${DEFAULT_INSTDIR}
# Check $VIM
ReadEnvStr $3 "VIM"
${If} $3 != ""
StrCpy $INSTDIR $3
${EndIf}
${EndIf}
call CheckOldVim
Pop $3
@ -721,20 +727,11 @@ Function .onInit
SectionSetInstTypes ${id_section_old_ver} 0
SectionSetText ${id_section_old_ver} ""
${Else}
${If} $INSTDIR == ""
${If} $INSTDIR == ${DEFAULT_INSTDIR}
StrCpy $INSTDIR $3
${EndIf}
${EndIf}
# If did not find a path: use the default dir.
${If} $INSTDIR == ""
!ifdef WIN64
StrCpy $INSTDIR "$PROGRAMFILES64\Vim"
!else
StrCpy $INSTDIR "$PROGRAMFILES\Vim"
!endif
${EndIf}
${If} ${RunningX64}
SetRegView 64
${EndIf}