From 9deb33139952e8bad9379c05a3b4d1a792875975 Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 17 Apr 2015 15:27:19 +0200 Subject: [PATCH] Remember last install dir on windows. Fixes #4806 --- dist/windows/clementine.nsi.in | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in index 4a9f1a041..236999b5d 100644 --- a/dist/windows/clementine.nsi.in +++ b/dist/windows/clementine.nsi.in @@ -6,8 +6,9 @@ !define PRODUCT_DISPLAY_VERSION "@CLEMENTINE_VERSION_DISPLAY@" !define PRODUCT_DISPLAY_VERSION_SHORT "@CLEMENTINE_VERSION_DISPLAY@" !define PRODUCT_WEB_SITE "http://www.clementine-player.org/" +!define PRODUCT_ROOT_KEY "HKLM" +!define PRODUCT_INST_KEY "Software\Clementine" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" @NORMAL@!define PRODUCT_INSTALL_DIR "$PROGRAMFILES\Clementine" @PORTABLE@!define PRODUCT_INSTALL_DIR "C:\Clementine" @@ -106,6 +107,11 @@ SetCompressor /SOLID lzma Name "${PRODUCT_NAME}" OutFile "${PRODUCT_NAME}Setup-@CLEMENTINE_VERSION_SPARKLE@.exe" InstallDir "${PRODUCT_INSTALL_DIR}" + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey ${PRODUCT_ROOT_KEY} ${PRODUCT_INST_KEY} "Install_Dir" + ShowInstDetails show ShowUnInstDetails show @NORMAL@RequestExecutionLevel admin @@ -114,7 +120,7 @@ ShowUnInstDetails show ; Check for previous installation, and call the uninstaller if any Function CheckPreviousInstall - ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString" + ReadRegStr $R0 ${PRODUCT_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString" StrCmp $R0 "" done MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ @@ -336,6 +342,9 @@ Section "Clementine" Clementine @NORMAL@ StrCpy $R0 $0 @NORMAL@ IntCmp $R0 6 HasDefaultPrograms NoDefaultPrograms HasDefaultPrograms +; Write the installation path into the registry +@NORMAL@ WriteRegStr HKLM SOFTWARE\NSIS_Example2 "Install_Dir" "$INSTDIR" + @NORMAL@ HasDefaultPrograms: @NORMAL@ ; Register Clementine with Default Programs @NORMAL@ Var /GLOBAL AppIcon @@ -1029,14 +1038,14 @@ Section "Uninstaller" ; Create uninstaller WriteUninstaller "$INSTDIR\Uninstall.exe" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\clementine.ico" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_DISPLAY_VERSION}" -@NORMAL@ WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMajor" "${PRODUCT_VERSION_MAJOR}" -@NORMAL@ WriteRegDWORD ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMinor" "${PRODUCT_VERSION_MINOR}" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" -@NORMAL@ WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\Uninstall.exe" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\clementine.ico" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_DISPLAY_VERSION}" +@NORMAL@ WriteRegDWORD ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMajor" "${PRODUCT_VERSION_MAJOR}" +@NORMAL@ WriteRegDWORD ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "VersionMinor" "${PRODUCT_VERSION_MINOR}" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" +@NORMAL@ WriteRegStr ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" SectionEnd Section "Uninstall" @@ -1777,7 +1786,8 @@ Section "Uninstall" @NORMAL@ RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}" ; Remove the entry from 'installed programs list' -@NORMAL@ DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" +@NORMAL@ DeleteRegKey ${PRODUCT_ROOT_KEY} "${PRODUCT_UNINST_KEY}" +@NORMAL@ DeleteRegKey ${PRODUCT_ROOT_KEY} "${PRODUCT_INST_KEY}" ; Check the OS. If Vista or newer, use Default Programs @NORMAL@ nsisos::osversion