How to manually assemble a .NET Framework 1.0 SP3 XP Embedded component

XP Embedded SP1 includes components for the .NET Framework 1.0 with SP2 and ASP.NET 1.0 with SP2. Currently there is not an XP Embedded component for the .NET Framework 1.0 with SP3. The following instructions will allow you to unofficially update your 1.0 SP2 component to 1.0 SP3. Note that these are manual steps and are not officially supported.

Identify setup differences in 1.0 SP3

The first step is to figure out what is different between 1.0 SP2 and 1.0 SP3. The XP Embedded components for .NET Framework 1.0 use the same OCM package that originally shipped as part of Windows XP Tablet PC and Media Center editions. The delivery mechanism for Tablet PC and Media Center to get 1.0 SP3 is to install the overall Windows XP SP2. As a result, you can go to any machine that has the desktop XP Pro with SP2 and find the .NET Framework 1.0 OCM INF file in the folder %windir%\inf (even if the machine is not Tablet PC or Media Center). Now we can take this netfxocm.inf and compare it to the one in our XP Embedded SP1 database repository in the folder \Windows Embedded Data\repositories\{022716D8-0CF0-4779-B94C-8E52EB36709C} using your favorite diff utility. Doing this shows us the differences in setup for 1.0 SP2 and SP3. You will see a few updated registry keys that track what service pack level is installed, and also 5 new files that are delivered by 1.0 SP3:

  • smartnav.htm
  • uninstallpersistsqlstate.sql
  • uninstallsqlstatetemplate.sql
  • installpersistsqlstate.sql
  • installsqlstatetemplate.sql

Apply any necessary registry changes

Now, let's take a look at the composition of the .NET Framework 1.0 SP2 components in the XP Embedded SP1 database. There is a huge list of files that make up the .NET Framework, no registry keys, and an OC Manager Request resource. The OC Manager Request calls into the netfxocm.inf in order to write all of the .NET Framework registry keys and run custom actions during first boot agent (FBA), such as installing files to the global assembly cache (GAC). That means that if we update netfxocm.inf in our pre-FBA image, we will get all of the registry changes applied to our system "for free".

Apply any necessary file changes

That leaves us with one remaining step - how to get the new and updated 1.0 SP3 files that we need to get into our image. There are a couple of different ways to do this. The easiest would be to install .NET Framework 1.0 on a desktop XP machine and then apply SP3 to it. Then you can use netfxocm.inf to retrieve a list of files in the .NET Framework 1.0 SP3, or look in the file lists in the XP Embedded components for .NET Framework 1.0 SP2 and ASP.NET 1.0 SP2. Now, find all of those files on the desktop machine where you installed 1.0 SP3 and copy them into the repository folder at \Windows Embedded Data\repositories\{022716D8-0CF0-4779-B94C-8E52EB36709C} on the machine you have the XP Embedded database installed on.

Summary

Here is a high level set of steps you will need to perform based on the detailed explanations listed above:

  1. Add the 5 new files listed above to the .NET Framework component (or simply add them as additional file resources in your configuration in Target Designer) by copying them from the folder %windir%\Microsoft.NET\Framework\v1.0.3705 on a desktop computer that has .NET Framework 1.0 and .NET Framework 1.0 SP3 installed.
  2. Replace netfxocm.inf in \Windows Embedded Data\repositories\{022716D8-0CF0-4779-B94C-8E52EB36709C} with a copy from %windir%\inf on a machine running the desktop version of Windows XP with Windows XP SP2
  3. Update the .NET Framework files that were changed for 1.0 SP3 in your database repository folder
  4. Rebuild your embedded image in Target Designer and redeploy

I hope you find this useful. Please let me know if you have any questions about any of the above