aboutsummaryrefslogblamecommitdiffstats
path: root/packaging/windows/subsurface.nsi.in
blob: 24b502ff9eb41b816823da36d05028a4e94bcb6d (plain) (tree)
1
2
3
4
5
6
7
8
9
10


                                              
                         
                                                       

                                                                







                                 
                     
                                             
                                                         
                                                    

                                 
                                                    
                                                     









                                                        
                               
                                 
                     
                                                     
                                                                                     
                                                         
                                              
                                                            
                                 

















                                                                    
                                               














                                                                
       
                          
 

                         


                                                                   
                                   
                       
                  
                   
                         
                        
                  
                        
                      


                       
                    

                            
                            
                      
                     
                         
                 
                       
                





                                                      
                                                                                                                             
                                                                                                       
                                                                                                         



                                             




                                                                                       
                                                                                       
 




                                 
                          

                            
                                     
                                    
                                   
                             
                             
                            



                                     





                                                                     
                                    

                                                    
                                                                                      
          
#
# Subsurface NSIS installer script
#
# This installer creator needs to be run with:
# makensis subsurface.nsi
#
# It assumes that packaging/windows/dll is a symlink to
# the directory in which the required Windows DLLs are installed
# (in my case that's /usr/i686-w64-mingw32/sys-root/mingw/bin)
#

#--------------------------------
# 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 "Subsurface"
    Caption "Subsurface ${SUBSURFACE_VERSION} Setup"
    OutFile "..\subsurface-${SUBSURFACE_VERSION}.exe"

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

    # Default installation folder
    InstallDir "$PROGRAMFILES\Subsurface"

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

    # Request application privileges
    RequestExecutionLevel admin

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

    VIProductVersion "${SUBSURFACE_VIPRODUCTVERSION}"
    VIAddVersionKey "ProductName" "Subsurface"
    VIAddVersionKey "FileDescription" "Subsurface - an open source dive log program."
    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\Subsurface"
    !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"

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

    Var StartMenuFolder

#--------------------------------
# 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
    !insertmacro MUI_UNPAGE_INSTFILES

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

    !insertmacro MUI_LANGUAGE "English"

#--------------------------------
# Default installer section

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
    File subsurface.exe
    File /r data
    File /r images
    File /r plugins
    File /r Documentation
    File /r translations
    File iconv.dll
    File libpng16-16.dll
    File libjpeg-*.dll
    File libusb-1.0.dll
    File libxml2-2.dll
    File libxslt-1.dll
    File zlib1.dll
    File libzip*.dll
    File libsqlite3-0.dll
    File libgcc_s_sjlj-1.dll
    File libstdc++-6.dll
    File libmarblewidget*dll
    File libssl-10.dll
    File libeay32.dll
    File ssleay32.dll
    File libgit2.dll
    File libcrypto-10.dll
    File Qt*4.dll
    File subsurface.ico
    File qt.conf

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

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

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

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

SectionEnd

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

Section "Uninstall"
    SetShellVarContext all

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

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

    # Remove registry entries
    DeleteRegKey /ifempty HKCU "Software\Subsurface"
    DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Subsurface"

SectionEnd