If you're willing to spend a bit of effort, you can have your device automatically configure 99.9% of what you want, as part of the customization occuring after flashing.
Look up
SASHIMI, which should live on your SD card (or whatever you have which survives a hard reset). It basically install all the CABs, REGs and provisioning XMLs you want, plus runs any Mortscript, all in one big batch, according to certain sequencing rules. It can be configured to launch upon inserting the SD card, or as part of UC (User Customization), or to execute UC as part of itself, or run it manually. Most CABs which require manual intervention can be automated by using clever Mortscripts. The REGs and XMLs take care of configuring apps, games, serial numbers (legal, of course) or even network settings and Manila tweaks.
I now routinely flash a new ROM and leave my device for 30 minutes. I need to check in on it to tap past the WM setup dialogs. With that out of the way:
- all tools, apps and games CABs are installed, many with accompanying REGs for configuration
- WiFi is configured with my most used hotspots
- time is synchronized (assuming WiFi is available during this process)
- 3G is disabled (for better battery life), my data connection is configured but disabled (a la MoDaCo NoData)
- Pocket Outlook is setup with my Exchange account, an initial sync is performed (assuming WiFi is available), and additional mail folders are tagged for syncing
- PPCPimBackup restores my most recent backup of SMSes and call history (I've flashed or hard reset probably 20 times the last 2 months, and don't miss a single SMS/call since the day I bought the HD).
- My Start menu and programs list is neatly sorted into folders (of course this needs rework when I switch between ROM chefs)
- AEButton Plus is setup with my buttons the way I want them.
- SKScheMa is setup with the profile changes I want (GSM/WiFi off, silent and low brightness at night)
The only thing I really miss is to automatically provision a couple of Bluetooth pairings (a headset and 2 PCs). Apparently the encryption keys used for storing these pairings, is renewed on each hard reset. Typically, the first morning after a hard reset, while driving my car, my HD beeps every 1 minute as the car kit attempts to connect, and I'm usually unable to deal with it until I stop the car.
As you can imagine, there's quite a bit of initial manual labour, but I guarantee you that it's worth it.
I recommend that you get the following: Resco Explorer (w/registry addon), Orneta Notepad (or MobilePad). With these, most of the work can be carried out on the phone itself. To figure out the registry settings for a certain program or option, there are two ways:
- manual search, typically fast and has a very high success rate by first visiting HKLM\Software and HKCU\Software, then looking for the vendor or software name.
- registry diff, slow but very accurate, requires PC (for now). Export HKLM+HKCU (using multiple select in Resco regedit) *before* you make the configuration change, and *after* you've made the change. Copy the two reg files to a PC and do a diff (WinMerge should do a good job). Alternatively, you can use a Windows tool like Registry Workshop or CeRegEditor to export the registries, but I think the first way is faster, and you can actually prepare the exports on the move, then do the diffs when you come home.
Some programs store configuration data in files - these *may* be a bit harder to figure out, but they're usually in the installation folder. Once you've set up such a program to your liking, copy its CAB to SASHIMI\Auto\CAB and the configuration file to SASHIMI\Auto\Root\Program Files\<app name>, and the app will be as you want it after the hard reset.
SASHIMI can also back up such files for you, just put the paths into filebackup.ini. Similarly regbackup.ini can perform registry backups that will be automatically restored after a hard reset. You need to run or schedule this backup yourself, though, but both can be performed with one shortcut to SASHIMI.
I'm sorry for making this so long - I'll stop now, and hope this post provides a bit of inspiration to others. I can also help with certain aspects of UC - I'd love to post my custom tools and scripts, they're just not prepared for public consumption yet.