View Full Version : Upgrade path not working

Louis Daoust
11-23-2001, 05:11 PM
Using InstallShield Express 3.5

I am trying to figure out how to get my installation upgrade a previous installation.

I have build a setup and install that installation. Then i have change the Product Code and Product Version and added an upgrade path with proper information. But when i install this build it still asks me for the destination folder. I looked in the registry in the uninstall key for my product code and noticed that the InstallLocation key is empty. I also noticed that in the App Paths there is no entry for the path of the installation

I tried the following:
Create a registry entry for the App Paths with the name of my app. Then use this registry key as the destination folder for my installation as explained in the help. The registry key did get created but when i tried and upgrade the installation directory is not set to the Default value of this key as it is mentionned in the help. I also thought about setting the InstallLocation key value by adding a registry entry with the {GUID} but go a message that this key name had invalid characters and also think that this is something that should be handled by the installation program automatically.
My questions:
1) Why is it asking me for a destination folder since it is an upgrade to an existing installation ? If it should ask me for an installation path then it should at least put the current installation path that the installation was installed in.:mad:

2) Why is the InstallLocation key empty in the Uninstall key
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}) ?:mad:

3) Why isn't there an entry in the App Paths for my installation.
((HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myappname) ?

thanks for your help.

11-26-2001, 10:33 AM
I don't see why it should ask you for the install location. Did you by any chance distribute your previous version with the BDE merge module? Was the previous version installed as a Compressed Single Exe file?

Louis Daoust
11-26-2001, 11:12 AM
Originally posted by Chandima
I don't see why it should ask you for the install location. Did you by any chance distribute your previous version with the BDE merge module? Was the previous version installed as a Compressed Single Exe file?

No, i am not using the BDE merge module.
Yes, i am building single image installations.

Are you saying that it should not have asked for the location ?
Can you tell me what i should have seen in the installation process when upgrading my previous installation ?

Heres something i noticed.
When doing the installation that should be an upgrade, i see in the first dialog says 'Searching for related application'...'Found application : {GUID}.' which does correspond to my previous installation. But then, after welcome dialog, it asks for installation path. But how could it not ask for installation path since i dont see in the registry an entry specifying where it was installed ? (I mentionned that in original post).

Could someone confirm that this feature is working properly so i know it must be something i am doing wrong.


11-27-2001, 11:36 AM
First of all, this feature works. Quite a few people have trouble configuring it, but once it is done, it works. You have it configured correctly because it actually finds your previous application.

What happens if you distribute your original version as a CD ROM Image and then try this Upgrade? You can still distribute it as a Single Image but you will have to make sure that (in Build Your Release) you specfiy the setup to "Cache the Msi" on the local machine.

Here is what I think happened. By default a Single Exe image will extract the msi to a temp location, install the product, and then delete the msi. So this might explain why there is no corresponding registry key, and why the msi can't be found. The setup should NOT look for the msi for an uninstall though (for a Repair it should). Anyway, if you use an uncompressed build, or have the msi cached on the local machine, even if it looks for the msi it will find it and not cause a break in the upgrade.

The expected behavior from a user perspective is, he/she runs Setup.exe. At the end of it the older version is completely removed and the newer version is installed.

Louis Daoust
11-27-2001, 12:43 PM
It's not working. Here's what i did:

1) I created a 'test1' project, did all steps without changing anything except specifying [INSTALLDIR] as [ProgramFilesFolder]\DECISION-PLUS\test and including one file to install (just to keep it as simple as possible). I built a SingleImage installation and then installed it in e:\isxtest, I changed the isnatllation destination just to test if the upgrade would find it.

2) I created a second project 'test2' from scratch. Changed the version to 1.00.0001. I added an upgrade path using the .msi of
project 'test1'. I built and installed, and still asks for destination path and shows 'C:\Program Files\DECISION-PLUS\test, which is the default.

* After this test, I modified the Upgrade Code in the General Information of 'test2' project to be the same as 'test1' project, as this is what is indicated in the help. But still does not work.

* The msi was copied on the local machine for both isntallations. It does ask me if i want to replace it when i install the second one, i tried reposnding with no, saving to another location and also tried by responding yes, overwtiting, but the result is the same, keeps asking for destination foler with the default which evaluates to C:\Program Files\DECISION-PLUS\test.

Can you tell me what it is suppose to do. Is it suppose to ask me for a destination if it finds an installed application to upgrade or just in the case there is no other application found ?

I feel i have followed everything in the manual and help, and did simple installations that dont use any special feature and really don't see what i am doing wrong.

I really need this to be working soon.


Louis Daoust
11-27-2001, 01:02 PM
I just tried this same test but building for CD_ROM instead of SingleImage and i get the same result. Installation of second project always asks me where i want to install.

Did you get it to work yourself ?
Can you tell me the steps you do to make it work, i will try the same.


11-27-2001, 03:40 PM
Oh... now I see what your problem is!!!

All this time I assumed the upgrade was launching a dialog asking you where the msi file of the first install was. For clarity I will call the original setup "Version1" and the Upgrade "Version2". Currently there is no functionality in Express which automatically sets "Version2"s INSTALLDIR (or install location) to the same as "Version1"s. You can achieve this however through a Custom Action. In Version1, in the Registry View, add a registry entry with the value of [INSTALLDIR]. So once you run the setup, this registry key will contain the location of wherever your user installs the program to.

Now in "Version2" go to dialogs view and remove the "Destination Folder" dialog. This will keep that dialog from popping up. Use a Custom Action at the very beginning of the Version2 setup, to set the value of INSTALLDIR to what is in the registry entry that the Version1 install created. This way Version2 will get installed to the same location that Version1 was installed on.

Louis Daoust
11-27-2001, 04:08 PM
ok, i understand that.

I also found the following in the ISX's help:

Upgrade paths are for major upgrades only. The Upgrade Paths view is only for upgrading an entire setup, and not for upgrading a few files (patching). If you need patching capabilities, consider upgrading to InstallShield Developer.. :rolleyes:

In other word I should consider giving out quite a few more $$$ just to get that capability that I can to with cutom actions in ISX :D

Well, I feel InstallShield Express should be able to upgrade a previous version, like 'patching' seems to be appropriate word for it.

Thanks for all your help. We got that point cleared out.