Skip to content

Commit 0b3f42b

Browse files
committed
move to msys2
1 parent 2a4ea7b commit 0b3f42b

1 file changed

Lines changed: 36 additions & 28 deletions

File tree

nsis/devkitPro.nsi

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ SetCompressor /SOLID lzma
3434
!include "StrFunc.nsh"
3535
!include "InstallOptions.nsh"
3636
!include "ReplaceInFile.nsh"
37-
!include NTProfiles.nsh
37+
!include "NTProfiles.nsh"
3838

3939
;${StrTok}
4040
${StrRep}
@@ -485,34 +485,49 @@ install_Msys:
485485
push $MSYS2
486486
call RemoveFile
487487

488-
SkipMsys:
489488

490-
!insertmacro _ReplaceInFile "$INSTDIR\msys2\etc\fstab" "{DEVKITPRO}" "$INSTDIR"
489+
!insertmacro _ReplaceInFile "$INSTDIR\msys2\etc\fstab" "#{DEVKITPRO}" "$INSTDIR"
491490

492491
${ProfilesPath} $0
493-
!insertmacro _ReplaceInFile "$INSTDIR\msys2\etc\fstab" "{PROFILES_ROOT}" "$0"
492+
!insertmacro _ReplaceInFile "$INSTDIR\msys2\etc\fstab" "#{PROFILES_ROOT}" "$0"
493+
494+
ExecWait '"$INSTDIR\msys2\usr\bin\bash.exe" --login -c exit'
495+
496+
; Reset msys path to start of path
497+
ReadRegStr $1 HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "PATH"
498+
; remove it to avoid multiple paths with separate installs
499+
${StrRep} $2 $1 "$INSTDIR\msys\bin;" ""
500+
${StrRep} $2 $2 "$INSTDIR\msys2\usr\bin;" ""
501+
StrCmp $2 "" 0 WritePath
502+
503+
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Trying to set path to blank string!$\nPlease add $INSTDIR\msys2\usr\bin; to the start of your path"
504+
goto AbortPath
505+
506+
WritePath:
507+
StrCpy $2 "$INSTDIR\msys2\usr\bin;$2"
508+
WriteRegExpandStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "PATH" $2
509+
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
510+
AbortPath:
494511

512+
SkipMsys:
495513

496514
push ${SecdkARM}
497515
push "DEVKITARM"
498516
push $DEVKITARM
499-
push "$BASEDIR/devkitARM"
500517
push "devkitARM"
501518
push $DEVKITARM_VER
502519
call ExtractToolChain
503520

504521
push ${devkitPPC}
505522
push "DEVKITPPC"
506523
push $DEVKITPPC
507-
push "$BASEDIR/devkitPPC"
508524
push "devkitPPC"
509525
push $DEVKITPPC_VER
510526
call ExtractToolChain
511527

512528
push ${devkitA64}
513529
push ""
514530
push $DEVKITA64
515-
push "$BASEDIR/devkitA64"
516531
push "devkitA64"
517532
push $DEVKITA64_VER
518533
call ExtractToolChain
@@ -698,24 +713,31 @@ skip_copy:
698713
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
699714
SetShellVarContext all ; Put stuff in All Users
700715
SetOutPath $INSTDIR
701-
IntCmp $Updating 1 CheckPN2
716+
717+
IntCmp $Updating 1 CheckMsys2
702718

703719
WriteIniStr "$INSTDIR\devkitPro.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
704720
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
705721
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\devkitpro.lnk" "$INSTDIR\devkitPro.url"
706722
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
707723

708-
SetOutPath $INSTDIR\msys2
709-
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MSys.lnk" "$INSTDIR\msys2\msys2_shell.cmd" "" "$INSTDIR\msys2\msys2.ico"
724+
CheckMsys2:
725+
!insertmacro SectionFlagIsSet ${SecMsys} ${SF_SELECTED} +1 CheckPN2
726+
727+
SetOutPath "$INSTDIR\msys2"
728+
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MSys2.lnk" "$INSTDIR\msys2\msys2_shell.bat" "" "$INSTDIR\msys2\msys2.ico"
710729

711730
CheckPN2:
712731
!insertmacro SectionFlagIsSet ${Pnotepad} ${SF_SELECTED} +1 SkipPN2Menu
732+
713733
SetOutPath "$INSTDIR\Programmers Notepad"
714734
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Programmers Notepad.lnk" "$INSTDIR\Programmers Notepad\pn.exe"
735+
715736
SkipPN2Menu:
716737
SetOutPath $INSTDIR
717738
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Update.lnk" "$INSTDIR\$R1"
718739
!insertmacro MUI_STARTMENU_WRITE_END
740+
719741
WriteUninstaller "$INSTDIR\uninst.exe"
720742
IntCmp $Updating 1 SkipInstall
721743

@@ -725,24 +747,9 @@ SkipPN2Menu:
725747
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
726748

727749
SkipInstall:
728-
WriteRegStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "DEVKITPRO" "$BASEDIR"
750+
WriteRegStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "DEVKITPRO" "/opt/devkitpro"
729751
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
730752

731-
; Reset msys path to start of path
732-
ReadRegStr $1 HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "PATH"
733-
; remove it to avoid multiple paths with separate installs
734-
${StrRep} $2 $1 "$INSTDIR\msys\bin;" ""
735-
${StrRep} $2 $2 "$INSTDIR\msys2\usr\bin;" ""
736-
StrCmp $2 "" 0 WritePath
737-
738-
MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Trying to set path to blank string!$\nPlease add $INSTDIR\msys\bin; to the start of your path"
739-
goto AbortPath
740-
741-
WritePath:
742-
StrCpy $2 "$INSTDIR\msys2\usr\bin;$2"
743-
WriteRegExpandStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" "PATH" $2
744-
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
745-
AbortPath:
746753
; write the version to the reg key so add/remove prograns has the right one
747754
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
748755
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
@@ -1403,12 +1410,13 @@ FunctionEnd
14031410
var LIB
14041411
var FOLDER
14051412

1413+
1414+
14061415
;-----------------------------------------------------------------------------------------------------------------------
14071416
Function ExtractToolChain
14081417
;-----------------------------------------------------------------------------------------------------------------------
14091418
pop $R5 ; version
14101419
pop $R4 ; section name
1411-
pop $R3 ; path
14121420
pop $R2 ; 7zip
14131421
pop $R1 ; env variable
14141422
pop $R0 ; section flags
@@ -1425,7 +1433,7 @@ Function ExtractToolChain
14251433

14261434
StrCmp $R1 "" NoEnvVar 0
14271435

1428-
WriteRegStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" $R1 $R3
1436+
WriteRegStr HKLM "System\CurrentControlSet\Control\Session Manager\Environment" $R1 "/opt/devkitpro/$R4"
14291437
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
14301438

14311439
NoEnvVar:

0 commit comments

Comments
 (0)