Dear Advanced Installer team,
I'm a bit stuck in the following situation:
We have a merge module of a service that is shared between different applications. This service is implemented in .NET Core, and therefore many .dll files are accompanied by a .deps.json file.
In hindsight, every .deps.json file should have been added to the component of its .dll, and made a companion. Unfortunately, we went with the default layout, and all unversioned files are bundled in one component. Its key file is also one of the json files. There are already some MSIs published with this merge module, so we can't change that.
If a user installs an application that contains an older version of this merge module, alongside an already installed and more recent one, the dlls are not downgraded, but the json files are. This is expected according to the file versioning rules, but this also breaks the installation. What I've tried so far:
- Check that the component ID and key file are still the same.
- Give the files an explicit version number. This is only used during installation, so the old one overwrites them.
- Make the files companion of a DLL. The old installer overwrites them, and I suspect this is because the referenced DLL is in another component. (The key file cannot be a companion, so that one will be overwritten no matter what -- but I could work around that.)
- Add a dummy DLL to the component just for the version number, and make them companions of that one. They still get overwritten, and I guess it's because the old installer doesn't know about this dummy DLL.
- Turn on "shared amongst packages". No dice, still end up with the old jsons.
What do you advise?
Thanks!
Jeroen