Subject: [postgresql-interfaces/psqlodbc] issue #57: MSI upgrades leave files behind

From: "chrullrich (@chrullrich)" <[email-masked]>
Date: Sun, 29 Sep 2024 17:54:56 +0000

I just noticed that a previous upgrade of psqlODBC left some files behind in the installation directory, specifically the OpenSSL 1.1 libraries (libssl-1_1 and libcrypto-1_1). The reason is that the MSI packages violate the holy writ of Windows Installer, also known as the "component rules". The gist of those is that whenever the contents of a component (`<Component>` in WiX) change, the component's GUID must also change.

See, e.g., https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/windows-installer-basics and https://robmensching.com/blog/posts/2003/10/18/component-rules-101/.

Because the component codes are hardcoded and have not changed in a long time, and because the packages are authored so `RemoveExistingProducts` happens after `InstallFinalize`, that action never does anything. The set of components installed on the system does not change across the installation as far as Windows Installer is concerned, so `RemoveExistingProducts` does nothing. Any preexisting files that are not in the new version of the package are left behind.

There are two possible fixes, listed here in order of preference:

1. Do not hardcode the component codes, but leave them up to WiX. (While you're at it, do not hardcode anything else but the upgrade codes either.)
2. Schedule `RemoveExistingProducts` after `InstallInitialize`. This will remove the old files before installing the new ones. See https://wixtoolset.org/docs/v3/xsd/wix/majorupgrade/ for more information on scheduling this action.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Tue, 01 Oct 2024 13:06:10 +0000

I will take any assistance in fixing the installation code. Feel free to provide pull requests

---

From: "chrullrich (@chrullrich)" <[email-masked]>
Date: Tue, 01 Oct 2024 13:37:28 +0000

Certainly. I will try to get my head wrapped around the build procedure. That will probably take until the weekend.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Thu, 03 Oct 2024 11:48:28 +0000

thanks!
One thing is that I would ideally like to release on ARM and for than require wix4

---

From: "chrullrich (@chrullrich)" <[email-masked]>
Date: Tue, 15 Oct 2024 12:18:13 +0000

Fixed by #66.