!define APPNAME "Qt SQL Proxy (Debug)" !define APPNAMEANDVERSION "Qt SQL Proxy (Debug) 2.0" !define /date BUILD "%b-%d-%Y" !define EXENAME "qsqlproxy.exe" !define CONFIGEXENAME "qsqlproxycfg.exe" ;!define QTDIR "C:\Qt\4.6.2" !define QTDIR "C:\Qt\4.7.0" !addplugindir "NSIS Plugins" ; Main Install settings Name "${APPNAMEANDVERSION}" InstallDir "$PROGRAMFILES32\${APPNAME}" InstallDirRegKey HKLM "Software\${APPNAME}" "" OutFile "Setup-QtSqlProxy-Debug.exe" SetCompressor /SOLID LZMA ; Modern interface settings !include "MUI.nsh" !include LogicLib.nsh !define MUI_ABORTWARNING !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "license.txt" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_RUN !define MUI_FINISHPAGE_RUN_NOTCHECKED !define MUI_FINISHPAGE_RUN_TEXT "Configure SQL proxy" !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchConfigure" !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 Function LaunchConfigure ExecShell "" "$INSTDIR\${CONFIGEXENAME}" FunctionEnd Section "${APPNAME}" Section1 ; Set Section properties SetOverwrite on ; uninstall old version IfFileExists $INSTDIR\uninstall.exe UninstallerExists FinishedUninstall UninstallerExists: ExecWait '"$INSTDIR\uninstall.exe" /S _?=$INSTDIR\' FinishedUninstall: ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "license.txt" File "README.txt" File "qsqlproxy\debug\${EXENAME}" File "qsqlproxy\debug\qsqlproxy.pdb" File "qsqlproxycfg\debug\${CONFIGEXENAME}" File "${QTDIR}\bin\QtCored4.dll" File "${QTDIR}\bin\QtNetworkd4.dll" File "${QTDIR}\bin\QtSqld4.dll" File "${QTDIR}\bin\QtGuid4.dll" File "${QTDIR}\bin\QtXmld4.dll" File "${QTDIR}\bin\QtCored4.pdb" File "${QTDIR}\bin\QtNetworkd4.pdb" File "${QTDIR}\bin\QtSqld4.pdb" File "${QTDIR}\bin\QtGuid4.pdb" File "${QTDIR}\bin\QtXmld4.pdb" ; install Qt plugins SetOutPath "$INSTDIR\sqldrivers" File "${QTDIR}\plugins\sqldrivers\*.dll" ; Enable firewall nsisFirewall::AddAuthorizedApplication "$INSTDIR\${EXENAME}" "${APPNAME}" ; Install the service ExecWait "$INSTDIR\${EXENAME} -regserver" ExecWait "$INSTDIR\${EXENAME} -i" SimpleSC::SetServiceStartType "SQL Proxy Service" "2" ; Make start menu SetShellVarContext All CreateDirectory "$SMPROGRAMS\${APPNAME}" CreateShortCut "$SMPROGRAMS\${APPNAME}\License.lnk" "$INSTDIR\license.txt" CreateShortCut "$SMPROGRAMS\${APPNAME}\Readme.lnk" "$INSTDIR\readme.txt" CreateShortCut "$SMPROGRAMS\${APPNAME}\Configure Proxy.lnk" "$INSTDIR\${CONFIGEXENAME}" CreateShortCut "$SMPROGRAMS\${APPNAME}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" ; Setup logging SetOutPath "$INSTDIR" File "eventviewer\debug\eventviewer.dll" WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\EventLog\Application\${APPNAME}" "EventMessageFile" "$INSTDIR\eventviewer.dll" WriteRegDWORD HKLM "SYSTEM\CurrentControlSet\Services\EventLog\Application\${APPNAME}" "TypesSupported" "7" SectionEnd Section -FinishSection WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}-${BUILD}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe" WriteUninstaller "$INSTDIR\uninstall.exe" SectionEnd ; Uninstall section Section Uninstall ; Uninstall the service ExecWait "$INSTDIR\${EXENAME} -t" Sleep 1000 ExecWait "$INSTDIR\${EXENAME} -u" Sleep 1000 ; Cleanup event logger DeleteRegKey HKLM "SYSTEM\CurrentControlSet\Services\EventLog\Application\${APPNAME}" ; Remove from registry... DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" DeleteRegKey HKLM "SOFTWARE\${APPNAME}" ; Delete self Delete "$INSTDIR\uninstall.exe" Delete "$INSTDIR\sqldrivers\*.dll" RMDir "$INSTDIR\sqldrivers" ; Start menu SetShellVarContext All Delete "$SMPROGRAMS\${APPNAME}\*.lnk" RMDir "$SMPROGRAMS\${APPNAME}" ; Clean up Delete "$INSTDIR\*.txt" Delete "$INSTDIR\*.exe" Delete "$INSTDIR\*.dll" RMDir "$INSTDIR" SectionEnd BrandingText "Geekcentral" ; eof