Update on how to deploy the .NET Framework 3.0 on Windows XP Embedded


Earlier this week, I posted an item with a link to an article on the Windows Embedded team’s blog that provides step-by-step instructions to create a Windows XP Embedded runtime image that you can install the .NET Framework 3.0 on.

Today, I noticed this post on Mike Hall’s blog that includes download links for a package that enables installation of the .NET Framework 3.0 on Windows XP Embedded images without requiring all of the manual steps in that previous step-by-step guide.

If you are an embedded developer or image builder who wants to include the .NET Framework 3.0 in your runtime images, I encourage you to check out Mike’s post and the links that it includes for more information.

Comments (17)

  1. Desi says:

    Aaron,

    I’m trying to install .NET FW 3.0 on an XPe image that has all of the prerequisites, but limited space on the C: drive. I thought at first that if I moved the %TEMP% and %tmp% directories to another volume the installer would decompress the files to a different volume and I would have room, but this didn’t work.

    Is there another variable, registry setting, or command line switch that I can use to redirect the installer’s intermediate files to another place during installation?

    Thanks,

    Desi Richards

  2. astebner says:

    Hi Desi – Unfortunately, the setup bootstrapper for the .NET Framework will always use the %temp% directory to unpack and install from.  Changing that environment variable should allow you to redirect the temporary space to another drive.

    If that doesn’t work, you can also run each of the child packages that are a part of the .NET Framework 3.0 individually to avoid the bootstrapper trying to use the %temp% directory.  There is a list of packages and command lines in the deployment guide at http://msdn2.microsoft.com/en-us/library/aa964979.aspx that should help you accomplish that if you need to.

    Hope this helps!

  3. wmiller says:

    Hi Aaron – sorry for bringing up an ancient link, but I’m just getting around to upgrading my XPe SP2 image with .Net Framework 3.0 and having problems with the installation.

    The steps seemed straight forward and I made the Macro component with the required components but I can’t make much sense out of the log files generated by the failed installation. Is it asking too much to send you a cab file (created using your collect utility) with the logs for some help?

    Thanks for any words of wisdom.

    Bill

  4. astebner says:

    Hi Wmiller – Yes, I can try to help if you send me the log files from the failing .NET Framework 3.0 install.  Can you clarify whether you are using the step-by-step instructions to create your own XPe component, or are you using the pre-defined component in Update Rollup 1.0 (described at http://blogs.msdn.com/mikehall/archive/2007/06/07/update-rollup-1-0-for-windows-xp-embedded-was-feature-pack-2008.aspx)?

  5. wmiller says:

    THANKS Aaron!

    I used the MSDN step-by-step instructions from http://msdn2.microsoft.com/en-us/library/bb417255.aspx.

    I created a Macro component made up of the components identified in ‘required’ section along with DirectX 9.0c and IIS Web Server (these two were included after initial failed attempts of the installation appeared to be pointing to WCF – but now I think they were red herrings).

    Imported this new macro comp to my database.

    Included this macro comp into my runtime image.

    Ran  dotnetfx3.exe after FBA finished.

    I thought the log files were telling me that I appeared to have an old Beta version of .Net 3.0 already installed (which was definitely not the case) so I tried various cleanup and uninstall utilities that I’ve found during my searches but none appear to have helped.

    I guess I should also note that my image is based off of XPe SP2 with a latest update of April 07 (to get the DST fixes). We have not upgraded to Feature Pack 2007 nor had a need for any updates since April (too painful to update field test units right now). Could this be related to the problem?

    Thanks, I’ll email the cab file containing the logs to your microsoft account. I really appreciated the help!

    Bill

  6. smedlytonker says:

    I’m having trouble deploying .NET 3.0 in my XPE image. I have tried to install .NET 3.0 using step by step instructions (I have all listed components). The installation fails with the same errors in both cases.

    In ‘dd_dotnetfx3error.txt’ I get the following error message:

    [11/13/07,06:08:55] Windows Communication Foundation: [2] Error: Installation failed for component Windows Communication Foundation. MSI returned error code 1603

    On further examination I see that in ‘dd_wcf_retCA14C.txt’ the following error:

    ServiceModelReg [06:08:52:907]: System.DllNotFoundException: Unable to load DLL ‘webengine.dll’: A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)

      at System.Web.UnsafeNativeMethods.IsapiAppHostGetSiteName(String appId, StringBuilder buffer, Int32 size)

      at System.Web.Configuration.MetabaseServerConfig.MBGetSiteNameFromSiteID(String siteID, String& siteName)

      at System.Web.Configuration.MetabaseServerConfig..ctor()

      at System.Web.Configuration.MetabaseServerConfig.GetInstance()

      at System.Web.Configuration.IISMapPath.GetInstance()

      at System.Web.Configuration.WebConfigurationHost.ChooseAndInitConfigMapPath(Boolean useConfigMapPath, IConfigMapPath configMapPath, ConfigurationFileMap fileMap)

      at System.Web.Configuration.WebConfigurationHost.InitForConfiguration(String& locationSubPath, String& configPath, String& locationConfigPath, IInternalConfigRoot configRoot, Object[] hostInitConfigurationParams)

      at System.Configuration.Configuration..ctor(String locationSubPath, Type typeConfigHost, Object[] hostInitConfigurationParams)

      at System.Configuration.Internal.InternalConfigConfigurationFactory.System.Configuration.Internal.IInternalConfigConfigurationFactory.Create(Type typeConfigHost, Object[] hostInitConfigurationParams)

      at System.Web.Configuration.WebConfigurationHost.OpenConfiguration(WebLevel webLevel, ConfigurationFileMap fileMap, VirtualPath path, String site, String locationSubPath, String server, String userName, String password, IntPtr tokenHandle)

      at System.Web.Configuration.WebConfigurationManager.OpenWebConfigurationImpl(WebLevel webLevel, ConfigurationFileMap fileMap, String path, String site, String locationSubPath, String server, String userName, String password, IntPtr userToken)

      at System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(String path)

      at System.ServiceModel.Install.Configuration.NativeConfigurationLoader.get_RootWebConfiguration()

      at System.ServiceModel.Install.Configuration.ProtocolsInstallComponent.get_UninstallActionMessage()

      at System.ServiceModel.Install.ServiceModelInstallComponent.GetActionString(InstallAction action)

      at Microsoft.Tools.ServiceModel.ServiceModelReg.Run(String[] args)

      at Microsoft.Tools.ServiceModel.ServiceModelReg.TryRun(String[] args)

    So it would seem that the problem is ‘webengine.dll’ is failing to initialize. But why?

    P.S. my image is XPE SP2 with all of the fixes up to October 07. I have the winlogon component, but I boot into my own shell.

  7. astebner says:

    Hi Smedlytonker – I have seen similar errors from a couple of people here at Microsoft.  The folks who hit this indicated that they were able to resolve the error and successfully install the .NET Framework 3.0 on their XPe runtime images by adding IIS to the image.  However, they didn’t indicate exactly which IIS components they had to add to accomplish this.  You may be able to narrow this down by using a tool like Depends to figure out what dependencies the file c:WindowsMicrosoft.NETFrameworkv2.0.50727webengine.dll has that are missing from your current image.

    Hopefully this helps.

  8. smedlytonker says:

    I have already installed IIS to see if this would resolve the problem, but it did not. I included the following IIS components:

    • IIS Common Libraries

    • IIS Core Libraries

    • IIS Internet Manager

    • IIS Virtual Script Directory

    • IIS Web Server

    I’ll do as you suggest – maybe this will yield a result.

  9. astebner says:

    Hi Smedlytonker – DLL initialization errors like this on XPe are nearly always caused by missing dependencies in the runtime image.  Hopefully Depends will help you narrow down the root cause.  You could also try running a tool like Process Monitor (http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/processmonitor.mspx) during .NET 3.0 setup in this scenario to see if it helps narrow down what is missing as well.

  10. smedlytonker says:

    I ran depends on ‘C:WindowsMicrosoft.NETFrameworkv2.0.50727webengine.dll’ and found no missing DLLs. I also tried installing process monitor on my XPe SP2 system but it complains that “Process Monitor requires Windows XP SP2 or higher”. From the new groups this problem occurs when your XPE image is missing the ‘Filter Manager’ component. So I’ll add that component and run ‘Process Monitor’.

  11. astebner says:

    Hi Smedlytonker – I’m sorry for the continued hassles that this issue is causing for you.  You may want to try to use FileMon (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx) and/or RegMon (http://www.microsoft.com/technet/sysinternals/utilities/regmon.mspx) instead of Process Monitor to see if that helps avoid the error dialog you’re seeing there.

    Hopefully one of these tools will help you narrow down exactly what dependency is missing that is causing .NET Framework 3.0 setup to fail in this scenario.

  12. wmiller says:

    Hey Aaron & Smedly,

    I am in the exact same position. I finally got back to working this issue and from the sound of it we are fighting a similar problem.

    I tried including the 3 IIS components that I wasn’t already including (which were only IIS Documentation, Virtual Print and Virtual Script) and this didn’t help.

    I tried running depends on webengine (but I am a little confused since I can only run it on the framework 2 version since 3.0 gets uninstalled following the failure) and it only complains about the same 3 things that it does for every other dll or exe (dwmapi.dll, mpr.dll and shlwapi.dll)

    I then upgraded to include FeaturePack2007 and then the UpdateRollup1.0 and this didn’t make any difference.

    I had to run the installer manually since it didn’t run during FBA (even though I selected the check box) and I verified that the version of dotnetfx3.exe included with the UpdateRollup was the same as the one that I had been using so I believe that this is okay. My error logs still complain about webengine (identical to what you previously posted).

    Any success with Process Monitor or Filemon?

  13. astebner says:

    Hi WMiller – I haven’t heard any additional updates yet, but smedlytonker indicated that they’d post something here once they narrow down the components that are needed.  It might also be possible to fully disable the iisadmin service and try to re-run the .NET Framework 3.0 setup.  There is supposed to be logic inside the WCF component of the .NET Framework 3.0 that will skip some IIS registration steps if the iisadmin service is not installed or installed and disabled.

  14. wmiller says:

    Thanks. I got the same error as listed by SmedlyTonker when attempting to use Proc Mon so I used FileMon and RegMon and I’m plowing thru the log files now.

    I had tried once before to disable the IIS service and it didn’t help but it’s worth another try. I’ll post again if I discover anything new.

  15. smedlytonker says:

    I installed ASP .NET 2.0 and now the .NET 3.0 framework installs. Don’t want to bore you with how I figured out that was what was missing.

    It is odd that ASP .NET is required but it is not listed as one of the required components.

  16. wmiller says:

    I tried adding ASP .NET and it also fixed my webengine.dll problem, however I just moved on to the next cryptic installation problem (nothing in the error log and no return value 3). Thanks for the heads up on your progress.

    BTW, we’re all engineers so the details are never ‘boring’. 🙂

  17. wmiller says:

    The final problem for my particular scenario was that my target device uses a Compact Flash card to boot (with a non-blank volume label) which is identified as removable media.

    For removable media, Windows Installer checks the volume label listed within the MSIs being installed against the label of the actual media itself. In the case of dotnetfx3.exe, the Workflow MSI expected a blank volume label but I had given the CF card a label when configuring so the installation failed at this point.

    Once the CF card was configured without a label, the FBA installed .Net Framework v3.0 without issue. Aaron also updated the Workflow MSI for me to allow installation regardless of the volume label (I am in the middle of testing this and will repost if it doesn’t work but it appears like it will)

    Many thanks to Aaron for all his help and patience!