View Full Version : Multiple instances: Major upgrade for multiple instances other than default instance

10-31-2014, 02:24 AM
I've created two new instances in installshield in Releases view Multiple-Instance tab and added upgrade code and product version property for the instances created. Thus, there are total three instances.

There is only single item 'ISPREVENTDOWNGRADE' in upgrades view with 'product sharing my upgrade code' option selected to prevent from downgrade of application. Now for given system, I'd installed two instance of application having v1.0.

For performing major upgrade, I've updated the product code and version to 2.0 for all the instances. When installer is executed, if default instance is selected for major upgrade, installer perform upgrade for default instance only. For other instances, installer do not perform major upgrade.

When I checked logs, it is observed that, "SetAllUsers" action will find related product installed having upgrade code same as default's upgrade code. However, if instance #1 is selected for upgrade, "SetAllUsers" action couldn't find any related product installed.

Its observed that 'SetAllUsers' action only checks product installed for default instance upgrade code only. Even if any other instance is selected for upgrade, the FindRelatedProduct action only checks for product with default instance upgraded code. And therefore installer doesn't perform major upgrade for instance other than default instance.

If you require, I can provide details of upgrade code for all instances and logs files.

Could you please help and provide steps require to make installer to check for product installed for upgrade code of instance selected.

Thanks in advance.

11-13-2014, 05:43 PM
It sounds like that Upgrade Code or major upgrade item is not configured correctly in your multi-instance installation. Mare sure that it meets all the requirements listed in the Configuring and Building a Major Upgrade that Includes Multiple-Instance Support (http://helpnet.flexerasoftware.com/installshield21helplib/installshield21helplib.htm#StartTopic=helplibrary/MultipleInst-MajorUpgrade.htm) help topic.

11-14-2014, 08:58 AM
Thanks for the reply.
Just to make it clear, i have followed all the steps mentioned in the link shared by you.
I can share the verbose logs if you want me to. My concern is how to perform major upgrade of an instance that is not the first instance as it is not detected to be installed when i try to upgrade it.
Looking forward for your response.

11-14-2014, 03:00 PM
Is the installed instance #1 of v1.0 listed in the Multi-Instance dialog when you run the Setup.exe bootstrapper of v2.0? To get all of installed instances for a major upgrade listed in the dialog correctly, it's necessary to specify its own unique UpgradeCode for each instance and share the UpgradeCode across the versions. Major upgrades don't have knowledge about the ProductCode of installed instances. The Setup.exe bootstrapper enumerates the related products that are installed using the UpgradeCode. It would be unable to determine which instances are actually installed unless UpgradeCode is unique. If the instance in question is not listed, there is also a chance that the UpgradeCode for the instance is different across the versions.

Meanwhile, would it be possible for you to post a sample project (just installing a single file with a few instances) that replicates the behavior so that we can investigate your issue further? We need to look into both the .ism for v1.0 and v2.0.

Thank you for your patient and cooperation.

11-18-2014, 07:26 AM
"Is the installed instance #1 of v1.0 listed in the Multi-Instance dialog when you run the Setup.exe bootstrapper of v2.0?"
Yes, it does list the instance #1 for v1.0.
When i select any listed instance for v1.0, installer doesn't perform major upgrade; instead fresh installation is performed. Therefore, there exists multiple entry with different version for same product. Now after installer execution completes, if we run setup.exe bootstrapper of v1.0 it listed instances version is not updated to 2.0.

After analysing the verbose logs observed that, 'FindRelatedProduct' action do not check any related product installed for any given UPGRADECODE from any instances. Also 'ISSETALLUSERS' action is not executed after 'FindRelatedProduct' and therefore "IS_MAJOR_UPGRADE" property is not set to 1.

We have attached two sample .ism file as requested.

11-18-2014, 10:27 AM
Thank you for posting the sample projects. It turns out that there is no major upgrade in your v2.0 project. ISPreventDowngrade is a detect-only major upgrade item that will prevent an old package from installing over a newer version. It doesn't perform any major upgrade. In the Upgrades view, you must add one that will perform a major upgrade for your multiple-instance support.

Hope that helps.

11-20-2014, 08:38 AM
Thanks for your reply, after adding major upgrade in Upgrade views we were able to perform major upgrade. However, after major upgrade when we check Add/Remove program, there were two entries for a given instance. One having version 1.0 and another having version 2.0. Now if we run setup.exe bootstrapper of v1.0, older installed instance (i.e v1.0) is listed in Multi-Instance dialog and not the upgraded instance. Therefore it seems installer install new version but does not uninstall older version. Is this expected installer behavior or we need to make some changes in installer?

For Major upgrade in Upgrades views, in Advanced tab > additional settings property 'ISACTIONPROP1' is set with product code of instance found by 'FindRelatedProduct' action for given UpgradeCode. However when we check verbose logs for major upgrade performed, 'FindRelatedProduct' action is unable to detect the any installed product for given UpgradeCode and therefore property 'ISACTIONPROP1' is not set.

To test the above scenario, we have created two different .ism for v2.0. In first .ism file, there is only one major upgrade added with selection 'Products sharing my Upgrade Code'. In another file we have added different major upgrade for each instance with selection 'Product having another Upgrade Code' and their respective Upgrade code value. We have created simple custom action to check the value of property 'ISACTIONPROP1', the custom action is called after 'FindRelatedProduct' action.

Attachment contains, two sample .ism file, a batch file for creating verbose logs and .dll file for custom action function.

11-20-2014, 12:54 PM
You only need one major upgrade item with selection of the 'Products sharing my Upgrade Code' option for your multiple-instance support. Also, the Product Version setting on the Common tab (http://helpnet.flexerasoftware.com/installshield21helplib/installshield21helplib.htm#StartTopic=helplibrary/UpgradeMsiMajorCommon.htm) is not specified correctly. The major upgrade item in your v2.0 project currently targets the product family that has a version number higher than 2.0.0. In order to upgrade the version 1.0 of your product, you must select the "Any earlier version" option or define a range of product versions that includes the version number 1.0.0.

11-21-2014, 07:48 AM
Thanks for your reply.

We made the suggested changes and major upgrade for multiple instance worked properly. Thanks once again for clarifying our doubts regarding major upgrade for multiple instance.