micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1 | ; $Id: mingw-ncurses.nsi,v 1.645 2024/04/27 13:56:53 tom Exp $
|
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 2 |
|
| 3 | ; TODO add examples
|
| 4 | ; TODO bump ABI to 6
|
| 5 |
|
| 6 | ; Define the application name
|
| 7 | !define APPNAME "ncurses"
|
| 8 | !define EXENAME "ncurses.exe"
|
| 9 |
|
| 10 | !define VERSION_MAJOR "6"
|
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 11 | !define VERSION_MINOR "5"
|
| 12 | !define VERSION_YYYY "2024"
|
| 13 | !define VERSION_MMDD "0427"
|
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 14 | !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
|
| 15 |
|
| 16 | !define MY_ABI "5"
|
| 17 | !define MY_MODEL "w"
|
| 18 |
|
| 19 | !define SUBKEY "ncurses"
|
| 20 |
|
| 21 | !define INSTALL "${APPNAME} (Console)"
|
| 22 | !define VERSION ${VERSION_MAJOR}.${VERSION_MINOR}
|
| 23 | !define VERSION_FULL ${VERSION}-${VERSION_PATCH}
|
| 24 |
|
| 25 | ; Main Install settings
|
| 26 | Name "${INSTALL}"
|
| 27 | InstallDir "c:\mingw"
|
| 28 | InstallDirRegKey HKLM "Software\${SUBKEY}" "$INSTDIR\bin"
|
| 29 | OutFile "NSIS-Output\${APPNAME}-${VERSION_FULL}-setup.exe"
|
| 30 |
|
| 31 | CRCCheck on
|
| 32 | SetCompressor /SOLID lzma
|
| 33 |
|
| 34 | VIAddVersionKey ProductName "${SUBKEY}"
|
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 35 | VIAddVersionKey CompanyName "https://invisible-island.net"
|
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 36 | VIAddVersionKey FileDescription "NCurses Installer (MinGW)"
|
| 37 | VIAddVersionKey FileVersion ${VERSION_FULL}
|
| 38 | VIAddVersionKey ProductVersion ${VERSION_FULL}
|
| 39 | VIAddVersionKey Comments "This installer was built with NSIS and cross-compiling to MinGW."
|
| 40 | VIAddVersionKey InternalName "${APPNAME}-${VERSION_FULL}-setup.exe"
|
| 41 | ; This is a dotted set of numbers limited to 16-bits each
|
| 42 | VIProductVersion "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_YYYY}.${VERSION_MMDD}"
|
| 43 |
|
| 44 | ; Modern interface settings
|
| 45 | !include "MUI.nsh"
|
| 46 |
|
| 47 | !define MUI_ABORTWARNING
|
| 48 | ;!define MUI_FINISHPAGE_RUN
|
| 49 | ;"$INSTDIR\bin\${EXENAME}"
|
| 50 |
|
| 51 | !insertmacro MUI_PAGE_WELCOME
|
| 52 | !insertmacro MUI_PAGE_LICENSE "..\COPYING"
|
| 53 | !insertmacro MUI_PAGE_COMPONENTS
|
| 54 | !insertmacro MUI_PAGE_DIRECTORY
|
| 55 | !insertmacro MUI_PAGE_INSTFILES
|
| 56 | !insertmacro MUI_PAGE_FINISH
|
| 57 |
|
| 58 | !insertmacro MUI_UNPAGE_CONFIRM
|
| 59 | !insertmacro MUI_UNPAGE_INSTFILES
|
| 60 |
|
| 61 | ; Set languages (first is default language)
|
| 62 | !insertmacro MUI_LANGUAGE "English"
|
| 63 | !insertmacro MUI_RESERVEFILE_LANGDLL
|
| 64 |
|
| 65 | InstType "Full" ; SectionIn 1
|
| 66 | InstType "Typical" ; SectionIn 2
|
| 67 | InstType "Minimal" ; SectionIn 3
|
| 68 |
|
| 69 | Section "${APPNAME}" Section1
|
| 70 |
|
| 71 | SectionIn 1 2 3
|
| 72 |
|
| 73 | ; Set Section properties
|
| 74 | SetOverwrite on
|
| 75 |
|
| 76 | ; Set Section Files and Shortcuts
|
| 77 | SetOutPath "$INSTDIR\bin"
|
| 78 |
|
| 79 | File ".\bin\*.dll"
|
| 80 |
|
| 81 | SetOutPath "$INSTDIR\share\${APPNAME}"
|
| 82 | File /oname=README.txt "..\README"
|
| 83 | File /oname=README-mingw.txt "..\README.mingw"
|
| 84 |
|
| 85 | CreateDirectory "$SMPROGRAMS\${INSTALL}"
|
| 86 | CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk" "$INSTDIR\bin\${EXENAME}"
|
| 87 | CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe"
|
| 88 |
|
| 89 | SectionEnd
|
| 90 |
|
| 91 | Section "development" Section2
|
| 92 |
|
| 93 | SectionIn 1 2
|
| 94 |
|
| 95 | ; Set Section properties
|
| 96 | SetOverwrite on
|
| 97 |
|
| 98 | ; Set Section Files and Shortcuts
|
| 99 | SetOutPath "$INSTDIR\share\${APPNAME}"
|
| 100 |
|
| 101 | SetOutPath "$INSTDIR\include\${APPNAME}${MY_MODEL}"
|
| 102 |
|
| 103 | File ".\include\${APPNAME}${MY_MODEL}\*.h"
|
| 104 |
|
| 105 | SetOutPath "$INSTDIR\lib"
|
| 106 |
|
| 107 | File ".\lib\*.a"
|
| 108 |
|
| 109 | SectionEnd
|
| 110 |
|
| 111 | Section "examples" Section3
|
| 112 |
|
| 113 | SectionIn 1
|
| 114 |
|
| 115 | ; Set Section properties
|
| 116 | SetOverwrite on
|
| 117 |
|
| 118 | ; Set Section Files and Shortcuts
|
| 119 | SetOutPath "$INSTDIR\lib\${APPNAME}"
|
| 120 |
|
| 121 | SectionEnd
|
| 122 |
|
| 123 | Section -FinishSection
|
| 124 |
|
| 125 | WriteRegStr HKLM "Software\${SUBKEY}" "" "$INSTDIR"
|
| 126 | WriteRegStr HKLM "Software\${SUBKEY}" "Environment" ""
|
| 127 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "DisplayName" "${APPNAME} ${VERSION_FULL} (Console)"
|
| 128 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "UninstallString" "$INSTDIR\uninstall.exe"
|
| 129 | WriteUninstaller "$INSTDIR\uninstall.exe"
|
| 130 |
|
| 131 | SectionEnd
|
| 132 |
|
| 133 | ; Modern install component descriptions
|
| 134 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
| 135 | !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "${SUBKEY} runtime"
|
| 136 | !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Development headers and libraries"
|
| 137 | !insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Examples"
|
| 138 | !insertmacro MUI_FUNCTION_DESCRIPTION_END
|
| 139 |
|
| 140 | ;Uninstall section
|
| 141 | Section Uninstall
|
| 142 |
|
| 143 | ;Remove from registry...
|
| 144 | DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}"
|
| 145 | DeleteRegKey HKLM "SOFTWARE\${SUBKEY}"
|
| 146 |
|
| 147 | ; Delete self
|
| 148 | Delete "$INSTDIR\uninstall.exe"
|
| 149 |
|
| 150 | ; Delete Shortcuts
|
| 151 | Delete "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk"
|
| 152 | Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk"
|
| 153 |
|
| 154 | ; Clean up application
|
| 155 | Delete "$INSTDIR\bin\libform${MY_MODEL}${MY_ABI}.dll"
|
| 156 | Delete "$INSTDIR\bin\libmenu${MY_MODEL}${MY_ABI}.dll"
|
| 157 | Delete "$INSTDIR\bin\libncurses++${MY_MODEL}${MY_ABI}.dll"
|
| 158 | Delete "$INSTDIR\bin\libncurses${MY_MODEL}${MY_ABI}.dll"
|
| 159 | Delete "$INSTDIR\bin\libpanel${MY_MODEL}${MY_ABI}.dll"
|
| 160 |
|
| 161 | Delete "$INSTDIR\include\${APPNAME}${MY_MODEL}\*.h"
|
| 162 |
|
| 163 | Delete "$INSTDIR\lib\libform${MY_MODEL}.a"
|
| 164 | Delete "$INSTDIR\lib\libmenu${MY_MODEL}.a"
|
| 165 | Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.a"
|
| 166 | Delete "$INSTDIR\lib\libncurses${MY_MODEL}.a"
|
| 167 | Delete "$INSTDIR\lib\libpanel${MY_MODEL}.a"
|
| 168 |
|
| 169 | Delete "$INSTDIR\lib\libform${MY_MODEL}.dll.a"
|
| 170 | Delete "$INSTDIR\lib\libmenu${MY_MODEL}.dll.a"
|
| 171 | Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.dll.a"
|
| 172 | Delete "$INSTDIR\lib\libncurses${MY_MODEL}.dll.a"
|
| 173 | Delete "$INSTDIR\lib\libpanel${MY_MODEL}.dll.a"
|
| 174 |
|
| 175 | Delete "$INSTDIR\lib\${APPNAME}\*.exe"
|
| 176 |
|
| 177 | Delete "$INSTDIR\share\${APPNAME}\*.*"
|
| 178 |
|
| 179 | ; Remove remaining directories
|
| 180 | RMDir "$SMPROGRAMS\${INSTALL}"
|
| 181 | RMDir "$INSTDIR\share\${APPNAME}"
|
| 182 | RMDir "$INSTDIR\share"
|
| 183 | RMDir "$INSTDIR\lib\${APPNAME}"
|
| 184 | RMDir "$INSTDIR\lib"
|
| 185 | RMDir "$INSTDIR\include\${APPNAME}${MY_MODEL}"
|
| 186 | RMDir "$INSTDIR\include"
|
| 187 | RMDir "$INSTDIR\bin"
|
| 188 | RMDir "$INSTDIR\"
|
| 189 |
|
| 190 | SectionEnd |