[Windows Mobile Software Development] NLS:
My problem is making the device as it was before a firmware upgrade, without being forced to reinstall everything.

Supposedly there are now backup options (from Sprite and SPB) that allow you to restore to a firmware updated device (or even a new device!).

I don't trust those. They vaguely claim that they do that, but we have to wonder how.

Also there are a few programs (a couple of them in here - even one with subscription) that "re-provision" the device. To be honest I find them VERY complex. I think it takes more time to set those up properly than re-install everything (if we talk about 20-30 apps and a normal "firmware update" cycle... I am not talking about people with 400 apps and testing all the custom ROMs 3-4 a week). Even if you set those up properly, they take long time to re-install everything.

I thought about this and the problem is in fact simple:

What possibly changes between firmware updates?

- ROM software

- Auto-installed from ROM software

- Some registry entries (also possibly some removed and some added)

Is that true?

So. The solution I propose is not as "stupid proof" as commercial backup/restore solutions, but I think it is also WAY safer than them. It is also much faster than "re-provisioning" programs.

What is the process to follow:

- Install the program I propose (let's call it "Smarter Upgrader") FIRST before anything else installed on the device (maybe only after the forced provisioning that happens anyway).

- You tell the program to take a "fresh system backup".

- Program makes a nice image of the whole registry.

- Program makes a nice backup of everything without "ROM" attribute from main memory.

- You forget about the program. :)

- You install everything you need and work with your device normally.

- A new ROM comes up and you want it badly.

- You run the program and command it to take a "pre-upgrade backup".

- Program takes a full registry backup or if it is smart enough, already makes a comparison with first backup and just stores the changes (also detects possible eliminated keys - although this is rare from factory to used non-upgraded device).

- Same for main memory software. Backs up only what shows different (or new) from the time of "fresh system backup". If some ROM software is replaced (as is the case of hotfixes), then it is detected as new (as in "fresh system backup" ROM files were ignored anyway).

- User does the upgrade.

- After the upgrade (and forced provisioning), installs this program first.

- Program is run in mode "post-upgrade, new fresh device" backup ("new fresh device" as this mode will also replace the original "fresh device backup" with a new one).

- This mode will take the full image of the registry.

- Compare this registry with the ORIGINAL "fresh device" registry and the differences it detects are the new or changed keys of the new firmware (correct?).

- Will then compare those "differences" to the "pre-upgrade backup". The program here has many many new keys (from the installs of apps before the upgrade), that will normally RE-ENTER back to the registry and possibly a few keys that are different between ALL THREE: the original registry, the upgraded registry, the pre-upgrade registry. These are normally system related keys that the user (willingly or without knowing) has tweaked while using the device (before upgrade). Here the program should ASK the user what to do (this is why the program I propose is not for the "WM freshman"). For example there is a possibility that a key in 1.43 Leo ROM, sets the screen sensitivity to something, then a tweak program sets this to something else. Then new ROM has a different default value. Here the user will decide if he wants to follow the new ROM default or his tweak. I don't think this will be for 100 keys. It will be a much smaller job.

- Next the program will do almost the same for main memory software. Will compare "fresh device" with "post-upgrade". If there is anything (non-ROM attribute) different, it is marked as "new ROM default".

- Then system compares this with the "pre-upgrade" backed up main memory software. What is not "new ROM default" and is not already in the device, it is written back on the device.

- For the programs that ARE in "fresh install", ARE marked "new ROM default" (so the new ROM has a new version) AND are in the "pre-upgrade backup" (so user has installed some version manually), system asks. For example (again Leo) has Google Maps, user finds a new version in Google (well this is real example) and new ROM has yet a different one. System asks which to keep. Later if program becomes smarter, it could detect version strings and automatically use the newer one.

- Program performs a general clean up (for example make sure the Start Menu is as the user had it configured before upgrade, or as close as possible - I for one like to make folders and move everything in them) and soft resets.

...after this procedure (that seems long but I doubt is longer than "re-provisioning" and is surely shorter than reinstalling and WAY safer than "ROM upgrade" backup software modes), the device should have the new ROM and the software that was installed before.

Three steps:

- Backup clean device (this is what commercial backup solutions lack so I don't trust them)

- Backup device before upgrade

(upgrade)

- Post-upgrade Process (which also serves as the NEW backup clean device file for further upgrades)

...allow the system to do it's magic during the third step.

BTW as an idea for the concept I propose, SKTracker is a program that half-way goes where I want.

What do you people think?