# Use the newer, nicer installer style
!include MUI2.nsh

# set dependencies
!define msvccRedistributableExe "vcredist_x86.exe"

# define installer name
Name "Swift"
outFile "Swift-installer-win32-${buildVersion}.exe"
 
# set default install directory
installDir "$PROGRAMFILES\Swift"

# Declare variables needed later
Var StartMenuFolder

SetCompressor lzma
# How to do pages with the modern ui.
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_DIRECTORY

# Remember the start menu folder for uninstall
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" 
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Swift" 
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"

!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
!insertmacro MUI_PAGE_INSTFILES

!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES



# default section start
section "Main install"

# define output path
setOutPath $INSTDIR
 
# Specify files to go in output path.
# If you update this list, update the uninstall list too.
File "..\..\QtUI\Swift\Swift.exe"
File "..\..\QtUI\Swift\ssleay32.dll"
File "..\..\QtUI\Swift\libeay32.dll"
File "..\..\QtUI\Swift\phonon4.dll"
File "..\..\QtUI\Swift\QtCore4.dll"
File "..\..\QtUI\Swift\QtGui4.dll"
File "..\..\QtUI\Swift\QtWebKit4.dll"
File "..\..\QtUI\Swift\QtNetwork4.dll"

SetOutPath $INSTDIR\imageformats

File "..\..\QtUI\Swift\imageformats\qgif4.dll"
File "..\..\QtUI\Swift\imageformats\qico4.dll"
File "..\..\QtUI\Swift\imageformats\qjpeg4.dll"
File "..\..\QtUI\Swift\imageformats\qmng4.dll"
File "..\..\QtUI\Swift\imageformats\qsvg4.dll"
File "..\..\QtUI\Swift\imageformats\qtiff4.dll"

# create start menu item
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Swift.lnk" "$INSTDIR\Swift.exe"
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Swift.lnk" "$INSTDIR\uninstaller.exe"

# Add the information to Add/Remove
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Swift" "DisplayName" "Swift"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Swift" "UninstallString" "$\"$INSTDIR\uninstaller.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Swift" "QuietUninstallString" "$\"$INSTDIR\uninstaller.exe$\""


# define uninstaller name
writeUninstaller $INSTDIR\uninstaller.exe
 
# default section end
sectionEnd

Section -Prerequisites
# http://nsis.sourceforge.net/Embedding_other_installers
    SetOutPath $INSTDIR\Prerequisites
    MessageBox MB_YESNO "Install C++ Runtime?" /SD IDYES IDNO endRuntime
    File ${msvccRedistributableDir}\${msvccRedistributableExe}
    ExecWait "$INSTDIR\Prerequisites\${msvccRedistributableExe}"
    Delete $INSTDIR\Prerequisites\${msvccRedistributableExe}
    RmDir $INSTDIR\Prerequisites
    Goto endRuntime
  endRuntime:
SectionEnd

section "autostart"
  MessageBox MB_YESNO "Would you like Swift to run at startup?" /SD IDYES IDNO endAutostart
    WriteRegStr HKEY_CURRENT_USER "Software\Microsoft\Windows\CurrentVersion\Run" "Swift" "$INSTDIR\Swift.exe"
    Goto endAutostart
  endAutostart:
sectionEnd

# create a section to define what the uninstaller does.
# the section will always be named "Uninstall"
section "Uninstall"
    # Always delete uninstaller first
    delete $INSTDIR\uninstaller.exe
 
    # now delete installed files
    delete $INSTDIR\Swift.exe
    delete $INSTDIR\ssleay32.dll
    delete $INSTDIR\libeay32.dll
    delete $INSTDIR\phonon4.dll
    delete $INSTDIR\QtCore4.dll
    delete $INSTDIR\QtGui4.dll
    delete $INSTDIR\QtWebKit4.dll
    delete $INSTDIR\QtNetwork4.dll
    delete $INSTDIR\imageformats\qgif4.dll
    delete $INSTDIR\imageformats\qico4.dll
    delete $INSTDIR\imageformats\qjpeg4.dll
    delete $INSTDIR\imageformats\qmng4.dll
    delete $INSTDIR\imageformats\qsvg4.dll
    delete $INSTDIR\imageformats\qtiff4.dll

    RmDir $INSTDIR\imageformats
    RmDir $INSTDIR

!insertmacro MUI_STARTMENU_GETFOLDER page_id $R0
    Delete "$SMPROGRAMS\$R0\Swift.lnk"
    Delete "$SMPROGRAMS\$R0\Uninstall Swift.lnk"
    RmDir "$SMPROGRAMS\$R0"

    DeleteRegKey HKEY_CURRENT_USER "Software\Swift\Start Menu Folder"
    DeleteRegKey /ifempty HKEY_CURRENT_USER "Software\Swift"
    DeleteRegKey HKEY_CURRENT_USER "Software\Microsoft\Windows\CurrentVersion\Run\Swift"

    Goto endUninstall
  endUninstall: 
sectionEnd


# TODO http://nsis.sourceforge.net/Check_whether_your_application_is_running_during_uninstallation
# http://nsis.sourceforge.net/Date_and_time_in_installer_or_application_name
# http://nsis.sourceforge.net/Removing_'Nullsoft_Install_System_vX.XX'_String_from_installer