Re: Upgrading by double-clicking the .msi

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
Cc: "pgsql-odbc(at)postgresql(dot)org" <pgsql-odbc(at)postgresql(dot)org>
Subject: Re: Upgrading by double-clicking the .msi
Date: 2014-06-25 07:55:35
Message-ID: CA+OCxozVruHGf9GHEV1JWvsBeNXNGZGZnecf4RQ9+G-hs5MafA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

On Tue, Jun 24, 2014 at 9:49 AM, Heikki Linnakangas
<hlinnakangas(at)vmware(dot)com> wrote:
> Upgrading the driver by double-clicking the new .msi file doesn't work:
>
> "Another version of this product is already installed."
>
> That's why we include the upgrade.bat file, which uses the right flags to
> msiexec to force reinstallation over the old version. But that's not very
> user-friendly.
>
> To fix that, we need to use the Windows Installer "major upgrade" feature.
> Browsing the web on this subject, most people seem to recommend treating
> every upgrade as a major upgrade, because that's the simplest method.
> Dealing with Minor or Small upgrades properly would require much more work,
> while a major upgrade just removes the old installation and installs the new
> one. For a small product like psqlODBC, that works fine.
>
> I'm following the WiX tutorial at
> http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html
> on how to do that. Fortunately we already include an UpgradeCode and
> ProductId.
>
> So all we need to do is to add a MajorUpgrade tag to the .wxs file:
>
> <MajorUpgrade
> Schedule="afterInstallInitialize"
> DowngradeErrorMessage="A later version of the driver is already
> installed. Setup will now exit.">
>
> And whenever we ship a new version, we must update the product code.
>
> Any objections? We'll need to somehow automate the generation of product
> codes. I'll try to figure out how to do that with MSBuild.

There was a good reason why that was done originally, but I forget the
details (Magnus may well remember). I vaguely recall that it was to do
with having the ability to have major versions installed side-by-side,
but that may be a hangover from when the installer code originally
came from the old PostgreSQL MSI packages where that was essential
(with psqlODBC, I'm not even sure it'll work, as the driver names are
not currently versions as far as I'm aware).

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message Craig Ringer 2014-06-25 14:12:40 Re: Upgrading by double-clicking the .msi
Previous Message Heikki Linnakangas 2014-06-25 07:47:27 Re: Upgrading by double-clicking the .msi