; $Id: mingw-ncurses.nsi,v 1.559 2022/12/29 20:15:31 tom Exp $ ; TODO add examples ; TODO bump ABI to 6 ; Define the application name !define APPNAME "ncurses" !define EXENAME "ncurses.exe" !define VERSION_MAJOR "6" !define VERSION_MINOR "4" !define VERSION_YYYY "2022" !define VERSION_MMDD "1231" !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} !define MY_ABI "5" !define MY_MODEL "w" !define SUBKEY "ncurses" !define INSTALL "${APPNAME} (Console)" !define VERSION ${VERSION_MAJOR}.${VERSION_MINOR} !define VERSION_FULL ${VERSION}-${VERSION_PATCH} ; Main Install settings Name "${INSTALL}" InstallDir "c:\mingw" InstallDirRegKey HKLM "Software\${SUBKEY}" "$INSTDIR\bin" OutFile "NSIS-Output\${APPNAME}-${VERSION_FULL}-setup.exe" CRCCheck on SetCompressor /SOLID lzma VIAddVersionKey ProductName "${SUBKEY}" VIAddVersionKey CompanyName "https://invisible-island.net" VIAddVersionKey FileDescription "NCurses Installer (MinGW)" VIAddVersionKey FileVersion ${VERSION_FULL} VIAddVersionKey ProductVersion ${VERSION_FULL} VIAddVersionKey Comments "This installer was built with NSIS and cross-compiling to MinGW." VIAddVersionKey InternalName "${APPNAME}-${VERSION_FULL}-setup.exe" ; This is a dotted set of numbers limited to 16-bits each VIProductVersion "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_YYYY}.${VERSION_MMDD}" ; Modern interface settings !include "MUI.nsh" !define MUI_ABORTWARNING ;!define MUI_FINISHPAGE_RUN ;"$INSTDIR\bin\${EXENAME}" !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "..\COPYING" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ; Set languages (first is default language) !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_RESERVEFILE_LANGDLL InstType "Full" ; SectionIn 1 InstType "Typical" ; SectionIn 2 InstType "Minimal" ; SectionIn 3 Section "${APPNAME}" Section1 SectionIn 1 2 3 ; Set Section properties SetOverwrite on ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\bin" File ".\bin\*.dll" SetOutPath "$INSTDIR\share\${APPNAME}" File /oname=README.txt "..\README" File /oname=README-mingw.txt "..\README.mingw" CreateDirectory "$SMPROGRAMS\${INSTALL}" CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk" "$INSTDIR\bin\${EXENAME}" CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe" SectionEnd Section "development" Section2 SectionIn 1 2 ; Set Section properties SetOverwrite on ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\share\${APPNAME}" SetOutPath "$INSTDIR\include\${APPNAME}${MY_MODEL}" File ".\include\${APPNAME}${MY_MODEL}\*.h" SetOutPath "$INSTDIR\lib" File ".\lib\*.a" SectionEnd Section "examples" Section3 SectionIn 1 ; Set Section properties SetOverwrite on ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\lib\${APPNAME}" SectionEnd Section -FinishSection WriteRegStr HKLM "Software\${SUBKEY}" "" "$INSTDIR" WriteRegStr HKLM "Software\${SUBKEY}" "Environment" "" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "DisplayName" "${APPNAME} ${VERSION_FULL} (Console)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "UninstallString" "$INSTDIR\uninstall.exe" WriteUninstaller "$INSTDIR\uninstall.exe" SectionEnd ; Modern install component descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "${SUBKEY} runtime" !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Development headers and libraries" !insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Examples" !insertmacro MUI_FUNCTION_DESCRIPTION_END ;Uninstall section Section Uninstall ;Remove from registry... DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" DeleteRegKey HKLM "SOFTWARE\${SUBKEY}" ; Delete self Delete "$INSTDIR\uninstall.exe" ; Delete Shortcuts Delete "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk" Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" ; Clean up application Delete "$INSTDIR\bin\libform${MY_MODEL}${MY_ABI}.dll" Delete "$INSTDIR\bin\libmenu${MY_MODEL}${MY_ABI}.dll" Delete "$INSTDIR\bin\libncurses++${MY_MODEL}${MY_ABI}.dll" Delete "$INSTDIR\bin\libncurses${MY_MODEL}${MY_ABI}.dll" Delete "$INSTDIR\bin\libpanel${MY_MODEL}${MY_ABI}.dll" Delete "$INSTDIR\include\${APPNAME}${MY_MODEL}\*.h" Delete "$INSTDIR\lib\libform${MY_MODEL}.a" Delete "$INSTDIR\lib\libmenu${MY_MODEL}.a" Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.a" Delete "$INSTDIR\lib\libncurses${MY_MODEL}.a" Delete "$INSTDIR\lib\libpanel${MY_MODEL}.a" Delete "$INSTDIR\lib\libform${MY_MODEL}.dll.a" Delete "$INSTDIR\lib\libmenu${MY_MODEL}.dll.a" Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.dll.a" Delete "$INSTDIR\lib\libncurses${MY_MODEL}.dll.a" Delete "$INSTDIR\lib\libpanel${MY_MODEL}.dll.a" Delete "$INSTDIR\lib\${APPNAME}\*.exe" Delete "$INSTDIR\share\${APPNAME}\*.*" ; Remove remaining directories RMDir "$SMPROGRAMS\${INSTALL}" RMDir "$INSTDIR\share\${APPNAME}" RMDir "$INSTDIR\share" RMDir "$INSTDIR\lib\${APPNAME}" RMDir "$INSTDIR\lib" RMDir "$INSTDIR\include\${APPNAME}${MY_MODEL}" RMDir "$INSTDIR\include" RMDir "$INSTDIR\bin" RMDir "$INSTDIR\" SectionEnd