#
# Smrtk2ssrf NSIS installer script
#
# This installer creator needs to be run with:
# makensis smtk-import.nsi
#

#--------------------------------
# Include Modern UI

    !include "MUI2.nsh"

#--------------------------------
# General

    # Program version
    !define SUBSURFACE_VERSION "VERSIONTOKEN"

    # VIProductVersion requires version in x.x.x.x format
    !define SUBSURFACE_VIPRODUCTVERSION "PRODVTOKEN"

    # Installer name and filename
    Name "Smtk2ssrf"
    Caption "Smtk2ssrf ${SUBSURFACE_VERSION} Setup"
    OutFile "..\smtk2ssrf-${SUBSURFACE_VERSION}.exe"

    # Icon to use for the installer
    !define MUI_ICON "subsurface.ico"

    # Default installation folder
    InstallDir "$PROGRAMFILES\Smtk2ssrf"

    # Get installation folder from registry if available
    InstallDirRegKey HKCU "Software\Smtk2ssrf" ""

    # Request application privileges
    RequestExecutionLevel admin

#--------------------------------
# Version information

    VIProductVersion "${SUBSURFACE_VIPRODUCTVERSION}"
    VIAddVersionKey "ProductName" "Smtk2ssrf"
    VIAddVersionKey "FileDescription" "Smtk2ssrf - Import SmartTrak divelogs to Subsurface XML format."
    VIAddVersionKey "FileVersion" "${SUBSURFACE_VERSION}"
    VIAddVersionKey "LegalCopyright" "GPL v.2"
    VIAddVersionKey "ProductVersion" "${SUBSURFACE_VERSION}"

#--------------------------------
# Settings

    # Show a warn on aborting installation
    !define MUI_ABORTWARNING

    # Defines the target start menu folder
    !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
    !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Smtk2ssrf"
    !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"

#--------------------------------
# Variables

    Var StartMenuFolder

#--------------------------------
# Custom pages
#
# Maintain some checkboxes in the uninstall dialog
#Var UninstallDialog
#Var Checkbox_Reg
#Var Checkbox_Reg_State
#Var Checkbox_UserDir
#Var Checkbox_UserDir_State
#Var UserDir
#
#Function un.UninstallOptions
#    nsDialogs::Create 1018
#    Pop $UninstallDialog
#    ${If} $UninstallDialog == error
#        Abort
#    ${EndIf}
#
#    StrCpy $Checkbox_Reg_State 0
#    StrCpy $Checkbox_UserDir 0
#
#    # if this key exists Subsurface was run at least once
#    ReadRegStr $UserDir HKCU "Software\Subsurface\Subsurface\GeneralSettings" "default_directory"
#    ${If} $UserDir != ""
#        # checkbox for removing registry entries
#        ${NSD_CreateCheckbox} 0 0u 100% 20u "Registry entries (HKEY_CURRENT_USER\Software\Subsurface)"
#        Pop $Checkbox_Reg
#        GetFunctionAddress $0 un.OnCheckbox_Reg
#        nsDialogs::OnClick $Checkbox_Reg $0
#
#        ${If} ${FileExists} "$UserDir\*.*"
#            # checkbox for removing the user directory
#            ${NSD_CreateCheckbox} 0 20u 100% 20u "User directory ($UserDir)"
#            Pop $Checkbox_UserDir
#            GetFunctionAddress $0 un.OnCheckbox_UserDir
#            nsDialogs::OnClick $Checkbox_UserDir $0
#       ${EndIf}
#    ${EndIf}
#
#    nsDialogs::Show
#FunctionEnd
#
#Function un.OnCheckbox_Reg
#    ${NSD_GetState} $Checkbox_Reg $Checkbox_Reg_State
#FunctionEnd
#Function un.OnCheckbox_UserDir
#    ${NSD_GetState} $Checkbox_UserDir $Checkbox_UserDir_State
#    ${If} $Checkbox_UserDir_State == 1
#       MessageBox MB_OK "WARNING!$\nMake sure you don't have important files in the user directory!"
#    ${EndIf}
#FunctionEnd

