On my Blackjack phone, I use Pocket IE, Opera, and the pseudo browsers in Yahoo! Go and Windows Live Search for Mobile. But none of them deliver the Firefox-level experience I really want. So today I grabbed the latest build of Minimo, a Windows Mobile build of Mozilla that has been in development for a few years now. I installed it, it started, it stopped, it completely trashed my Blackjack smartphone. Ouch.
I'm not complaining about Minimo, since it's a 0.2 product, it's open source, and I'm thankful folks write software and give it away as early as possible. Stuff happens, especially when it's v. 0.2 and mobile (since true smartphones give the user full power over the device and there is rarely a root vs. user privilege distinction).
Instead, I figured I'd share the symptom and the solution.
Symptom: After rebooting, the home screen was missing graphics, the Start Menu was empty, and the whole device was relatively non functional.
After freaking out for a moment or two, I plugged in my ActiveSync cable and opened the device file explorer from my desktop. The filesystem seemed mostly ok. The biggest problem I immediately saw was that, in the Windows directory, all of the folders were gone. Bad for Windows. But not so bad for me, since the rest of my data looked to be still there.
Step 1. Make a folder on my desktop, and copy off My Documents, My Pictures, etc. from the Blackjack.
Step 2. Copy off interesting folders in the Application Data folder from my device to the backup folder. In my case, this was a Google Maps for Mobile data folder.
Step 3. Copy off application folders from under the Program Files folder. Actually, I could have skipped this step and installed the software anew. Moreover, there's no guarantee that copying an application folder ("xcopy deployment") will work. But many mobile apps play nice and keep all the necessary binaries in their folder. Some of these same ones also play not-so-nice and put configuration data in their app folder too. Ideally this should go in a data folder (like under Application Data) or user settings folder. But it doesn't always work that way, and I wanted to preserve this data if possible. So... grab the app folder for things like Yahoo! Go, Live Search, etc.
Step 4. Factory reset! Unhook from PC. Power off the Blackjack. Holder the "up direction" on the directional pad while powering back on. Answer the prompts indicating you do want to format (the flash memory).
Step 5. Wait a few moments, and you're looking at the baby fresh Blackjack that greeted you when you first took it out of the box.
Step 6. Plug it back into your PC. If you use Exchange ActiveSync and/or DirectPush, enter your account and password data. The phone will sync and all of your contacts, calendar, mail, etc. will automagically re-appear on your phone.
Step 7. Copy the stuff from steps 1, 2, and 3 back onto the device in the appropriate locations.
Step 8. Reinstall any OS extensions that you need, such as the .Net Framework. In particular, the Blackjack doesn't ship with .Net Compact Framework v. 2. So if you use any software that depends on .Net CF2 it, you'll need to reinstall it. Easily enough done.
Step 9. Adjust device settings the way you like -- things like sound profiles, choice of home screen, and which app lives under the right-side-soft-key.
All in all, only a minor hassle.
Here's a vaguely clever idea in parting: Microsoft should provide an API (as part of the Pocket Outlook / Exchange Sync services) that lets apps store their data (and backup images of themselves) with a mechanism that syncs to storage on the Exchange Server. Maybe with some kind of unified store API like Core Data. Preferably with versioning.
This would be good for Microsoft, because it would be a great phone feature and a great way to sell Server and Exchange licenses, and maybe even work SQL Server and SQL Server CE. It would be great for the end user (me) because if things go badly, I can wipe my phone, re-create my pairing to the Exchange server and -- just like my contacts and mail -- all of my apps and config data would show up.