I haven't felt this exasperated in many years. I've never banged my head harder than I did tonight trying to install a little application onto a Windows Mobile smartphone device.
"What does every mobile developer ultimately want to do?" Simple question, simple answer: "To get the application to run on the phone". It took me hours of poring through MSDN's documentations and technical articles to find out just HOW exactly to do that.
"CAB", "INF", ActiveSync, are some of the terms thrown around liberally in the developers' articles. As if everybody knows what they mean. I don't know what a CAB is, I don't know why only a CAB file can install the app on the phone, and I don't know how do I make a CAB out of my executable. The only reason why I started searching for the keyword "CAB" was because I happened to remember that a year ago, that's what a colleague of mine used to run his Windows Mobile app. Now, if only these three simple questions can be answered in the same article, I think MSFT is justified paying good salaries to their technical writers.
Instead, here I am writing in frustration at 4AM in the morning because the documentation is so fragmented and the information design obfuscated! I really don't want to nitpick, but I'd think that since on-device deployment is a common goal for all developers, creating a CAB project would be a highlighted task/feature in Visual Studio 2005. But no, to create a CAB project, you have to add another project into your existing Project, and on top of that, select it from "Other Project Types"!
Frankly I was impressed the first time I saw the collection of documentation and technical articles available at MSDN website, but very soon it's clear quantity certainly does not trump over quality.
The last hop
Getting the app to the device, after a frustrating battle to generate a CAB file, was jumping through another set of hoops. 'Impressive' was my first reaction when I saw how many delivery mechanisms Windows Mobile support for the app installation: SMS/Email/Cab Installer/ActiveSync/Push SMS, you name it. After another wild goose chase trying to find out what is ActiveSync, and whether it ships with the SDK, and whether I really need to install it, it took another half hour to figure out what is the best way of getting the device 'online' and getting it to access the CAB file.
Needless to say, I did manage to install the app and that's why I am writing this now. But the tears of blood may not be worth it.