;--------------------------------
;Configuration
+;Needs to be 4 numbers: W.X.Y.Z
+!define VIKING_VERSION "1.6.0.0"
;The name var is set in .onInit
Name $name
!include "Sections.nsh"
!include "WinVer.nsh"
!include "LogicLib.nsh"
+;; http://nsis.sourceforge.net/File_Association
+!include "FileAssociation.nsh"
!include "FileFunc.nsh"
!insertmacro GetParameters
!define HKLM_APP_PATHS_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\viking.exe"
!define VIKING_UNINST_EXE "viking-uninst.exe"
-!define DOWNLOADER_URL "http://downloads.sourceforge.net/viking/"
-
;--------------------------------
;Version resource
VIProductVersion "${VIKING_VERSION}"
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "French"
+ !insertmacro MUI_LANGUAGE "Spanish"
;--------------------------------
;Translations
!insertmacro VIKING_MACRO_INCLUDE_LANGFILE "ENGLISH" "${VIKING_NSIS_INCLUDE_PATH}\translations\english.nsh"
!insertmacro VIKING_MACRO_INCLUDE_LANGFILE "FRENCH" "${VIKING_NSIS_INCLUDE_PATH}\translations\french.nsh"
+ !insertmacro VIKING_MACRO_INCLUDE_LANGFILE "SPANISH" "${VIKING_NSIS_INCLUDE_PATH}\translations\spanish.nsh"
;--------------------------------
;Reserve Files
;; Start Install Sections ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+LicenseData ".\bin\COPYING_GPL.txt"
+LicenseForceSelection checkbox
+
;--------------------------------
;Uninstall any old version of Viking
done:
SectionEnd
+
;--------------------------------
;Viking Install Section
viking_hklm:
WriteRegStr HKLM "${HKLM_APP_PATHS_KEY}" "" "$INSTDIR\viking.exe"
WriteRegStr HKLM "${HKLM_APP_PATHS_KEY}" "Path" "$R1\bin"
- WriteRegStr HKLM ${VIKING_REG_KEY} "" "$INSTDIR"
- WriteRegStr HKLM ${VIKING_REG_KEY} "Version" "${VIKING_VERSION}"
- WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "DisplayName" "Viking"
- WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "DisplayVersion" "${VIKING_VERSION}"
- WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "HelpLink" "http://sourceforge.net/apps/mediawiki/viking/"
- WriteRegDWORD HKLM "${VIKING_UNINSTALL_KEY}" "NoModify" 1
- WriteRegDWORD HKLM "${VIKING_UNINSTALL_KEY}" "NoRepair" 1
- WriteRegStr HKLM "${VIKING_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\${VIKING_UNINST_EXE}"
; Sets scope of the desktop and Start Menu entries for all users.
SetShellVarContext "all"
Goto viking_install_files
;Install rights for Current User only
viking_hkcu:
- WriteRegStr HKCU ${VIKING_REG_KEY} "" "$INSTDIR"
- WriteRegStr HKCU ${VIKING_REG_KEY} "Version" "${VIKING_VERSION}"
- WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "DisplayName" "Viking"
- WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "DisplayVersion" "${VIKING_VERSION}"
- WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "HelpLink" "http://sourceforge.net/apps/mediawiki/viking/"
- WriteRegDWORD HKCU "${VIKING_UNINSTALL_KEY}" "NoModify" 1
- WriteRegDWORD HKCU "${VIKING_UNINSTALL_KEY}" "NoRepair" 1
- WriteRegStr HKCU "${VIKING_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\${VIKING_UNINST_EXE}"
Goto viking_install_files
;No install rights!
SetOutPath "$INSTDIR"
SetOverwrite on
- File /r .\bin\*.*
+ ; Common settings
+ WriteRegStr SHCTX ${VIKING_REG_KEY} "" "$INSTDIR"
+ WriteRegStr SHCTX ${VIKING_REG_KEY} "Version" "${VIKING_VERSION}"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "DisplayName" "Viking"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "DisplayVersion" "${VIKING_VERSION}"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "DisplayIcon" "$INSTDIR\viking_icon.ico"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "HelpLink" "http://sourceforge.net/p/viking/wikiallura"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "URLInfoAbout" "http://sourceforge.net/projects/viking/"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "Publisher" "The Viking developer community"
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "Comments" "$(VIKING_UNINSTALL_COMMENTS)"
+ WriteRegDWORD SHCTX "${VIKING_UNINSTALL_KEY}" "NoModify" 1
+ WriteRegDWORD SHCTX "${VIKING_UNINSTALL_KEY}" "NoRepair" 1
+ WriteRegStr SHCTX "${VIKING_UNINSTALL_KEY}" "UninstallString" "$INSTDIR\${VIKING_UNINST_EXE}"
+
+ ; Copy only specific items as now some components (e.g. GPSBabel) are optional.
+ ; This is mostly to get a more accurate install size value (especially as saved into the registry)
+ File .\bin\viking*
+ ; Not sure we really need any of the gtk executables but copy them anyway:
+ File .\bin\*.exe
+ File .\bin\*.dll
+ File .\bin\*.txt
+ File .\bin\magic.mgc
+ File /r .\bin\data
+ File /r .\bin\etc
+ File /r .\bin\gtk2-runtime
+ File /r .\bin\lib
+ File /r .\bin\locale
+ File /r .\bin\share
+
+ ; Estimate install size based on files in $INSTDIR
+ ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+ IntFmt $0 "0x%08X" $0
+ WriteRegDWORD SHCTX "${VIKING_UNINSTALL_KEY}" "EstimatedSize" "$0"
; If we don't have install rights we're done
StrCmp $R0 "NONE" done
WriteUninstaller "$INSTDIR\${VIKING_UNINST_EXE}"
SetOverwrite off
+ ; Always associate Viking file type
+ ${registerExtension} "$INSTDIR\viking.exe" ".vik" "Viking File"
done:
SectionEnd ; end of default Viking section
SectionEnd
SectionGroupEnd
+;--------------------------------
+;File association
+Section $(VIKING_FILE_ASSOCIATION_SECTION_TITLE) SecFileAssociation
+ ${registerExtension} "$INSTDIR\viking.exe" ".gpx" "GPX File"
+SectionEnd
-
-
-
-
-
-
-
-
+;--------------------------------
+; GPSBabel Install Section
+;
+Section $(VIKING_GPSBABEL_SECTION_TITLE) SecGPSBabel
+ File "bin\Optional\GPSBabel-1.5.2-Setup.exe"
+ ExecWait '"$INSTDIR\GPSBabel-1.5.2-Setup.exe" /SILENT'
+ Delete "$INSTDIR\GPSBabel-1.5.2-Setup.exe"
+SectionEnd
;--------------------------------
;Uninstaller Section
cont_uninstall:
+ ; http://nsis.sourceforge.net/Docs/Chapter4.html
+ ; Don't use:
+ ;RMDir /r "$INSTDIR"
+ ; Warning: is not safe. Can delete entire Program Files directory!
+
+ ; TODO try this method instead:
+ ; http://nsis.sourceforge.net/Uninstall_only_installed_files
+
+ ; Specific remove files
+ ; Thus alsos leaves any files the user has saved (particularly .vik or .gpx) into the Viking directory
+ Delete "$INSTDIR\viking-cache.py"
+ Delete "$INSTDIR\viking.pdf"
+ Delete "$INSTDIR\viking_icon.ico"
+ Delete "$INSTDIR\*.exe"
+ Delete "$INSTDIR\*.dll"
+ Delete "$INSTDIR\*.txt"
+ Delete "$INSTDIR\magic.mgc"
+ Delete "$INSTDIR\data\*txt"
+ Delete "$INSTDIR\data\*xml"
+ RMDir "$INSTDIR\data"
RMDir /r "$INSTDIR\etc"
+ RMDir /r "$INSTDIR\gtk2-runtime"
RMDir /r "$INSTDIR\lib"
RMDir /r "$INSTDIR\locale"
RMDir /r "$INSTDIR\share"
- Delete "$INSTDIR\AUTHORS.txt"
- Delete "$INSTDIR\Changelog.txt"
- Delete "$INSTDIR\COPYING_curl.txt"
- Delete "$INSTDIR\COPYING_GPL.txt"
- Delete "$INSTDIR\freetype6.dll"
- Delete "$INSTDIR\gpsbabel.exe"
- Delete "$INSTDIR\intl.dll"
- Delete "$INSTDIR\libatk-1.0-0.dll"
- Delete "$INSTDIR\libcairo-2.dll"
- Delete "$INSTDIR\libcurl.dll"
- Delete "$INSTDIR\libexpat.dll"
- Delete "$INSTDIR\libexpat-1.dll"
- Delete "$INSTDIR\libfontconfig-1.dll"
- Delete "$INSTDIR\libgailutil-18.dll"
- Delete "$INSTDIR\libgdk_pixbuf-2.0-0.dll"
- Delete "$INSTDIR\libgdk-win32-2.0-0.dll"
- Delete "$INSTDIR\libgio-2.0-0.dll"
- Delete "$INSTDIR\libglib-2.0-0.dll"
- Delete "$INSTDIR\libgmodule-2.0-0.dll"
- Delete "$INSTDIR\libgobject-2.0-0.dll"
- Delete "$INSTDIR\libgthread-2.0-0.dll"
- Delete "$INSTDIR\libgtk-win32-2.0-0.dll"
- Delete "$INSTDIR\libjpeg-7.dll"
- Delete "$INSTDIR\libpango-1.0-0.dll"
- Delete "$INSTDIR\libpangocairo-1.0-0.dll"
- Delete "$INSTDIR\libpangoft2-1.0-0.dll"
- Delete "$INSTDIR\libpangowin32-1.0-0.dll"
- Delete "$INSTDIR\libpng12-0.dll"
- Delete "$INSTDIR\libtiff-3.dll"
- Delete "$INSTDIR\libtiffxx-3.dll"
- Delete "$INSTDIR\NEWS.txt"
- Delete "$INSTDIR\README.txt"
- Delete "$INSTDIR\viking.exe"
- Delete "$INSTDIR\viking.pdf"
- Delete "$INSTDIR\zlib1.dll"
- Delete "$INSTDIR\${VIKING_UNINST_EXE}"
- Delete "$INSTDIR\install.log"
-
- ;Try to remove Viking install dir (only if empty)
RMDir "$INSTDIR"
; Shortcuts..
Delete "$DESKTOP\Viking.lnk"
+ ; File association
+ ${unregisterExtension} ".vik" "Viking File"
+ ${unregisterExtension} ".gpx" "GPX File"
+
Goto done
cant_uninstall:
$(VIKING_DESKTOP_SHORTCUT_DESC)
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenuShortcut} \
$(VIKING_STARTMENU_SHORTCUT_DESC)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecFileAssociation} \
+ $(VIKING_FILE_ASSOCIATION_DESC)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecGPSBabel} \
+ $(VIKING_INSTALL_GPSBABEL_DESC)
!insertmacro MUI_FUNCTION_DESCRIPTION_END