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
This commit is contained in:
Geert Janssens 2012-01-27 20:09:55 +00:00
parent 6ad0ab7426
commit 1d8e85e8e7

View File

@ -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 }