X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/64e07c22d469641c92c337ddd7a02e21df1879f6..5d8d505a9349568597e7bfa5c2e40220ff25b851:/win32/installer/viking-installer.nsi diff --git a/win32/installer/viking-installer.nsi b/win32/installer/viking-installer.nsi index 166c939e..98ebf789 100644 --- a/win32/installer/viking-installer.nsi +++ b/win32/installer/viking-installer.nsi @@ -10,14 +10,21 @@ Var name ;-------------------------------- ;Configuration ;Needs to be 4 numbers: W.X.Y.Z -!define VIKING_VERSION "1.5.0.0" +!define VIKING_VERSION "1.6.1.0" ;The name var is set in .onInit Name $name +;Allow overiding location of binary components for the install +!ifndef BINARIES + !define BINARIES ".\bin" +!endif + OutFile "viking-${VIKING_VERSION}.exe" -SetCompressor /SOLID lzma +;NB Using /SOLID method on a mingw32 setup seems to generate an exe that fails the CRC check +;So now don't set the compressor here - it can be set by the calling command/script if necessary. +;SetCompressor /SOLID bzip2 ShowInstDetails show ShowUninstDetails show SetDateSave on @@ -90,7 +97,7 @@ VIAddVersionKey "FileDescription" "Viking Installer" ;Pages !insertmacro MUI_PAGE_WELCOME - !insertmacro MUI_PAGE_LICENSE ".\bin\COPYING_GPL.txt" + !insertmacro MUI_PAGE_LICENSE "${BINARIES}\COPYING_GPL.txt" !insertmacro MUI_PAGE_COMPONENTS ; Viking install dir page @@ -139,7 +146,7 @@ VIAddVersionKey "FileDescription" "Viking Installer" ;; Start Install Sections ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LicenseData ".\bin\COPYING_GPL.txt" +LicenseData "${BINARIES}\COPYING_GPL.txt" LicenseForceSelection checkbox ;-------------------------------- @@ -202,6 +209,7 @@ Section -SecUninstallOldViking done: SectionEnd + ;-------------------------------- ;Viking Install Section @@ -218,28 +226,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 +241,34 @@ 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 ${BINARIES}\viking* + File ${BINARIES}\g*.exe + File ${BINARIES}\*.dll + File ${BINARIES}\*.txt + File ${BINARIES}\magic.mgc + File /r ${BINARIES}\data + File /r ${BINARIES}\locale + + ; 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 @@ -297,9 +316,9 @@ SectionEnd ; GPSBabel Install Section ; Section $(VIKING_GPSBABEL_SECTION_TITLE) SecGPSBabel - File "bin\Optional\GPSBabel-1.5.1-Setup.exe" - ExecWait '"$INSTDIR\GPSBabel-1.5.1-Setup.exe" /SILENT' - Delete "$INSTDIR\GPSBabel-1.5.1-Setup.exe" + File "${BINARIES}\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 ;-------------------------------- @@ -332,8 +351,28 @@ 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\locale" + RMDir "$INSTDIR" ; Shortcuts.. Delete "$DESKTOP\Viking.lnk" @@ -429,8 +468,8 @@ Function ${UN}RunCheck FunctionEnd !macroend -!insertmacro RunCheckMacro "" -!insertmacro RunCheckMacro "un." +;!insertmacro RunCheckMacro "" +;!insertmacro RunCheckMacro "un." ;Installer extra configuration at execution time: language, path, ... Function .onInit @@ -440,7 +479,7 @@ Function .onInit Push $R2 ;Check if viking is running - Call RunCheck + ;Call RunCheck StrCpy $name "Viking ${VIKING_VERSION}" ClearErrors @@ -524,7 +563,7 @@ FunctionEnd Function un.onInit ;Check if viking is running - Call un.RunCheck + ;Call un.RunCheck StrCpy $name "Viking ${VIKING_VERSION}" ; Get stored language preference