[Update 2/11/09 – To date, .Net Framework 3.5 has *not* been released for XP Embedded. It is available in the build for Windows Embedded Standard 2009. The WES 2009 version is installable both during setup or post-setup via an MSI. This workaround described below for XP Embedded is only for testing purposes, we recommend that you upgrade to WES 2009 if your device requires .Net Framework 3.5. I apologize for the confusion. -Andy]
Recently, a customer reported an issue installing the .NET Framework 3.5 on an XP Embedded system that includes the .NET Framework 2.0 component in the image. The specific error message encountered is the following:
Microsoft .NET Framework 2.0 Service Pack 1 — Setup has determined that this version of .NET Framework is part of your operating system and cannot be installed or uninstalled with this setup. Use Windows Update for all future updates to .NET Framework. Setup will now exit.
Behind the scenes, the .NET Framework 3.5 installer is trying to install the .NET Framework 2.0 SP1 MSI package. The .NET Framework 2.0 SP1 MSI contains logic to block it from installing when it detects that the .NET Framework 2.0 was installed as an OS component, and that causes this error dialog to appear.
The reason this installation path is blocked by default is that the .NET Framework 2.0 component for Windows XP Embedded is deployed and serviced in a different way than the MSI-based .NET Framework 2.0 package. Using the .NET Framework 2.0 XPe component ensures that all dependencies needed to install the .NET Framework 2.0 are satisfied on the XPe runtime at the time that it is installed. However, there is no way to know whether the list of dependencies will change when future service packs are released for the .NET Framework 2.0 until after the service packs have been analyzed in more detail to determine if new dependencies are introduced that were not enforced in the original component.
If you have an XP Embedded runtime with the .NET Framework 2.0 component included, and you need to install the .NET Framework 3.5, you can work around this blocking dialog by removing the following registry value from your runtime:
[HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ NET Framework Setup\ NDP\ v2.0.50727]
When doing this, it is important to note that the .NET Framework 3.5 has additional dependencies that were not needed for the .NET Framework 2.0. Even after removing this registry value, you may run into errors during .NET Framework 3.5 installation if your runtime does not include these dependencies.
If you have included the dependencies required for the .NET Framework 3.0 into your runtime image (described in the post at http://blogs.msdn.com/embedded/archive/2007/03/23/deploying-net-framework-3-0-desktop-distribution-package-on-windows-xp-embedded-sp2-runtime.aspx), then you should be able to install the .NET Framework 3.5 as well.