From 1d8e85e8e74e1877216b8c3afba44976db19849a Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Fri, 27 Jan 2012 20:09:55 +0000 Subject: [PATCH] Win32 installer: always remove previously installed versions. This avoids problems when libraries or reports have been moved around in newer versions. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21894 57a11ea4-9604-0410-9ed3-97b8803252fd --- packaging/win32/gnucash.iss.in | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packaging/win32/gnucash.iss.in b/packaging/win32/gnucash.iss.in index d199b19191..6a21a7b9ca 100644 --- a/packaging/win32/gnucash.iss.in +++ b/packaging/win32/gnucash.iss.in @@ -183,14 +183,14 @@ var PrevVersionMajor, PrevVersionMinor, PrevVersionMicro : Cardinal; Uninstallrequired : Boolean; -// ----------------------------------------------------------- +// ---------------------------------------------------------------- // Sometimes it's not possible to install a newer version of -// GnuCash over an older one on Windows. This is mostly the -// case when libraries are moved around in the newer version. +// GnuCash over an older one on Windows. This happens for example +// when libraries or reports are moved around in the newer version. // The code below will detect an existing GnuCash installation // and will remove it (if the user accepts) before installing // the version the user has selected. -// ----------------------------------------------------------- +// ---------------------------------------------------------------- { Lookup the registry information on a previous installation } procedure GetPrevInstallInfo(); @@ -219,10 +219,9 @@ begin RegQueryDwordValue(rootKey, sAppVersionPath, 'VersionMicro', PrevVersionMicro); end; -{ Check if there is another GnuCash currently installed } -{ and whether we can simply install over it or have to remove it first } -{ Versions are considered 'incompatible' if the major or minor } -{ version components are different } +{ Check if there is another GnuCash currently installed } +{ If so, the user will be prompted if it can be uninstalled first. } +{ If the user doesn't allow uninstall, the installation will be aborted. } procedure CheckUninstallRequired(); begin UninstallRequired := True; @@ -230,8 +229,11 @@ begin if (PrevUninstallString = '') then UninstallRequired := False - else if (PrevVersionMajor = @GNUCASH_MAJOR_VERSION@) and (PrevVersionMinor = @GNUCASH_MINOR_VERSION@) then - UninstallRequired := False; +// We used to check on major-minor versions to determine the uninstall requirement, +// but this is not always sufficient. So the following code won't be used until +// refined. +// else if (PrevVersionMajor = @GNUCASH_MAJOR_VERSION@) and (PrevVersionMinor = @GNUCASH_MINOR_VERSION@) then +// UninstallRequired := False; end; { Uninstall the current installation }