cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
maycockt
Level 3

Major upgrade does not uninstall previous version

Hi,

I'm new to installshield, and after having successfully created an installation and distributed it in house I find I'm needing to provide an upgrade.

My testing though has come up with a major flaw though - the upgrade process (and I have set to run a major upgrade, with always uninstall) is not uninstalling the previous version, and also is not overwriting the exe that was installed in the first place. So, after my upgrade, I'm left with the previous version, and no messages to tell me that the upgrade has failed.

When investigating the installed files, I'm finding that the newly created folder is read only.
Having discovered that my upgrade is not working, I also tried uninstalling the original installation, only to find that the exe and some registry entries are not uninstalled.

Is there a setting or 2 that I am missing that will
A) - Ensure the uninstallation removes all installed files, and
B) - Inform if the uninstallation / upgrade process has failed?

Tony
Labels (1)
0 Kudos
15 Replies
Lurean
Level 8

did you change your product code for the Major upgrade? If you don't change the product code it treats it as an update and not an upgrade.

Also for the files you are replacing, during an update if the file versions are the same it will leave the old one in place. During a major upgrade with uninstall previous version first it does not do file version comparisons.

As to files being left behind. This can be caused by the component IDs not matching for the components when doing an update or upgrade if the component is set to be a shared component, it will think the file is in use by more than one component and will be left behind.
0 Kudos
maycockt
Level 3

Hi Lurean,

I have set all the settings as you have suggested, but on further testing I am finding that even the original installation does not uninstall the initially installed exe file. So, without even trying to upgrade, I cannot uninstall the package as the uninstallation is leaving the original component.

Any suggestions?

Tony
0 Kudos
Lurean
Level 8

if you accidentally marked the original exe file's component in the orignal install as "Permanent" then it won't be uninstalled. But if the newer exe has an updated version number it still should be overwritten.
0 Kudos
schmoli
Level 6

maycockt wrote:
Hi Lurean,
Any suggestions?
Tony


If you could supply a verbose log, we could tell more more easily, and possibly give better input. (also the name of the exe or component in particular).
0 Kudos
PilotBob
Level 5

I am having this same issue. I know I've change the product codes. However, it doesn't seem to be doing the uninstall first.

Log attached.

BOb
0 Kudos
hari14singh
Level 5

Please check below points
1. May be your component is marked as Permanent
2. Try static linking of file in component instead of dynamic linking.
3. Are u deploying all file from component structure. If file are copied from supportdir or manually through install script it will not be removed automatically. For this use "Removefile" table
4. Check the sequence of custom action "RemoveExistingProducts"
5. Is your custom action or anything is setting REINSTALL=ALL? It will cause all the feature to be not selected for a first-time installation.
0 Kudos
PilotBob
Level 5

hari14singh wrote:
Please check below points
1. May be your component is marked as Permanent
2. Try static linking of file in component instead of dynamic linking.
3. Are u deploying all file from component structure. If file are copied from supportdir or manually through install script it will not be removed automatically. For this use "Removefile" table
4. Check the sequence of custom action "RemoveExistingProducts"
5. Is your custom action or anything is setting REINSTALL=ALL? It will cause all the feature to be not selected for a first-time installation.


1. None of my components are set as permanent.
2. All of my binary components are statically linked.
3. This is a Basic MSI project, I don't have an install script.
4. It is in the default location where a new project puts it, right after InstallValidate and the log does show that it ran.
5. No, I have nothing that manually sets that.

Normally when I do a major upgrade the previous install is removed fully first, then the new install is run. As stated above, that doesn't seem to be happening in this case... it is acting as if I had the major upgrade set to "install Setup then remove" rather than "completely uninstall before installing new version".

BOb
0 Kudos
hari14singh
Level 5

You need to put entry in Upgrade table. Is it already done?
0 Kudos
hari14singh
Level 5

I looked at your log...
it says upgrade table as

nstallShield 10:24:16: UpgradeCode: {BCAAAA51-B350-4B0C-B5C3-2EE2F04A9ECE} MinVersion: 1.0.0 MaxVersion: 7.1.0 Language: 1033 Attributes: 257


Change MaxVersion: 7.1.0 to 7.1.1 as your product version itself is 7.1.0
0 Kudos
PilotBob
Level 5

hari14singh wrote:
I looked at your log...
it says upgrade table as

nstallShield 10:24:16: UpgradeCode: {BCAAAA51-B350-4B0C-B5C3-2EE2F04A9ECE} MinVersion: 1.0.0 MaxVersion: 7.1.0 Language: 1033 Attributes: 257


Change MaxVersion: 7.1.0 to 7.1.1 as your product version itself is 7.1.0


Yes, I have a major upgrade version.

I have the UI set to "Any previous version" so IS is putting in those numbers. I don't need it to update itself.

BOb
0 Kudos
hari14singh
Level 5

Attributes: 257 , means not to include higher version, change this attribue or the version entry of upgrade table. This seems causing the problem

You can refer
http://msdn.microsoft.com/en-us/library/windows/desktop/aa372379(v=vs.85).aspx
0 Kudos
PilotBob
Level 5

hari14singh wrote:
Attributes: 257 , means not to include higher version, change this attribue or the version entry of upgrade table. This seems causing the problem

You can refer
http://msdn.microsoft.com/en-us/library/windows/desktop/aa372379(v=vs.85).aspx


Version 6.5.3 is on the PC. That is certainly in the range of 1.0.0 thru 7.1.0 inclusive of 1.0.0.

Also, I have the InstallShield options of "Any Previous Version" which set up the Upgrade table.

Also, this works if I install over 7.0.0 but not if I install over 6.5.3. Also, the log seems to indicate that the version IS found. So, why isn't it 100% removed before files are copied over? This is what is confusing me.

BOb
0 Kudos
Olaf_Gehrmann
Level 2

Hello!
Researching the internet, I found this thread here and have the same problem with InstallShield 2010.
All settings of upgrade table entries and co were done and rechecked, as mentioned before.
But, I won't uninstall any previous versions and there is no scenario, that helps here...
Maybe, somebody else, had this problem and found the reason??

Here in my case, I update from a version 12.0.9 to 13.0.0.
UpgradeCodes fit and tables are properly set.
File and production version are checked and new product code was created, as well...

So, this issue is quite critical for me and it seems so, that I'm the only one on this planet here, want to perform such an upgrade??

Best to all,
Olaf
0 Kudos
PilotBob
Level 5

There can be several reasons why it won't upgrade. Look at you installer log.

One issue we had was a previous install was per user and the new installer was per machine.

Sometimes that happens. There is just something in the old installer that prevents it from working properly. The only way around this is to put a custom action in your installer to check for your previous version.. and it it is there request the user uninstall it first manually.

This actually is what occurred in my case above. A previous update should have had a new product code because a component was removed (or something that required a major update) but I didn't change the product code. So, subsequent upgrades didn't work properly since that latent error resided in a previous installer.

BOb
0 Kudos
aiernt
Level 2

I too found this thread and none of these suggestions had worked with my project either. I had orphaned files and folders sitting in my install directory. After doing a lot of research I found that I had some orphaned registry entries for these files in the following key.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls

Once I deleted the offending values in here, when I uninstalled my app, it uninstalled everything. When I upgraded my app using a Major upgrade it did what it was supposed to do.

I have hundreds of dynamically linked files that, due to time contraints, is not feasible to statically link. We're trying to do more with less these days, and I'm not a full time installshield dev so it's a necessary evil in the REAL world. Hope this helps someone...
0 Kudos