cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
AaronM
Level 6

Feature prerequisite with release flags causes install to fail

I have a large project that includes several prerequisites (setup and feature) along with several configurations and releases. I then use various configuration and release flags to map the appropriate prerequisites and features to be included for the various installs.

There seems to be an issue with how feature prerequisites are handled in some situations that include flags (configuration and/or release). Setup prerequisites do not appear to have this issue.

What happens at install time is that a second install gets kicked off at the point when the feature prerequisites are handled. The second installer then kicks off a third installer at the same point during the install. This continues until you ultimately cancel the installation. It is also worth noting that this occurs regardless of if the prequisite install condition has been already met (ie. whether the prerequisite is already installed).

Here is a breakdown of what I have noticed for feature prerequisites:
No flags --> works fine
One or more flags (all of build's configuration/release flags included) --> works fine
One or more flags (not all of build's configuration/release flags included) --> fails

As such, I have two work arounds to choose from:

    Not specify any flags for feature prerequisites (setup prerequisites can continue to have flags). The consequence to this is that installs that do not need a particular feature prerequisite will not be properly excluded at build time and make the installer size unnecessarily bigger. Ultimately, the prerequisite will get ignored at run time since the feature will not be installed.


    Include all possible configuration/release flags for all builds that need the prerequisite. This will allow only the builds that do not want the feature prerequisite to keep its installation size low. However, this is a less maintainable solution than if the issue did not exist and could specify a subset of flags since that is the documented behavior where one a setup prerequisite is included for a build if one configuration or release flag is included. See related forum thread below.


Attached is a zip file containing a simple installer project used to recreate the issue along with two msi log files. ConfigurationA needs the prerequisite but ConfigurationB does not. ConfigurationA's release has a release flag specified to map other prerequisites and features, as such the prerequisite's flags do not include all of the build's flags. The first log is from the initial installer and the second log is from the subsequent installer that gets launched. On line 58 in the first log is where the ISInstallPrerequisites action is handled.

Note: The example project uses "MSXML 6.0" as the prerequisite, however it does not matter what prerequisite you use.

Here is a related forum thread: Changes to how product configuration and release flags are handled in 2010
Labels (1)
0 Kudos
(2) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Hi Aaron, it looks like IOC-000074931 was not completely fixed. What's going on is that the code which selects which bootstrap file to build the install into still misunderstood the product configuration and release flags mix, and it selected the non-prerequisite setup.exe file. I've filed IOA-000051784 to track this, and hope we can fix it shortly; in the meantime you can backup the setup.exe files in \redists\language independent\i386 and copy the setupPrereq.exe over them. This workaround is potentially imperfect if you need a release which does not support prerequisites, and the effect is global across all your product builds.

Let me know if you have further questions on this.
0 Kudos
AaronM
Level 6

Thank you for the response.

In the mean time, I have it working by tweaking my release flags to include all combinations. I'll probably wait until the next official release or service pack to update and then rollback my work around at that time.
0 Kudos