The SoftGrid Team blog published an entry today that describes the three methods for upgrading Softgrid applications. The three types are:
1) Active Upgrade – You open the existing package up in the sequencer, install your updates and add the package version to the Management Console. New launch requests for the package will begin using the new version.
2) Completely new sequence – You build a completely new sequence. The new sequence will need to be streamed down to new clients, but a client can run both versions simultaneously. The downside is the user preferences from the old version of the app are not carried into the new package.
3) Branched package – You approach a branched package like an ActiveUpgrade, only you perform a Save As function which will create a separate package GUID and asset folder. This operates like a completely new sequence in that both can operate at the same time, the difference is that you avoid having to recreate the sequence from scratch.
Each of these methods has advantages and disadvantages. Which method you choose largely depends on the following criteria:
1) Do you need to offer both versions of an application concurrently? If yes, then options 2 and 3 are your choices.
2) Do you care about retaining user preferences/customizations when you perform your upgrade? If yes, then option 1 is the only built in solution, unless you want to attempt some method of migrating the user preferences between your sequences. This would need to be an export/import process external to SoftGrid.
3) How concerned are you about being able to quickly revert to a prior version if the upgrade fails? This can technically be done with all three approaches, but using ActiveUpgrade may put you in a situation that the user customizations may not allow a revert to the previous version, so you may need to drop the user customizations and start over with a blank slate.
4) Are you concerned about re-streaming large amounts of the package? If you use options 2 or 3, you’re looking at streaming the entire contents of the package. If you use option 1, you’ll only be streaming the delta components of the package that occurred during the upgrade.
The ideal scenario in my opinion is option 3 (Branched package). The only exception would be if you needed to carry user preferences over or if the package was of a substantial size that you don’t want to re-stream it again. Read the full article here.
EDIT: Thanks to BoruRR for clarification on Branched Package streaming.