Why can't I add MSXML3 on PocketPC 2000-2003 devices?

Windows Mobile 5.0 shipped MSXML3, as I describe here.  On PocketPC 2000-2003 devices, we ship MSXML2.  Both of these are pretty much straight ports from the desktop MSXML versions, with some features removed and some tweaking to better conserve RAM on small devices.  Alas not everyone has went out and upgraded to a Windows Mobile 5.0 device, so people still are stuck with various limitations of MSXML2 when targeting older devices.

One source of confusion is that Windows CE 4.2 for general embedded shipped MSXML3.0.  That is the same version of the OS that is on PocketPC 2003.  So why is it that PPC2003 has MSXML2 and not MSXML3?  The reason is that the PPC team was extremely tight on ROM.  Going from MSXML2->3 would've cost something a few hundred KB of ROM space, which they did not have.  If I recall correctly, they were targeting 16MB ROM devices at the low end.  These ROM pressures aren't so bad in WM5 devices, so we could get MSXML3 in.  There was also some market pressure to do this -- i.e. people like you who read this blog and yell at me for not giving you the features you want :).

Can you backport MSXML3 to a PocketPC 2003 device?  In theory, yes.  As long as you have Platform Builder 4.2, you could generate MSXML3.dll and put the required registry settings in a .cab file and you'd be good to go.  In actual practice this isn't allowed, not due to technical but due to the license agreement of Platform Builder.  Sorry folks - this is a marketing/legal thing and I'm only able to help with engineering issues.  Microsoft isn't going to do this because if MSXML3 for PPC 2003 came from us, we'd need to make it official which would mean an enormous amount of testing.

Wish we had a better story here.

[Author: John Spaith]