Some more IMG POI style tweaking
[GPXSee.git] / pkg / gpxsee.nsi
blob8ed7b0f5f5e9ec0afb1ecf72eb11463cdfce46bd
1 !include "MUI2.nsh"
2 !include "x64.nsh"
3 !include "WinVer.nsh"
4 !include "macros.nsh"
7 ; The name of the installer
8 Name "GPXSee"
9 ; Program version
10 !define VERSION "7.34"
12 ; The file to write
13 OutFile "GPXSee-${VERSION}.exe"
14 ; Compression method
15 SetCompressor /SOLID lzma
17 ; Required execution level
18 RequestExecutionLevel admin
20 ; The default installation directory
21 InstallDir "$PROGRAMFILES\GPXSee"
23 ; Installer executable info
24 VIProductVersion "${VERSION}.0.0"
25 VIAddVersionKey "ProductVersion" ${VERSION}
26 VIAddVersionKey "FileVersion" "${VERSION}.0.0"
27 VIAddVersionKey "ProductName" "GPXSee"
28 VIAddVersionKey "LegalCopyright" "GPXSee project"
29 VIAddVersionKey "FileDescription" "GPXSee installer"
31 ; Registry key to check for directory (so if you install again, it will
32 ; overwrite the old one automatically)
33 InstallDirRegKey HKLM "Software\GPXSee" "Install_Dir"
35 ; Registry key for uninstaller
36 !define REGENTRY "Software\Microsoft\Windows\CurrentVersion\Uninstall\GPXSee"
38 ; Start menu page configuration
39 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
40 !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\GPXSee"
41 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "GPXSee"
43 Var StartMenuFolder
45 ;--------------------------------
47 ; Pages
49 !insertmacro MUI_PAGE_WELCOME
50 !insertmacro MUI_PAGE_LICENSE "licence.txt"
51 !insertmacro MUI_PAGE_COMPONENTS
52 !insertmacro MUI_PAGE_DIRECTORY
53 !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
54 !insertmacro MUI_PAGE_INSTFILES
56 !insertmacro MUI_UNPAGE_CONFIRM
57 !insertmacro MUI_UNPAGE_INSTFILES
59 ;--------------------------------
61 ; Languages
62 !insertmacro MUI_LANGUAGE "English"
64 Function .onInit
65 ${IfNot} ${AtLeastWin7}
66 MessageBox MB_OK "GPXSee can only be installed on Windows 7 or later."
67 Abort
68 ${EndIf}
69 FunctionEnd
71 ; The stuff to install
72 Section "GPXSee" SEC_APP
74 SectionIn RO
76 ; Set output path to the installation directory
77 SetOutPath $INSTDIR
79 ; Put the files there
80 File "gpxsee.exe"
81 File /r "maps"
82 File /r "csv"
84 ; Create start menu entry and add links
85 SetShellVarContext all
86 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
87 CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
88 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
89 CreateShortCut "$SMPROGRAMS\$StartMenuFolder\GPXSee.lnk" "$INSTDIR\gpxsee.exe"
90 !insertmacro MUI_STARTMENU_WRITE_END
92 ; Create the uninstaller
93 WriteUninstaller "$INSTDIR\uninstall.exe"
95 ; Write the installation path into the registry
96 DetailPrint "Registering application..."
97 WriteRegStr HKLM SOFTWARE\GPXSee "Install_Dir" "$INSTDIR"
99 ; Write the uninstall keys for Windows
100 WriteRegStr HKLM "${REGENTRY}" "DisplayName" "GPXSee"
101 WriteRegStr HKLM "${REGENTRY}" "Publisher" "Martin Tuma"
102 WriteRegStr HKLM "${REGENTRY}" "DisplayVersion" "${VERSION}"
103 WriteRegStr HKLM "${REGENTRY}" "UninstallString" '"$INSTDIR\uninstall.exe"'
104 WriteRegDWORD HKLM "${REGENTRY}" "NoModify" 1
105 WriteRegDWORD HKLM "${REGENTRY}" "NoRepair" 1
107 ; Associate file formats
108 DetailPrint "Associating file types..."
109 !insertmacro FILE_ASSOCIATION_ADD "gpx" "GPS Exchange Format" 8
110 !insertmacro FILE_ASSOCIATION_ADD "tcx" "Training Center XML" 9
111 !insertmacro FILE_ASSOCIATION_ADD "kml" "Keyhole Markup Language" 10
112 !insertmacro FILE_ASSOCIATION_ADD "fit" "Flexible and Interoperable Data Transfer" 11
113 !insertmacro FILE_ASSOCIATION_ADD "igc" "Flight Recorder Data Format" 12
114 !insertmacro FILE_ASSOCIATION_ADD "nmea" "NMEA 0183 Data" 13
115 !insertmacro FILE_ASSOCIATION_ADD "plt" "OziExplorer Track Point File" 14
116 !insertmacro FILE_ASSOCIATION_ADD "rte" "OziExplorer Route File" 15
117 !insertmacro FILE_ASSOCIATION_ADD "wpt" "OziExplorer Waypoint File" 1
118 !insertmacro FILE_ASSOCIATION_ADD "loc" "Geocaching.com Waypoint File" 2
119 !insertmacro FILE_ASSOCIATION_ADD "slf" "Sigma Log File" 3
120 !insertmacro FILE_ASSOCIATION_ADD "geojson" "GeoJSON" 4
121 !insertmacro FILE_ASSOCIATION_ADD "cup" "SeeYou CUP File" 5
122 !insertmacro FILE_ASSOCIATION_ADD "gpi" "Garmin POI File" 6
123 !insertmacro FILE_ASSOCIATION_ADD "sml" "Suunto Markup Language" 7
124 System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
126 SectionEnd
128 Section "QT framework" SEC_QT
130 SectionIn RO
132 File "Qt5Core.dll"
133 File "Qt5Gui.dll"
134 File "Qt5Widgets.dll"
135 File "Qt5PrintSupport.dll"
136 File "Qt5Network.dll"
137 File "Qt5Sql.dll"
138 File "Qt5Concurrent.dll"
139 File /r "platforms"
140 File /r "imageformats"
141 File /r "printsupport"
142 File /r "styles"
143 File /r "sqldrivers"
145 SectionEnd
147 Section "MSVC runtime" SEC_MSVC
149 SectionIn RO
151 SetOutPath $TEMP
152 File "vc_redist.x86.exe"
153 ExecWait '"$TEMP\vc_redist.x86.exe" /install /quiet /norestart'
154 SetOutPath $INSTDIR
156 SectionEnd
158 Section "OpenSSL" SEC_OPENSSL
160 File "libcrypto-1_1.dll"
161 File "libssl-1_1.dll"
163 SectionEnd
165 Section "ANGLE" SEC_ANGLE
167 File "libGLESv2.dll"
168 File "libEGL.dll"
169 File "D3DCompiler_47.dll"
171 SectionEnd
173 SectionGroup "Localization" SEC_LOCALIZATION
174 !insertmacro LOCALIZATION "Czech" "cs"
175 !insertmacro LOCALIZATION "Danish" "da"
176 !insertmacro LOCALIZATION "Finnish" "fi"
177 !insertmacro LOCALIZATION "French" "fr"
178 !insertmacro LOCALIZATION "German" "de"
179 !insertmacro LOCALIZATION "Hungarian" "hu"
180 !insertmacro LOCALIZATION "Italian" "it"
181 !insertmacro LOCALIZATION "Norwegian" "nb"
182 !insertmacro LOCALIZATION "Polish" "pl"
183 !insertmacro LOCALIZATION "Portuguese (Brazil)" "pt_BR"
184 !insertmacro LOCALIZATION "Russian" "ru"
185 !insertmacro LOCALIZATION "Spanish" "es"
186 !insertmacro LOCALIZATION "Swedish" "sv"
187 !insertmacro LOCALIZATION "Turkish" "tr"
188 !insertmacro LOCALIZATION "Ukrainian" "uk"
189 SectionGroupEnd
191 ;--------------------------------
193 ; Uninstaller
195 Section "Uninstall"
197 ; Remove registry keys
198 DeleteRegKey HKLM "${REGENTRY}"
199 DeleteRegKey HKLM SOFTWARE\GPXSee
201 ; Remove directories used
202 RMDir /r "$INSTDIR"
204 ; Remove Start menu entries
205 SetShellVarContext all
206 !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
207 Delete "$SMPROGRAMS\$StartMenuFolder\*.*"
208 RMDir "$SMPROGRAMS\$StartMenuFolder"
210 ; Remove GPX file association
211 !insertmacro FILE_ASSOCIATION_REMOVE "gpx"
212 !insertmacro FILE_ASSOCIATION_REMOVE "tcx"
213 !insertmacro FILE_ASSOCIATION_REMOVE "kml"
214 !insertmacro FILE_ASSOCIATION_REMOVE "fit"
215 !insertmacro FILE_ASSOCIATION_REMOVE "igc"
216 !insertmacro FILE_ASSOCIATION_REMOVE "nmea"
217 !insertmacro FILE_ASSOCIATION_REMOVE "plt"
218 !insertmacro FILE_ASSOCIATION_REMOVE "rte"
219 !insertmacro FILE_ASSOCIATION_REMOVE "wpt"
220 !insertmacro FILE_ASSOCIATION_REMOVE "loc"
221 !insertmacro FILE_ASSOCIATION_REMOVE "slf"
222 !insertmacro FILE_ASSOCIATION_REMOVE "geojson"
223 !insertmacro FILE_ASSOCIATION_REMOVE "cup"
224 !insertmacro FILE_ASSOCIATION_REMOVE "gpi"
225 !insertmacro FILE_ASSOCIATION_REMOVE "sml"
226 System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)'
228 SectionEnd
230 ;-------------------------------
232 ;Descriptions
234 ;Language strings
235 LangString DESC_QT ${LANG_ENGLISH} \
236 "QT cross-platform application framework."
237 LangString DESC_MSVC ${LANG_ENGLISH} \
238 "Microsoft Visual C++ 2017 runtime. If already installed, will be skipped."
239 LangString DESC_OPENSSL ${LANG_ENGLISH} \
240 "OpenSSL library. Required for HTTPS to work."
241 LangString DESC_ANGLE ${LANG_ENGLISH} \
242 "ANGLE (OpenGL via Direct3D). Enables OpenGL on systems without native OpenGL drivers."
243 LangString DESC_APP ${LANG_ENGLISH} \
244 "GPXSee application"
245 LangString DESC_LOCALIZATION ${LANG_ENGLISH} \
246 "Localization"
248 ;Assign language strings to sections
249 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
250 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_QT} $(DESC_QT)
251 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_OPENSSL} $(DESC_OPENSSL)
252 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_ANGLE} $(DESC_ANGLE)
253 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_MSVC} $(DESC_MSVC)
254 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_APP} $(DESC_APP)
255 !insertmacro MUI_DESCRIPTION_TEXT ${SEC_LOCALIZATION} $(DESC_LOCALIZATION)
256 !insertmacro MUI_FUNCTION_DESCRIPTION_END