[Windows Mobile Development and Hacking General] qmdm:
Development of User Customization/Provisioning App

In setting up my Kaiser, I want to use User Customization, to auto-install cabs and provisioning files for my personal settings. And to save precious device memory, non-essential apps are installed to the Storage Device, and only critical or continually running apps are stored in main memory. I believe this is a common setup.

Have other people found that getting this kind of setup is not trivial? Retargeting cabs for auto-installation to the storage card, and testing if this actually works for that application is a non-trivial task given the number of cabs available, and these efforts don't seem to be shared much between users. I've seen just a handful of SD-retargeted apps at xda-developers.

Keeping up with all the latest updates and tweaks also takes considerable effort and searching. The excellent chefs do a truly fantastic job with cooking ROMs with the latest apps built in, but burning a whole new ROM to get the latest update is inconvenient, particularly if your settings are not yet set up for easy restore via provisioning. The HTC cab collections by Dutty and others make this process easier by putting it all in one place, but you still have to download each cab install it and then try to keep track of which version you last installed, and of course this doesn’t address all the non-HTC apps that you might have on your device.

Building provisioning files for your persinalized settings is challenging to say the least, as the documentation for provisioning service configuration providers is sparse and doesn’t cover all the features. Making these provisioning files by hand can be involved (e.g. see the description for getting the Owner ID details into an XML file in the main UC thread.)

These are the main issues I’ve experienced trying to set up my Kaiser. Configuring a device with UC, apps installed to the SD and with provisonined settings and keeping the whole updated is a very time consuming task, and requires several tools to accomplish (WceCabManager, RapiConfig, SDConfig Tool etc..). Have others experienced this? If not, I’d like to hear what solutions people have used.

If this is a problem for others, then I would like to start collaboration on an application that can help simplify using UC and SD deployment and creating provisioning files as well as keeping installed applications up to date, and sharing knowledge about the applications.

The key features of the application would be:

•	Runs on the PC. Maintains a local repository of CABs and provisioning files. User adds apps and settings to the repository either manually, or by downloading from a repository.

•	Provisioning templates – similar to the XML file for KaiserTweak – describes provisioning characteristics that are available for tweaking or querying from the device. Querying settings from the device allows you to configure the device as normal (using the device UI) and then “suck” those settings out of the device into a provisioning file. You can then create a new provisioning file from the provisioning template for deployment to your device. (Anyone who's set up Wifi via hand-written provisioning xml knows what a time-saver this is!)

•	metadata for CABs and provisioning templates in remote repositories: e.g. versions available, edition of CAB to install to SD, does installation require user input?, known issues for each version, etc.

•	CABs and settings can be bundled into a Recipe for easier management. (E.g. all HTC apps.) Provisioning templates for the application can be bundled in the recipe, so users can install app and get a list of available registry tweaks for that app.

•	Connection to a central repository for downloading updates to items in the local repository and discovering new CABs, templates etc.

•	User builds their own local recipies containing cabs, provisioning files and other pre-cooked recipes to configure their device with apps and settings as desired.

•	Deploy now: deploy selected items device now. (Given that a recipe can contain other recipes and cabs and provisioning files this can save a lot of work manually copying and running these on the device.)

•	User customization: Build SDConfig.txt from selected items, and sync all files needed to SD.

•	The features above are intended to be used by regular users. There will be tools for recipe concocters (advanced mode):

o	Tool to retarget CAB to different installation path, or to indicate in metadata that this does not work.

o	Build new Provisioning Templates

o	Putting cabs and settings into a Recipe

o	Updates to the repository

While there are already tools that can do bits and pieces of this, a turnkey solution would be much easier to use for novice users. The repository metadata allows valuable knowledge to be shared, e.g. versions available, SD-install, installer requires input, known issues etc. and I believe is an important feature that will make provisioning and keeping devices up to date with the latest CABs and registry tweaks much simpler.

In terms of development, I imagine the app will initially be a stringing together of existing tools, with tighter integration implemented as necessary in future revisions.

Does this seem like the right direction? Is it a problem worth solving? Let me know your thoughts. I'd like to kick this off on SourceForge if it resonates with others.