Windows Vista and smart device development

Folks using Beta 2 and later CTPs of Windows Vista for device developers would have run into some rough weather over one or more of the following issues. Rest assured - we're aware of this (and some of these have already been fixed internally)  and by the time Windows Vista goes gold, the device development story will be squeaky clean and we can retire this blog post to that big blog graveyard in the sky.

But in the meanwhile, here are the issues you might run into and the workarounds for those. As always, if this doesn't work for you, please post to the forums and newsgroups where you can flog us in public :-)

Installing Windows Mobile 5 SDKs on Windows Vista

To get Windows Mobile 5 SDKs to install on Visual Studio 2005 on Windows Vista, you need to turn of UAC first. You can do that from ControlPanel->UserAccounts->ChangeSecuritySettings. Do remember to turn it back on once you're done installing!

SQLMobile databases created on XP or older OSs (and device emulators) do not work on Vista and vice versa

This is a bug that I personally care about a lot because I was the first person to investigate this bug when it was reported by a tester internally (and I spent 2 nights in the debugger trying to figure it out). :-)

Unfortunately, there is no good workaround today. To make SQLMobile databases created on XP work on Windows Vista, you'll have to recreate them or create them on Windows Vista from scratch. However, this will only help you in the IDE. On the emulator or on devices, you need to use databases created on Windows XP.

I know very well how painful this is (I was the PM for the feature after all :-)) and I owe you an explanation on why this is so. The reason is that Windows XP and Windows CE 4.2 and 5.0 sort strings a certain way (which we use when we call CompareStringW) but Windows Vista sorts strings another way. This sort order is reflected in the .sdf file and hence databases which use one sort order won't work with the other sort order.

Rest assured again - we re-engineered some things to make this work and you'll see this fixed in SP1. For those curious, SqlMobile now detects when the sort order is different and compensates for it.

Cannot create native C++ projects

If you try to create a native C++ Smart Device project, you would have repeatedly try to finish the ‘New Project’ dialog but wouldn’t have been able to get it to work.

This problem is due to the New Project dialog not playing nice with the changes in Internet Explorer 7 (the New Project dialog for native projects is actually a glorified web browser control).

The workaround is simple - Open the registry entry:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Ext\PreApproved
Add a new entry and name it
{D245F352-3F45-4516-B1E6-04608DA126CC} 

Again this is something we have fixed for Visual Studio 2005 SP1.

Cannot debug/deploy over ActiveSync

When you  debug/deploy from VS2005 to any WM device, it says Active Sync not installed. Active Sync ships as Windows Mobile Device Center in Vista. A fix is needed in Visual Studio so that it can understand this.

To fix this, open the  registry entry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services 
Add the following entries                                                                                                                               
MajorVersion (DWORD) = 4
MinorVersion (DWORD) = 0
[Do not install Active Sync 4.1, as its already present in Vista as Windows Mobile Device Center. ]

Device Emulator Manager UI gets corrupted on repeated aborts/connects

The time-tested technique of stopping and restarting the Device Emulator Manager should fix this.

Bugs with no workaround yet

The following issues have no workaround unfortunately. We will get them fixed as soon as we can.

• “Not enough storage” error occurs when you open Property Pages in Visual Studio Japanese.
• Cannot Cradle the Emulator in Vista. Yes – we know how painful this is :-(

Sriram Krishnan