Minor Upgrade breaks Uninstall
Hi, I have a little problem trying to build a minor update for my application.
Installation of the minor upgrade works fine and I also followed all "rules", adding several new components but not removing any existing feature, component or key file.
The problem arises when I try to uninstall the application. Once the minor upgrade is installed, uninstallation doesn't work anymore and always asks for the original MSI file (not the one of the upgrade).
Setup and the Upgrade are different InstallShield projects but with the same name, upgrade code, product code. Also the features and components are identical (except for the new components), so I think this shouldn't be an issue.
Major upgrades work well with the same upgrade project. The big difference to major upgrades is that in my minor upgrade I don't ship all the files but only the changed ones.
I was wondering if the problem could come from components using dynamic file linking. As far as I could read, with dynamic file linking a random file will be chosen as the key file - and of course, as I only ship a few files with my minor upgrade, chances are high the file isn't there in the upgrade, so the chosen key file might be a different one.
Am I right that this is the cause of my trouble? Would there be any solution to it except for always shipping major upgrades with all files included? Unfortunately I can't get rid of dynamic file linking for my project.
As documented below, dynamic file linking has several limitations. But I am not sure if this would be the root cause for your problem.
If the prompt for original file name during installation is shown on all machines, then it could be something to do with the way you designed your MSI and minor updates. Probably directory paths to the old MSI are getting altered by your minor update.
If it happens only on particular machine, then your cached original MSI is missing for some reason on that machine (C:\Windows\Installer)
thank you for your response.
The issue occured on all machines.
In the meantime, because I couldn't fix the issue, I just changed my update to a major upgrade. In order to be able to ship only the changed items, I create a backup of the program folder at the beginning of the installation and restore it after the RemoveExistingProducts action. It's not the ideal way but it seems to work well.
You can try and use the "Previous Package" setting which is found under the Build Tab in releases.
Using this will cause Installshield to attempt to make file keys consistent across your releases. In addition it will try and match the component GUID's as these are changed each time you build with dynamic file linking which breaks Minor Upgrade rules.
In the meantime I found the reason for my problem.
I had set REINSTALLMODE=vamus and REINSTALL=ALL and created a Setup.exe instead of plain MSI. It appears with a Setup.exe while REINSTALLMODE setting is ignored (due to InstallShield's Setup.ini overriding it), REINSTALL=ALL will simply break the uninstallation although according to the logfile Setup.exe is calling the MSI with the same parameter, so even if I don't set it it's still there.
I don't know why this is the case but removing the REINSTALL property solved the issue.