I am InstallShield developer and recently encountered a strange scenario on my client's machine in which our customer's InstallShield application goes on major upgrade while I am trying to do a fresh install. Details are as follow:

  1. I tried to install my application which has been developed through InstallShield. It detected previous version on the target machine and went on major upgrade scenario but upgrade failed as there is no previous version on my machine.

  2. I checked the verbose logs and value of "IS_MAJOR_UPGRADE" is set to be "Yes"

  3. I checked add/remove programs but no entry found. I also checked the uninstall hive of registry editor but that also didn't contain any entry of my product (any of its previous version)

  4. I checked for all the binaries that get installed through my product and manually deleted them from the machine (registry and files) but still it goes on upgrade.

  5. I checked the location "C:\Windows\Installer" for any msi related to my product but none found there.

  6. I checked for the cached msi in "C:\Windows\Downloaded Installations" and deleted it from there too but then also my product is detecting the previous version on the machine.

Can anybody help that what may be the possible reason for its setting the MSI property "IS_MAJOR_UPGRADE"="Yes" as I have I searched all the possible locations on my the machine where anything related to my product could be found but still it is picking up the previous version details from somewhere?

2

There are 2 best solutions below

2
On

Vyom,

Your log file should identify the uninstallcode that it identifies for the upgrade. The long and short is that there is some type of registry left-overs for that product. If the log file includes the uninstall guid then try searching for that guid in your entire registry, especially if your application supports per-user installs.

1
On

You checked all the places except the one that matters. An MSI can have it's cached MSI deleted it doesn't matter. An MSI can use ARPSYSTEMCOMPONENT property to not put an entry in ARP. It doesn't matter. You can delete the installation directory. It .... (find I'll stop).

MSI keeps track of it's state data under HKCR\Installer\Products using something called Darwin Descriptors.

http://druss.co/2013/10/darwin-descriptor-guid-converter/

Start your install and cancel at the welcome dialog. Now take a look at your verbose log and show what FindRelatedProducts is reporting. It will tell you the name of the product code that it is finding. You can then write a program to query MSI to get information on that product or calculate the darwin descriptor and go look it up in the registry.