A very simple way of streamlining this in wyBuild is to allow one to Build Updates from not just 'All Previous Versions' to the selected version, but from 'All Versions' to the selected version. This way, I simply have to build an update from 'All Versions' to version 2, and that also rolls back my version 3 users to version 2 instead of just version 1 to version 2. I'm not sure how easy this would be to implement, but it seems doable to me.
It's very doable, but the problem is that it can be confusing (especially for new users).
Then, during the update, it can execute the v3 to v4 wyu file, and if the user chooses to rollback (not sure what the GUI for this would look like), then it can run the v4 to v3 wyu file...
wyUpdate already supports rolling back during updates. For instance, if the user cancels the update or an error occurs then wyUpdate rolls back to the previous version. We could always keep this rollback info around (past the end of a successful update) however there are a number huge problems with that:
- Space. Some apps are large (many, many gigabytes) and storing rollback info would quickly fill up a user's harddrive.
Backwards / Forwards compatability. We can't make assumptions about data files that an app reads & writes. For instance, let's say AppX 1.0 operates on binary blob files of format BlobX. Then the customer upgrades to AppX 1.1. They open the BlobX file with the new version -- AppX 1.1 converts the file to the updated BlobX format.
Then, a week later, the customer finds huge showstopper bugs and decides to rollback to AppX 1.0. Unfortunately for this customer CompanyX failed to make the new BlobX file format backwards compatible.
In other words we can't just let a customer rollback to old versions (because a company may or may not have made their file formats backwards compatible). We have to make this an explicit choice for the Company, not the user.
We've been thinking about this a while. We're probably going to end up going with a variation of what you suggested. For instance, you can "mark" a version as rotten and if there are no "newer" versions then the next time you click "Build Updates" wyBuild will make updates that go to the latest non-rotten build.
In other words you can push old versions on your customers.
Does this make sense? Does this seem like something that would be useful?