#--------------------------------
# Pages

    # Installer pages
    !insertmacro MUI_PAGE_LICENSE "gpl-2.0.txt"
    !insertmacro MUI_PAGE_DIRECTORY
    !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
    !insertmacro MUI_PAGE_INSTFILES

    # Uninstaller pages
    !insertmacro MUI_UNPAGE_CONFIRM
#    UninstPage custom un.UninstallOptions
    !insertmacro MUI_UNPAGE_INSTFILES

#--------------------------------
# Languages

    !insertmacro MUI_LANGUAGE "English"

Section
    SetShellVarContext all

    # Installation path
    SetOutPath "$INSTDIR"

    # Delete any already installed DLLs to avoid buildup of various
    # versions of the same library when upgrading
    Delete "$INSTDIR\*.dll"

    # Files to include in installer
    # now that we install into the staging directory and try to only have
    # the DLLs there that we depend on, this is much easier
    File smtk2ssrf.exe
#    File /r data
#    File /r theme
#    File /r images
    File /r plugins
#    File /r Documentation
#    File /r translations
#    File /r printing_templates
#    File /r grantlee
    File *.dll
    File subsurface.ico
    File qt.conf

    # Store installation folder in registry
    WriteRegStr HKCU "Software\Smtk2ssrf" "" $INSTDIR

    # Create shortcuts
    !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
        CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
        CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Smtk2ssrf.lnk" "$INSTDIR\smtk2ssrf.exe" "" "$INSTDIR\subsurface.ico" 0
        CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall Smtk2ssrf.lnk" "$INSTDIR\Uninstall_smtk2ssrf.exe"
        CreateShortCut "$DESKTOP\Smtk2ssrf.lnk" "$INSTDIR\smtk2ssrf.exe" "" "$INSTDIR\subsurface.ico" 0
    !insertmacro MUI_STARTMENU_WRITE_END

    # Create the uninstaller
    WriteUninstaller "$INSTDIR\Uninstall_smtk2ssrf.exe"

    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
        "DisplayName" "Smtk2ssrf"
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
        "DisplayIcon" "$INSTDIR\subsurface.ico"
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
        "UninstallString" "$INSTDIR\Uninstall_smtk2ssrf.exe"
    WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf" \
        "DisplayVersion" ${SUBSURFACE_VERSION}

SectionEnd

#--------------------------------
# Uninstaller section

Section "Uninstall"
    SetShellVarContext all

    # Delete installed files
    Delete "$INSTDIR\*.dll"
    Delete "$INSTDIR\freetype-config"
    Delete "$INSTDIR\smtk2ssrf.exe"
    Delete "$INSTDIR\subsurface.ico"
    Delete "$INSTDIR\Uninstall_smtk2ssrf.exe"
    Delete "$INSTDIR\qt.conf"
#    RMDir /r "$INSTDIR\share"
#    RMDir /r "$INSTDIR\data"
#    RMDir /r "$INSTDIR\theme"
#    RMDir /r "$INSTDIR\images"
#    RMDir /r "$INSTDIR\translations"
#    RMDir /r "$INSTDIR\oldshare"
    RMDir /r "$INSTDIR\plugins"
#    RMDir /r "$INSTDIR\Documentation"
#    RMDir /r "$INSTDIR\printing_templates"
#    RMDir /r "$INSTDIR\grantlee"
    RMDir "$INSTDIR"

    # Remove shortcuts
    !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
    Delete "$SMPROGRAMS\$StartMenuFolder\Smtk2ssrf.lnk"
    Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Smtk2ssrf.lnk"
    RMDir "$SMPROGRAMS\$StartMenuFolder"
    Delete "$DESKTOP\Smtk2ssrf.lnk"

    # remove the registry entires
    ${If} $Checkbox_Reg_State == 1
        DeleteRegKey HKCU "Software\Smtk2ssrf"
    ${EndIf}

    # remove the user directory
    ${If} $Checkbox_UserDir_State == 1
    ${AndIf} $UserDir != ""
    ${AndIf} ${FileExists} "$UserDir\*.*"
        RMDir /r $UserDir
    ${EndIf}

    # remove the uninstaller entry
    DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Smtk2ssrf"

SectionEnd
