diff --git a/windows/FindProcDLL.dll b/windows/FindProcDLL.dll new file mode 100644 index 00000000..790c2279 Binary files /dev/null and b/windows/FindProcDLL.dll differ diff --git a/windows/installer.nsi b/windows/installer.nsi index 9b857374..3db7eefa 100755 --- a/windows/installer.nsi +++ b/windows/installer.nsi @@ -1,122 +1,123 @@ -; Jamulus NSIS installer script - -!define APP_NAME "Jamulus" -!define APP_EXE "Jamulus.exe" -!define AUTORUN_NAME "Jamulus server" -!define UNINSTALL_EXE "Uninstall.exe" -!define INSTALLER_NAME "Jamulusinstaller.exe" -!define BINARY_PATH "..\release\" -!define VS_REDIST_PATH "C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\" -;!define VS_REDIST_PATH "C:\Programme\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\" -!define VS_REDIST_EXE "vcredist_x86.exe" -!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" -!define AUTORUN_KEY "Software\Microsoft\Windows\CurrentVersion\Run" - - -SetCompressor lzma -Name "${APP_NAME}" -Caption "${APP_NAME}" -OutFile "${INSTALLER_NAME}" -InstallDir "$PROGRAMFILES\${APP_NAME}" - -LicenseText "License" -LicenseData "..\COPYING" - -Page license -Page directory -Page instfiles - - -Section - - ; check if software is currently running - FindProcDLL::FindProc "${APP_EXE}" - IntCmp $R0 1 0 notRunning - MessageBox MB_OK|MB_ICONEXCLAMATION "${APP_NAME} is running. Please close it and run the setup again." /SD IDOK - Abort - notRunning: - - ; add reg keys so that software appears in Windows "Add/Remove Software" - WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${APP_NAME} (remove only)" - WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"$INSTDIR\${UNINSTALL_EXE}"' - - SetOutPath $INSTDIR - - ; main application - File "${BINARY_PATH}${APP_EXE}" - - ; QT dlls - File "$%QTDIR%\bin\Qt5Core.dll" - File "$%QTDIR%\bin\Qt5Gui.dll" - File "$%QTDIR%\bin\Qt5Widgets.dll" - File "$%QTDIR%\bin\Qt5Network.dll" - File "$%QTDIR%\bin\Qt5Xml.dll" - File "$%QTDIR%\bin\D3DCompiler_47.dll" - File "$%QTDIR%\bin\icudt54.dll" - File "$%QTDIR%\bin\icuin54.dll" - File "$%QTDIR%\bin\icuuc54.dll" - File "$%QTDIR%\bin\libEGL.dll" - File "$%QTDIR%\bin\libGLESv2.dll" - - ; other files - File "..\COPYING" - - ; temporarily create Microsoft Visual Studio redistributable, - File "${VS_REDIST_PATH}${VS_REDIST_EXE}" - ExecWait '"$INSTDIR\${VS_REDIST_EXE}" /Q' - - ; uninstaller - WriteUninstaller $INSTDIR\${UNINSTALL_EXE} - - ; shortcuts - CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$OUTDIR\${APP_EXE}" - - CreateDirectory "$SMPROGRAMS\${APP_NAME}" - CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}" - CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME} Server.lnk" "$INSTDIR\${APP_EXE}" "-s" - CreateShortCut "$SMPROGRAMS\${APP_NAME}\${UNINSTALL_EXE}.lnk" "$INSTDIR\${UNINSTALL_EXE}" - - ; cleanup: remove temporary Microsoft Visual Studio redistributable executable - Delete $INSTDIR\${VS_REDIST_EXE} - - ; additional platform dlls - SetOutPath $INSTDIR\platforms - File "$%QTDIR%\plugins\platforms\qwindows.dll" - File "$%QTDIR%\plugins\platforms\qminimal.dll" - -SectionEnd - - -Section "Uninstall" - -DeleteRegKey HKLM "${UNINST_KEY}" - -; the software may have written an auto run entry in the registry, remove it -DeleteRegValue HKCU "${AUTORUN_KEY}" "${AUTORUN_NAME}" - -Delete "$DESKTOP\${APP_NAME}.lnk" -Delete "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" -Delete "$SMPROGRAMS\${APP_NAME}\${APP_NAME} server.lnk" -Delete "$SMPROGRAMS\${APP_NAME}\${UNINSTALL_EXE}.lnk" -RMDIR "$SMPROGRAMS\${APP_NAME}" - -Delete $INSTDIR\${UNINSTALL_EXE} -Delete $INSTDIR\${APP_EXE} -Delete $INSTDIR\Qt5Core.dll -Delete $INSTDIR\Qt5Gui.dll -Delete $INSTDIR\Qt5Widgets.dll -Delete $INSTDIR\Qt5Network.dll -Delete $INSTDIR\Qt5Xml.dll -Delete $INSTDIR\D3DCompiler_47.dll -Delete $INSTDIR\icudt54.dll -Delete $INSTDIR\icuin54.dll -Delete $INSTDIR\icuuc54.dll -Delete $INSTDIR\libEGL.dll -Delete $INSTDIR\libGLESv2.dll -Delete $INSTDIR\COPYING -Delete $INSTDIR\platforms\qwindows.dll -Delete $INSTDIR\platforms\qminimal.dll -RMDir $INSTDIR\platforms -RMDir $INSTDIR - -SectionEnd +; Jamulus NSIS installer script + +!define APP_NAME "Jamulus" +!define APP_EXE "Jamulus.exe" +!define AUTORUN_NAME "Jamulus server" +!define UNINSTALL_EXE "Uninstall.exe" +!define INSTALLER_NAME "Jamulusinstaller.exe" +!define BINARY_PATH "..\release\" +!define VS_REDIST_PATH "C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\" +;!define VS_REDIST_PATH "C:\Programme\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\" +!define VS_REDIST_EXE "vcredist_x86.exe" +!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" +!define AUTORUN_KEY "Software\Microsoft\Windows\CurrentVersion\Run" + + +SetCompressor lzma +Name "${APP_NAME}" +Caption "${APP_NAME}" +OutFile "${INSTALLER_NAME}" +InstallDir "$PROGRAMFILES\${APP_NAME}" + +LicenseText "License" +LicenseData "..\COPYING" + +Page license +Page directory +Page instfiles + + +Section + + ; check if software is currently running + !addplugindir ..\windows + FindProcDLL::FindProc "${APP_EXE}" + IntCmp $R0 1 0 notRunning + MessageBox MB_OK|MB_ICONEXCLAMATION "${APP_NAME} is running. Please close it and run the setup again." /SD IDOK + Abort + notRunning: + + ; add reg keys so that software appears in Windows "Add/Remove Software" + WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${APP_NAME} (remove only)" + WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" '"$INSTDIR\${UNINSTALL_EXE}"' + + SetOutPath $INSTDIR + + ; main application + File "${BINARY_PATH}${APP_EXE}" + + ; QT dlls + File "$%QTDIR%\bin\Qt5Core.dll" + File "$%QTDIR%\bin\Qt5Gui.dll" + File "$%QTDIR%\bin\Qt5Widgets.dll" + File "$%QTDIR%\bin\Qt5Network.dll" + File "$%QTDIR%\bin\Qt5Xml.dll" + File "$%QTDIR%\bin\D3DCompiler_47.dll" + File "$%QTDIR%\bin\icudt54.dll" + File "$%QTDIR%\bin\icuin54.dll" + File "$%QTDIR%\bin\icuuc54.dll" + File "$%QTDIR%\bin\libEGL.dll" + File "$%QTDIR%\bin\libGLESv2.dll" + + ; other files + File "..\COPYING" + + ; temporarily create Microsoft Visual Studio redistributable, + File "${VS_REDIST_PATH}${VS_REDIST_EXE}" + ExecWait '"$INSTDIR\${VS_REDIST_EXE}" /Q' + + ; uninstaller + WriteUninstaller $INSTDIR\${UNINSTALL_EXE} + + ; shortcuts + CreateShortCut "$DESKTOP\${APP_NAME}.lnk" "$OUTDIR\${APP_EXE}" + + CreateDirectory "$SMPROGRAMS\${APP_NAME}" + CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" "$INSTDIR\${APP_EXE}" + CreateShortCut "$SMPROGRAMS\${APP_NAME}\${APP_NAME} Server.lnk" "$INSTDIR\${APP_EXE}" "-s" + CreateShortCut "$SMPROGRAMS\${APP_NAME}\${UNINSTALL_EXE}.lnk" "$INSTDIR\${UNINSTALL_EXE}" + + ; cleanup: remove temporary Microsoft Visual Studio redistributable executable + Delete $INSTDIR\${VS_REDIST_EXE} + + ; additional platform dlls + SetOutPath $INSTDIR\platforms + File "$%QTDIR%\plugins\platforms\qwindows.dll" + File "$%QTDIR%\plugins\platforms\qminimal.dll" + +SectionEnd + + +Section "Uninstall" + +DeleteRegKey HKLM "${UNINST_KEY}" + +; the software may have written an auto run entry in the registry, remove it +DeleteRegValue HKCU "${AUTORUN_KEY}" "${AUTORUN_NAME}" + +Delete "$DESKTOP\${APP_NAME}.lnk" +Delete "$SMPROGRAMS\${APP_NAME}\${APP_NAME}.lnk" +Delete "$SMPROGRAMS\${APP_NAME}\${APP_NAME} server.lnk" +Delete "$SMPROGRAMS\${APP_NAME}\${UNINSTALL_EXE}.lnk" +RMDIR "$SMPROGRAMS\${APP_NAME}" + +Delete $INSTDIR\${UNINSTALL_EXE} +Delete $INSTDIR\${APP_EXE} +Delete $INSTDIR\Qt5Core.dll +Delete $INSTDIR\Qt5Gui.dll +Delete $INSTDIR\Qt5Widgets.dll +Delete $INSTDIR\Qt5Network.dll +Delete $INSTDIR\Qt5Xml.dll +Delete $INSTDIR\D3DCompiler_47.dll +Delete $INSTDIR\icudt54.dll +Delete $INSTDIR\icuin54.dll +Delete $INSTDIR\icuuc54.dll +Delete $INSTDIR\libEGL.dll +Delete $INSTDIR\libGLESv2.dll +Delete $INSTDIR\COPYING +Delete $INSTDIR\platforms\qwindows.dll +Delete $INSTDIR\platforms\qminimal.dll +RMDir $INSTDIR\platforms +RMDir $INSTDIR + +SectionEnd