Working with Re-factored Components in FP2007 - Part 1

As part of the componentization changes we made to XPe for Feature Pack 2007 various components were re-factored into multiple, smaller and more granular components. The benefit of this is footprint savings. Components that, in the past, depended on one or two files owned by e.g. the Internet Explorer component had to take the footprint hit of the whole of Internet Explorer in order to use these files – now in FP2007 they do not have to take the same footprint hit. By creating separate components to own these files the feature that depended on IE can now just depend on the new component in order to bring those files into the runtime and function correctly. This can lead to smaller overall footprint, depending on the kind of runtime you are building.

For example, if you look at Outlook Express in SP2 you will see that running check dependencies in Target Designer brings in the full Internet Explorer component (and all its subsequent dependencies) - see figure 1.

 

Now in FP 2007 the 3 files that Outlook Express needs in order to function correctly have been pulled out of Internet Explorer (in other words are no longer file resources listed in the Internet Explorer component) and are now "owned" by entirely new components. These new components are "Primitive" components, which mean they have usually only one file resource, any registry keys associated with that file resource, and perhaps an FBA Registration resource. Figure 2 below shows OE depending on only primitive components and not on IE. Note that IE will also depend on the primitive components that own the files that used to be part of IE – this is so that customers who need the whole of the IE feature are guaranteed to get all the same files in their runtime that they would have in SP2 before the re-factoring, and the IE feature will function as before.

 

This blog article will be the first in a series where I will gradually get more and more detailed into how to reap benefits of all the re-factoring work done, depending on how much time and effort you are prepared to invest in tweaking configurations that have been upgraded to FP2007.

Firstly, I must emphasize that in order to get the FULL advantage of this re-factoring work you should build your configurations from scratch with Feature Pack 2007. This ensures that your dependency check will only bring in the new, smaller components for the features that were re-factored. However, if you choose not to rebuild your configuration there are still other ways that you can tweak your configuration to obtain some footprint benefit from this re-factoring work. In the next blog articles I will delve into details on how you can do this.

For now, here is a list of components that were re-factored so you can see if any of these are even brought into your configurations through a dependency check (because another component you may have added had a dependency on one of these components), and also the way they are now structured in FP2007:

1. Internet Explorer

Re-factored into: Internet Explorer

           Primitive: Actxprxy.dll

           Primitive: Browsewm

           Primitive: Cryptdlg.dll

           Primitive: hlink.dll

           Primitive: iedkcd32.dll

           Primitive: ieinfo5.ocx

           Primitive: iexplore.exe

           Primitive: imgutil.dll

           Primitive: inetcpl.cpl

           Primitive: inseng.dll

           Primitive: jsproxy.dll

           Primitive: mshta.exe

           Primitive: msident.dll

           Primitive: msidntld.dll

           Primitive: msrating.dll

2. Volume Shadow Copy Service

    Re-factored into: Volume Shadow Copy Service

            Primitive: vssapi.dll

3. Outlook Express

    Re-factored into: Outlook Express

            Primitive: msoert2

            Primitive: wab32

4. Simple Network Management Protocol (SNMP)

Re-factored into: Simple Network Management Protocol (SNMP)

            Primitive: snmpapi.dll

5. Windows Firewall/Internet Connection Sharing (ICS)

    Re-factored into: Windows Firewall/Internet Connection Sharing (ICS)

            Primitive: hnetcfg.dll

It may not seem that re-factoring only 5 components would have much of an impact to footprint but there are two aspects to the savings you see here - one is the that you no longer have the footprint hit of the files owned by that large component and, secondly, you no longer have the footprint hit of all the dependent components the large component would have brought in.

- Lynda