Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Forcefully include component in patch


3 replies to this topic

vishnub

vishnub
  • Full Members
  • 63 posts

Posted 15 August 2008 - 04:10

Hi All,
Is it possible to add component forcefully in .msp patch.

I create patch by updating PatchTemplate.pcp with the TargetImage msi path and UpgradedImage msi path.
I added a new component in UpgradedImage and that was not in TargetImage and i verified it with MSIPackageDiff. But still the component was not part of the .msp patch.

The entire release scenario is as follows
- Product initial release has product version as 7.0.0.0
- Released a patch for the product with version 7.0.10000.0, in which ComponentA was newly added.
- The next minor upgrade version was 7.0.10500.0, to generate this i use 7.0.0.0 msi as TargetImage and 7.0.10500.0 msi as UpgradedImage which has the ComponentA along with other new components.

Release 7.0.10500.0 was cumulative. User can either apply this minor upgrade over 7.0.0.0 or over 7.0.10500.0.
When this minor upgrade was applied over 7.0.0.0, ComponentA files are not getting copied, but still the FeatureA to which ComponentA belongs was in Installed_Local state.

But when the minor upgrade was applied over 7.0.10000.0, ComponentA files are not copied and also FeatureA state goes to Advertised and in verbose log i find the following

MSI (s) (94:A4) [14:50:31:218]: SELMGR: ComponentId '{30F1E58A-12ED-4CA2-B572-AC6AE234A8A0}' is registered to feature 'FeatureA', but is not present in the Component table. Removal of components from a feature is not supported!
MSI (s) (94:A4) [14:50:31:218]: SELMGR: Removal of a component from a feature is not supported

I think because of this, the FeatureA goes to Advertised state.
If the component was not in TargetImage and present in UpgradedImage, it should be available in patch generated, correct me if my statement was wrong.

And if 7.0.10000.0 was already applied, ComponentA will be added to the cached msi, so it might expect the next minor upgrade to hold the ComponentA, but here i am not sure, why the ComponentA was missing in the 7.0.10500.0 msp.

Is there any way a component can be forcefully included in the patch, so that it can be installed always.

Any help will be greatly appreciated.

Thanks,
Vishnu

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 15 August 2008 - 10:18

Is 30F1E58A-12ED-4CA2-B572-AC6AE234A8A0 the GUID of ComponentA in both version 7.0.10000.0 and 7.0.10500.0 ? Or did the GUID change in 7.0.10500.0 ?

vishnub

vishnub
  • Full Members
  • 63 posts

Posted 15 August 2008 - 18:54

Yes Stefan, i verified the component GUID, it remains same in 7.0.10000.0 & 7.0.10500.0.

One more observation:
I opened the 7.0.00000.0 MSI with Orca and view the 7.0.10500.0 MSP patch.
I can see ComponentA entry in the File table for a file newly added to the component in 7.0.10500.0, but nowhere else it was referenced, not in Components table and not in FeatureComponents table.

When i open the 7.0.10500.0 msi, i can see the ComponentA entry in Component, File, FeatureComponent, ISComponentExtended tables, but it was not created in the patch. Hence the failure.

Since the ComponentA entries are in these tables in ism, i no need to add it again, but how can i force it to be created in Patch too.

Please suggest.

Thanks,
Vishnu

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 17 August 2008 - 18:42

So it looks like your second patch is created as difference between versions 7.0.10500.0 and 7.0.10000.0, instead of 7.0.10000.0