"RokuMarkn" wrote:
I think In-Channel Upgrade is fully described in the roChannelStore page, with additional information in ifChannelStore and elsewhere. There is even sample code in the roChannelStore page. I just searched for "upgrade" in the docs. Please let me know if you have ideas for making this information more accessible.
Well it's written in your terse, "sapienti sat"* language 8-). But i would hate to admit i am not "sapienti" enough for the "sat" - and also doing due diligence reading is a common courtesy. So i drilled down for "upgrade" as suggested. What i find is mostly about mechanics of a channel-upgrade - and only a little about semantics. Yet there is some - and if i assemble snippets like a puzzle, i see light:
- Each channel may have one "In-Channel Upgrade" channel associated with it. (src ifChannelStore)
- When any channel is created, it can be associated with another channel, its "In-Channel Upgrade" channel. (src roChannelStore)
- Purchasing an In-Channel Upgrade causes the currently running Channel to be replaced with another, "upgrade" channel, specified by the Channel developer. (src Channel Packaging And Publishing)
- If the purchase was completed successfully [..] then the new channel has already been downloaded and installed on the unit, and the currently running channel will be automatically deleted when the user exits it. (src ifChannelStore)
Somebody please correct me if i am getting this wrong:
So, each channel may be assigned another, "upgrade" channel in a N:1 relationship (though
roList returned by
getUpgrade() hints that may change in the future and allow M:N). Thus it would seem different channels X, Y, Z installed should be able to upgrade to the same channel U. The benefit of following
doUpgrade() path (vs link through Channel Store to the new channel) is the opportunity of doing that "upgrade" transactionally - that is, old channel X make sure new channel U was installed, do some cleanup, maybe "pass the torch" to U - then have faith that on X exit, X will be deleted. Neat!
Would it be fair to assume that "purchase" mentioned above might be of value $0, i.e. free upgrade?
And also that if X has done upgrade to U, then Y can do upgrade to U faithfully (existing U registry won't be lost, Y will be uninstalled)?
(*) "enough has been said for the wise" (Latin,
dictum sapienti sat est)