This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Multiple Instance Transform Major Upgrade
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Dec 05, 2007
04:35 PM
Multiple Instance Transform Major Upgrade
I am using the ISProductConfigurationInstance table to do a multiple instance transform install. When I try to do a major upgrade, it doesn't appear to be work, well, like I would like.
When I go to the Upgrades panel and tell it to use "Products Sharing My Upgrade Code". It doesn't seem to use the upgrade code in the transform, but the one that is the "default" in the General Information panel. I guess I was expecting to it use the Upgrade specified in the transform.
Anybody else doing this or have this problem? Am I doing it wrong?
Thanks
When I go to the Upgrades panel and tell it to use "Products Sharing My Upgrade Code". It doesn't seem to use the upgrade code in the transform, but the one that is the "default" in the General Information panel. I guess I was expecting to it use the Upgrade specified in the transform.
Anybody else doing this or have this problem? Am I doing it wrong?
Thanks
(3) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Dec 10, 2007
09:27 PM
I've been beating my head against the major upgrade problem for a while now and I think the following will help:
For sake of illustration, let's assume you have 3 Instances in your project and this is a Basic MSI:
Instance0 = Default Install
Instance1 = Bob's Install
Instance2 = Tom's Install
Recipe Part I:
In your upgrade settings, leave it on "Products sharing my upgrade code".
Build your EXE normally, your InstanceId property should default to 0 in the Property table. This will be the "Default" install, set it aside for later and have a drink.
Recipe Part II:
In your upgrade settings, change it to "Products using another upgrade code", change the guid of the upgrade code to that being used by Instance1 or the "Bob" install. This property should be in your ISProductConfigurationInstance table as UpgradeCode. (Also remember the MSI rules about changing ProductCode, PackageCode and Version when doing upgrades, they still apply but you have to apply them in this table by hand... or with some vb script or other method at your disposal http://msdn2.microsoft.com/en-us/library/aa370579.aspx)
Build your EXE set with transform1. You can set the transform by passing parameters to the MSI (i.e. TRANSFORMS=:InstanceId1.mst MSINEWINSTANCE=1 /qf/liwearucmopvx /log "c:\MyInstallInstance1.log")
This will result in the "Bob" install. Now that Bob is done, have another drink and come back for the third.
Recipe Part III:
In your upgrade settings, change the guid of the upgrade code to that being used by Instance2 as we did earlier
Build your EXE set with transform2
This will result in the "Tom" install. Have another drink.
You'll wind up with 3 separate Setup.exe bootstrappers, each one built with the same compressed MSI save for 1 row in the Upgrade Table. This will keep them separate enough to allow major upgrades to occur as they do in projects where multi-instance nonsense is not a problem.
By this time you should be on your way to either channeling Julia Child or inebriation, either way the blasted things are done.
I think the problem is that since the MSI is looking at a shared upgrade table with entries for each instance, it sees the relationship and removes all other 'older' copies. I could be way off base, but finally I got this working for me and if I can save someone else the same forehead bruise then so be it.
For sake of illustration, let's assume you have 3 Instances in your project and this is a Basic MSI:
Instance0 = Default Install
Instance1 = Bob's Install
Instance2 = Tom's Install
Recipe Part I:
In your upgrade settings, leave it on "Products sharing my upgrade code".
Build your EXE normally, your InstanceId property should default to 0 in the Property table. This will be the "Default" install, set it aside for later and have a drink.
Recipe Part II:
In your upgrade settings, change it to "Products using another upgrade code", change the guid of the upgrade code to that being used by Instance1 or the "Bob" install. This property should be in your ISProductConfigurationInstance table as UpgradeCode. (Also remember the MSI rules about changing ProductCode, PackageCode and Version when doing upgrades, they still apply but you have to apply them in this table by hand... or with some vb script or other method at your disposal http://msdn2.microsoft.com/en-us/library/aa370579.aspx)
Build your EXE set with transform1. You can set the transform by passing parameters to the MSI (i.e. TRANSFORMS=:InstanceId1.mst MSINEWINSTANCE=1 /qf/liwearucmopvx /log "c:\MyInstallInstance1.log")
This will result in the "Bob" install. Now that Bob is done, have another drink and come back for the third.
Recipe Part III:
In your upgrade settings, change the guid of the upgrade code to that being used by Instance2 as we did earlier
Build your EXE set with transform2
This will result in the "Tom" install. Have another drink.
You'll wind up with 3 separate Setup.exe bootstrappers, each one built with the same compressed MSI save for 1 row in the Upgrade Table. This will keep them separate enough to allow major upgrades to occur as they do in projects where multi-instance nonsense is not a problem.
By this time you should be on your way to either channeling Julia Child or inebriation, either way the blasted things are done.
I think the problem is that since the MSI is looking at a shared upgrade table with entries for each instance, it sees the relationship and removes all other 'older' copies. I could be way off base, but finally I got this working for me and if I can save someone else the same forehead bruise then so be it.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Dec 11, 2007
12:06 PM
I was able to reproduce the behavior that the upgrade code in the instance-transform is not used when you perform a major upgrade with the "Products Sharing My Upgrade Code" option selected. I filed the work order #IOC-000066649 so that it will be fixed in the next major release.
Also, I created the hotfix for InstallShield 2008. You need to copy the new ISWIBuild.dll to the C:\Program Files\Macrovision\IS2008\System folder and rebuild your setup in order to apply the fix. If you are using the standalone build, you need to copy the new SABuild.dll to C:\Program Files\Macrovision\IS2008 Standalone folder.
Note that this is an unofficial release as it has not been completely tested by our QA team. I strongly recommend that you make a backup copy of the original file before copying the new file.
Regards.
Also, I created the hotfix for InstallShield 2008. You need to copy the new ISWIBuild.dll to the C:\Program Files\Macrovision\IS2008\System folder and rebuild your setup in order to apply the fix. If you are using the standalone build, you need to copy the new SABuild.dll to C:\Program Files\Macrovision\IS2008 Standalone folder.
Note that this is an unofficial release as it has not been completely tested by our QA team. I strongly recommend that you make a backup copy of the original file before copying the new file.
Regards.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jan 25, 2008
01:33 PM
Thanks to Hidenori! 🙂 🙂 🙂
I've tested this patch (ISWIBuild.dll) out on 3 separate install projects each with 3 instances in them, and so far the Major Upgrades work using the "Products Sharing My Upgrade Code" option.
Each instance of the install removes the previous instance and ignores other instances installed during a major upgrade.
I've tested this patch (ISWIBuild.dll) out on 3 separate install projects each with 3 instances in them, and so far the Major Upgrades work using the "Products Sharing My Upgrade Code" option.
Each instance of the install removes the previous instance and ignores other instances installed during a major upgrade.
hidenori wrote:
I was able to reproduce the behavior that the upgrade code in the instance-transform is not used when you perform a major upgrade with the "Products Sharing My Upgrade Code" option selected. I filed the work order #IOC-000066649 so that it will be fixed in the next major release.
Also, I created the hotfix for InstallShield 2008. You need to copy the new ISWIBuild.dll to the C:\Program Files\Macrovision\IS2008\System folder and rebuild your setup in order to apply the fix. If you are using the standalone build, you need to copy the new SABuild.dll to C:\Program Files\Macrovision\IS2008 Standalone folder.
Note that this is an unofficial release as it has not been completely tested by our QA team. I strongly recommend that you make a backup copy of the original file before copying the new file.
Regards.