1Name "@PACKAGE_NAME@" 2SetCompressor /SOLID lzma 3Unicode true 4# BrandingText " " 5# Request application privileges for Windows Vista 6RequestExecutionLevel admin 7 8# Defines 9!define SOURCE_FILES "@CMAKE_SOURCE_DIR@/src" 10!define BINARY_FILES "@CMAKE_BINARY_DIR@/src" 11!define FUIDSYNTH_FILES "@FLUIDSYNTH_PREFIX@/bin" 12!define REGKEY "SOFTWARE\$(^Name)" 13!define VERSION @PROJECT_VERSION@ 14!define PROGNAME "@PACKAGE_NAME@" 15!define COMPANY "rncbc.org" 16!define URL https://qsynth.sourceforge.io 17 18# Included files 19!include Sections.nsh 20!include MUI2.nsh 21!include Library.nsh 22!include x64.nsh 23 24# MUI defines 25!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico" 26!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico" 27!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM 28!define MUI_STARTMENUPAGE_NODISABLE 29!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} 30!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup 31!define MUI_STARTMENUPAGE_DEFAULTFOLDER "@PACKAGE_NAME@" 32!define MUI_FINISHPAGE_NOAUTOCLOSE 33!define MUI_UNFINISHPAGE_NOAUTOCLOSE 34 35# Variables 36Var StartMenuGroup 37Var LibInstall 38 39# Installer pages 40!define MUI_WELCOMEPAGE_TITLE_3LINES 41!insertmacro MUI_PAGE_WELCOME 42!insertmacro MUI_PAGE_LICENSE ${SOURCE_FILES}/win32/gpl-2.0.rtf 43!insertmacro MUI_PAGE_DIRECTORY 44!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup 45!insertmacro MUI_PAGE_INSTFILES 46!define MUI_FINISHPAGE_TITLE_3LINES 47!insertmacro MUI_PAGE_FINISH 48 49!define MUI_WELCOMEPAGE_TITLE_3LINES 50!insertmacro MUI_UNPAGE_WELCOME 51!insertmacro MUI_UNPAGE_CONFIRM 52!insertmacro MUI_UNPAGE_INSTFILES 53!define MUI_FINISHPAGE_TITLE_3LINES 54!insertmacro MUI_UNPAGE_FINISH 55 56# Installer languages 57!insertmacro MUI_LANGUAGE "Czech" 58!insertmacro MUI_LANGUAGE "English" 59!insertmacro MUI_LANGUAGE "French" 60!insertmacro MUI_LANGUAGE "German" 61!insertmacro MUI_LANGUAGE "Russian" 62!insertmacro MUI_LANGUAGE "Serbian" 63!insertmacro MUI_LANGUAGE "Spanish" 64 65# Installer attributes 66OutFile qsynth-${VERSION}-setup.exe 67#InstallDir $PROGRAMFILES\QSynth 68CRCCheck on 69XPStyle on 70ShowInstDetails show 71VIProductVersion @PROJECT_VERSION@.0 72VIAddVersionKey ProductName @PACKAGE_NAME@ 73VIAddVersionKey ProductVersion ${VERSION} 74VIAddVersionKey CompanyName "${COMPANY}" 75VIAddVersionKey CompanyWebsite "${URL}" 76VIAddVersionKey FileVersion ${VERSION} 77VIAddVersionKey FileDescription "@PROJECT_DESCRIPTION@" 78VIAddVersionKey LegalCopyright "Copyright (C) 2003-2021, rncbc aka Rui Nuno Capela. All rights reserved." 79InstallDirRegKey HKLM "${REGKEY}" Path 80ShowUninstDetails show 81Icon ${SOURCE_FILES}\images\qsynth.ico 82UninstallIcon ${SOURCE_FILES}\images\qsynth.ico 83 84# Installer sections 85Section -Main SEC0000 86 CreateDirectory $INSTDIR\bearer 87 CreateDirectory $INSTDIR\iconengines 88 CreateDirectory $INSTDIR\imageformats 89 CreateDirectory $INSTDIR\platforms 90 CreateDirectory $INSTDIR\styles 91 CreateDirectory $INSTDIR\translations 92 SetOutPath $INSTDIR 93 SetOverwrite on 94 File ${BINARY_FILES}\qsynth.exe 95 File ${FUIDSYNTH_FILES}\fluidsynth.exe 96 SetOutPath $INSTDIR\translations 97 File ${BINARY_FILES}\qsynth_cs.qm 98 File ${BINARY_FILES}\qsynth_de.qm 99 File ${BINARY_FILES}\qsynth_es.qm 100 File ${BINARY_FILES}\qsynth_fr.qm 101 File ${BINARY_FILES}\qsynth_ru.qm 102 File ${BINARY_FILES}\qsynth_sr.qm 103 File ${BINARY_FILES}\translations\qt_cs.qm 104 File ${BINARY_FILES}\translations\qt_de.qm 105 File ${BINARY_FILES}\translations\qt_es.qm 106 File ${BINARY_FILES}\translations\qt_fr.qm 107 File ${BINARY_FILES}\translations\qt_ru.qm 108 109 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libfluidsynth-2.dll $INSTDIR\libfluidsynth-2.dll $INSTDIR 110 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libglib-2.0-0.dll $INSTDIR\libglib-2.0-0.dll $INSTDIR 111 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libgobject-2.0-0.dll $INSTDIR\libgobject-2.0-0.dll $INSTDIR 112 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libgthread-2.0-0.dll $INSTDIR\libgthread-2.0-0.dll $INSTDIR 113 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libinstpatch-2.dll $INSTDIR\libinstpatch-2.dll $INSTDIR 114 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libintl-8.dll $INSTDIR\libintl-8.dll $INSTDIR 115 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${FUIDSYNTH_FILES}\libsndfile-1.dll $INSTDIR\libsndfile-1.dll $INSTDIR 116 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\Qt5Core.dll $INSTDIR\Qt5Core.dll $INSTDIR 117 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\Qt5Gui.dll $INSTDIR\Qt5Gui.dll $INSTDIR 118 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\Qt5Network.dll $INSTDIR\Qt5Network.dll $INSTDIR 119 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\Qt5Svg.dll $INSTDIR\Qt5Svg.dll $INSTDIR 120 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\Qt5Widgets.dll $INSTDIR\Qt5Widgets.dll $INSTDIR 121 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\libGLESv2.dll $INSTDIR\libGLESv2.dll $INSTDIR 122 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\libEGL.dll $INSTDIR\libEGL.dll $INSTDIR 123 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\D3Dcompiler_47.dll $INSTDIR\D3Dcompiler_47.dll $INSTDIR 124 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\opengl32sw.dll $INSTDIR\opengl32sw.dll $INSTDIR 125 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\libgcc_s_seh-1.dll $INSTDIR\libgcc_s_seh-1.dll $INSTDIR 126 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\libstdc++-6.dll $INSTDIR\libstdc++-6.dll $INSTDIR 127 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\libwinpthread-1.dll $INSTDIR\libwinpthread-1.dll $INSTDIR 128 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\bearer\qgenericbearer.dll $INSTDIR\bearer\qgenericbearer.dll $INSTDIR 129 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\iconengines\qsvgicon.dll $INSTDIR\iconengines\qsvgicon.dll $INSTDIR 130 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qgif.dll $INSTDIR\imageformats\qgif.dll $INSTDIR 131 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qicns.dll $INSTDIR\imageformats\qicns.dll $INSTDIR 132 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qico.dll $INSTDIR\imageformats\qico.dll $INSTDIR 133 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qjpeg.dll $INSTDIR\imageformats\qjpeg.dll $INSTDIR 134 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qsvg.dll $INSTDIR\imageformats\qsvg.dll $INSTDIR 135 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qtga.dll $INSTDIR\imageformats\qtga.dll $INSTDIR 136 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qtiff.dll $INSTDIR\imageformats\qtiff.dll $INSTDIR 137 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qwbmp.dll $INSTDIR\imageformats\qwbmp.dll $INSTDIR 138 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\imageformats\qwebp.dll $INSTDIR\imageformats\qwebp.dll $INSTDIR 139 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\platforms\qwindows.dll $INSTDIR\platforms\qwindows.dll $INSTDIR 140 !insertmacro InstallLib DLL NOTSHARED REBOOT_PROTECTED ${BINARY_FILES}\styles\qwindowsvistastyle.dll $INSTDIR\styles\qwindowsvistastyle.dll $INSTDIR 141 142 WriteRegStr HKLM "${REGKEY}\Components" Main 1 143SectionEnd 144 145Section -post SEC0001 146 WriteRegStr HKLM "${REGKEY}" Path $INSTDIR 147 SetOutPath $INSTDIR 148 WriteUninstaller $INSTDIR\uninstall.exe 149 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application 150 CreateDirectory $SMPROGRAMS\$StartMenuGroup 151 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" $INSTDIR\uninstall.exe 152 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\fluidsynth.lnk" $INSTDIR\fluidsynth.exe 153 CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\qsynth.exe 154 !insertmacro MUI_STARTMENU_WRITE_END 155 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" 156 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" 157 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" 158 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" 159 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe 160 WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe 161 WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 162 WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 163SectionEnd 164 165# Macro for selecting uninstaller sections 166!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID 167 Push $R0 168 ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}" 169 StrCmp $R0 1 0 next${UNSECTION_ID} 170 !insertmacro SelectSection "${UNSECTION_ID}" 171 GoTo done${UNSECTION_ID} 172next${UNSECTION_ID}: 173 !insertmacro UnselectSection "${UNSECTION_ID}" 174done${UNSECTION_ID}: 175 Pop $R0 176!macroend 177 178# Uninstaller sections 179Section /o -un.Main UNSEC0000 180 Delete /REBOOTOK $INSTDIR\translations\qsynth_cs.qm 181 Delete /REBOOTOK $INSTDIR\translations\qsynth_de.qm 182 Delete /REBOOTOK $INSTDIR\translations\qsynth_es.qm 183 Delete /REBOOTOK $INSTDIR\translations\qsynth_fr.qm 184 Delete /REBOOTOK $INSTDIR\translations\qsynth_ru.qm 185 Delete /REBOOTOK $INSTDIR\translations\qsynth_sr.qm 186 Delete /REBOOTOK $INSTDIR\translations\qt_cs.qm 187 Delete /REBOOTOK $INSTDIR\translations\qt_de.qm 188 Delete /REBOOTOK $INSTDIR\translations\qt_es.qm 189 Delete /REBOOTOK $INSTDIR\translations\qt_fr.qm 190 Delete /REBOOTOK $INSTDIR\translations\qt_ru.qm 191 Delete /REBOOTOK $INSTDIR\fluidsynth.exe 192 Delete /REBOOTOK $INSTDIR\qsynth.exe 193 194 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libfluidsynth-2.dll 195 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libglib-2.0-0.dll 196 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libgobject-2.0-0.dll 197 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libgthread-2.0-0.dll 198 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libinstpatch-2.dll 199 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libintl-8.dll 200 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libsndfile-1.dll 201 202 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\Qt5Core.dll 203 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\Qt5Gui.dll 204 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\Qt5Network.dll 205 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\Qt5Svg.dll 206 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\Qt5Widgets.dll 207 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libGLESv2.dll 208 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libEGL.dll 209 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\D3Dcompiler_47.dll 210 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\opengl32sw.dll 211 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libgcc_s_seh-1.dll 212 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libstdc++-6.dll 213 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\libwinpthread-1.dll 214 215 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\bearer\qgenericbearer.dll 216 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\iconengines\qsvgicon.dll 217 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qgif.dll 218 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qicns.dll 219 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qico.dll 220 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qjpeg.dll 221 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qsvg.dll 222 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qtga.dll 223 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qtiff.dll 224 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qwbmp.dll 225 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\imageformats\qwebp.dll 226 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\platforms\qwindows.dll 227 !insertmacro UnInstallLib DLL NOTSHARED REBOOT_PROTECTED $INSTDIR\styles\qwindowsvistastyle.dll 228 RMDir /REBOOTOK $INSTDIR\translations 229 RMDir /REBOOTOK $INSTDIR\styles 230 RMDir /REBOOTOK $INSTDIR\platforms 231 RMDir /REBOOTOK $INSTDIR\iconengines 232 RMDir /REBOOTOK $INSTDIR\imageformats 233 RMDir /REBOOTOK $INSTDIR\bearer 234 DeleteRegValue HKLM "${REGKEY}\Components" Main 235SectionEnd 236 237Section -un.post UNSEC0001 238 DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" 239 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Uninstall $(^Name).lnk" 240 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\fluidsynth.lnk" 241 Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" 242 Delete /REBOOTOK $INSTDIR\uninstall.exe 243 DeleteRegValue HKLM "${REGKEY}" StartMenuGroup 244 DeleteRegValue HKLM "${REGKEY}" Path 245 DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components" 246 DeleteRegKey /IfEmpty HKLM "${REGKEY}" 247 RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup 248 RmDir /REBOOTOK $INSTDIR 249SectionEnd 250 251# Installer functions 252Function .onInit 253 !insertmacro MUI_LANGDLL_DISPLAY 254 ${If} ${RunningX64} 255 StrCpy $INSTDIR "$PROGRAMFILES64\${PROGNAME}" 256 ${Else} 257 MessageBox MB_OK|MB_ICONSTOP "Sorry, this setup package is for 64 bit systems only." 258 Quit 259 ${EndIf} 260 Call GetDXVersion 261 Pop $R3 262 IntCmp $R3 900 +3 0 +3 263 MessageBox "MB_OK" "Requires DirectX 9.0 or later." 264 Abort 265 InitPluginsDir 266 Push $0 267 ReadRegStr $0 HKLM "${REGKEY}" Path 268 ClearErrors 269 StrCmp $0 "" +2 270 StrCpy $LibInstall 1 271 Pop $0 272FunctionEnd 273 274# Uninstaller functions 275Function un.onInit 276 !insertmacro MUI_UNGETLANGUAGE 277 ReadRegStr $INSTDIR HKLM "${REGKEY}" Path 278 !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup 279 !insertmacro SELECT_UNSECTION Main ${UNSEC0000} 280FunctionEnd 281 282Function GetDXVersion 283 Push $0 284 Push $1 285 286 ReadRegStr $0 HKLM "Software\Microsoft\DirectX" "Version" 287 IfErrors noDirectX 288 289 StrCpy $1 $0 2 5 ; get the minor version 290 StrCpy $0 $0 2 2 ; get the major version 291 IntOp $0 $0 * 100 ; $0 = major * 100 + minor 292 IntOp $0 $0 + $1 293 Goto done 294 295 noDirectX: 296 StrCpy $0 0 297 298 done: 299 Pop $1 300 Exch $0 301FunctionEnd 302