View Full Version : Major Upgrade not running ISSetAllUsers when built using Standalone Build

Aaron Young
08-16-2005, 11:23 AM
I seem to be having a heck of a time with Major upgrades since moving to InstallShield 11...

One of our products which is configured to perform a major upgrade was working fine in DevStudio 9, but since upgrading to InstallShield 11, the upgrade will only work, if the project is built from the full blown IDE.

When I build the project using the Standalone build, the previous version is not removed.

Looking at the logs, it would appear that the build done on the SAB machine doesn't execute the ISSetAllUsers action, so the old installation is detected, but because the current installation is "per-user" and the previous installation was "per-machine", it's skipped.

When I run the MSI generated from the same project but built in the I.S. 11 IDE, ISSetAllUsers is executed and the previous install is detected and removed.

When I look at the project, the ISSetAllUsers action is in the UI and Execute sequences, immediately prior to AppSearch with a condition of Not Installed (Seq. No. 10)

Can someone shed any light on this and suggest a fix?


- Aaron.

Aaron Young
08-16-2005, 01:41 PM

It doesn't seem to be an issue with InstallShield StandaloneBuild, that was a red-herring...

The problem appears to occur when I update the version information of the Upgrade entry via the Automation Interface.

Part of my automated build process opens the InstallShield project (using the Automation Library) and sets the ProductCode, Version and Upgrade Version information.

It would seem that setting the VersionMax and/or VersionMin properties of an upgrade via the IswiUpgradeTableEntries collection of the project, is triggering something that's deciding to remove the ISSetAllUsers custom action.

At the moment, the code setting the upgrade properties is redundant as I'm telling it to upgrade all prior versions, so I can get around the problem by not setting these properties, preventing the ISSetAllUsers custom action from being removed.

However, in the future, this may become an issue if I want to conditionally remove certain versions. Also this was working in previous versions (at least in DevStudio 9) as that is what I upgraded this particular project from and the upgrade version procedure was in place and working at that time and hasn't been changed until now.


- Aaron.

Aaron Young
08-16-2005, 02:15 PM

There is another way around the problem...

If you uncheck Automatically create ISSetAllUsers action in the General tab of the Options dialog, that will also prevent the action from being removed when modifying the upgrade table entry as previously described.

However, you'll need to do a little hoop jumping to get ISSetAllUsers into the UI and Execute sequences if you switch this feature off.

1. Check the option to automatically create ISSetAllUsers and modify your Upgrade entry to make sure the action is generated.

2. In Custom Actions clone the ISSetAllUsers action.

3. Uncheck the option to automatically create the ISSetAllUsers action.

4. Insert the clone of the ISSetAllUsers action into the UI and Execute sequences immediately prior to AppSearch.

Hopefully this bug will be addressed in a Hotfix soon.


- Aaron.

03-08-2006, 02:51 PM
Looks like this is very old staff. I'm in a process of upgrading from IS 8 to IS 11 and faced same problem.
I have a perl script that does automated compilation of the product and the executes preparation of installation packages. I'm using Standalone Build module for this work. The script changes several properties using automated interface:

ProductInstance => "$ProductInstance",
ProductVersion => "$ProductVersion",
ProductCode => "$GUID1",
UpgradeCode => "$GUID2",
RegularUpgradeCode => "$GUID3"

UpgradeCode => "$GUID2",
VersionMax => "$ProductVersion"

As described in previous posts, I'm missing ISSetAllUsers action in my package.

Does anybody know if this was fixed by InstallShield? They had lots of time till now.
If this is not corrected. Is there any way to avoid problem without changing IS projects? We have to reproduce older versions of our software without any modification (CM staff, you know). I'm willing to change a script so this will be able to compile older project (it converts projects to new format automatically) and new projects in future.
If there any command in automated interface that allow to insert ISSetAllUsers action back after it is removed by IS? I did not find this in documentation yet.

Thank you.