]> git.street.me.uk Git - andy/viking.git/commitdiff
[WINDOWS] Various install improvements.
authorRob Norris <rw_norris@hotmail.com>
Tue, 14 Oct 2014 23:44:36 +0000 (00:44 +0100)
committerRob Norris <rw_norris@hotmail.com>
Wed, 15 Oct 2014 00:21:14 +0000 (01:21 +0100)
Use common settings for HKLM/HKCU -> SHCTX
Set more values for install information:
. Program icon
. Work out the install size
. URLs
. Comment (with translations)
Return to removing installed files rather than forced directory removal
 (as this may have bad side effects)

win32/installer/langmacros.nsh
win32/installer/translations/english.nsh
win32/installer/translations/french.nsh
win32/installer/translations/spanish.nsh
win32/installer/viking-installer.nsi

index e4822cf69d143592a3e7ed335dc33ea46c5657d3..d0029000917bbc2dfaaa4b4dad6443b315afa17b 100644 (file)
@@ -60,6 +60,8 @@
   !insertmacro VIKING_MACRO_LANGSTRING_INSERT un.VIKING_UNINSTALL_ERROR_1              ${CUR_LANG}
   !insertmacro VIKING_MACRO_LANGSTRING_INSERT un.VIKING_UNINSTALL_ERROR_2              ${CUR_LANG}
 
+  !insertmacro VIKING_MACRO_LANGSTRING_INSERT VIKING_UNINSTALL_COMMENTS                ${CUR_LANG}
+
   !undef CUR_LANG
 !macroend
 
index 043fc6525ded037c0fe3ea828c37a61b26144fe9..f8efcc11be35ebe7cc277569ec78fd72f94c2a59 100644 (file)
@@ -44,3 +44,5 @@
 ; Uninstall Section Prompts
 !insertmacro VIKING_MACRO_DEFAULT_STRING un.VIKING_UNINSTALL_ERROR_1           "The uninstaller could not find registry entries for Viking.$\rIt is likely that another user installed this application."
 !insertmacro VIKING_MACRO_DEFAULT_STRING un.VIKING_UNINSTALL_ERROR_2           "You do not have permission to uninstall this application."
+
+!insertmacro VIKING_MACRO_DEFAULT_STRING VIKING_UNINSTALL_COMMENTS                     "GPS data editor and analyser"
index f70c4c3db51bfcbff045eee70ad884382cb5de3f..e394e9f2bfec103029b316e9b359ea264489e307 100644 (file)
@@ -45,3 +45,5 @@
 ; Uninstall Section Prompts
 !define un.VIKING_UNINSTALL_ERROR_1            "Le programme de désinstallation n'a pas retrouvé les entrées de Viking dans la base de registres.$\rL'application a peut-être été installée par un utilisateur différent."
 !define un.VIKING_UNINSTALL_ERROR_2            "Vous n'avez pas les permissions pour supprimer cette application."
+
+!define VIKING_UNINSTALL_COMMENTS              "D'édition et d'analyse de données GPS"
index 4d2ef08a5d064ad8a2417519043d671e80700624..cc27c48e52cb9015ca838a81ef06cea36f4c5222 100644 (file)
@@ -44,3 +44,5 @@
 ; Uninstall Section Prompts\r
 !define un.VIKING_UNINSTALL_ERROR_1            "El programa de desinstalación no ha encontrado las entradas de Viking en la base de registros.$\rLa aplicación quizá haya sido instalada por un usuario distinto."\r
 !define un.VIKING_UNINSTALL_ERROR_2            "Usted no tiene los permisos necesarios para suprimir esta aplicación."\r
+\r
+!define VIKING_UNINSTALL_COMMENTS              "Edición y de análisis de datos GPS"\r
index 166c939e9bffade4590f78e6d4229ede5e543d23..3f5b5e08e147b7c583675b85eaf99516ed1cdad4 100644 (file)
@@ -202,6 +202,7 @@ Section -SecUninstallOldViking
   done:
 SectionEnd
 
+
 ;--------------------------------
 ;Viking Install Section
 
@@ -218,28 +219,12 @@ Section $(VIKING_SECTION_TITLE) SecViking
   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!
@@ -249,7 +234,39 @@ Section $(VIKING_SECTION_TITLE) SecViking
     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
@@ -332,8 +349,32 @@ Section Uninstall
 
   cont_uninstall:
 
-    ;Simply wipe the Viking install dir
-    RMDir /r "$INSTDIR"
+    ; 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"
+    RMDir "$INSTDIR"
 
     ; Shortcuts..
     Delete "$DESKTOP\Viking.lnk"