Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSI upgrades leave files behind #57

Closed
chrullrich opened this issue Sep 29, 2024 · 4 comments
Closed

MSI upgrades leave files behind #57

chrullrich opened this issue Sep 29, 2024 · 4 comments

Comments

@chrullrich
Copy link
Contributor

chrullrich commented Sep 29, 2024

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.
@davecramer
Copy link
Contributor

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

@chrullrich
Copy link
Contributor Author

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

@davecramer
Copy link
Contributor

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

@chrullrich
Copy link
Contributor Author

Fixed by #66.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants