View Issue Details

IDProjectCategoryView StatusLast Update
0001011OpenMPT[All Projects] Generalpublic2017-08-16 22:51
ReporterSaga MusixAssigned To 
PrioritylowSeverityminorReproducibilityN/A
Status newResolutionopen 
Product Version 
Target VersionOpenMPT 1.?? (long term goals)Fixed in Version 
Summary0001011: Automatic update
Description

There are already automatic update notifications, but people are lazy, so in addition we should offer to show what's new and automatically install the new version. In case someone is skipping several versions, we might want to show the news for all skipped versions as well. Not the complete changelog of course, but just the most important items.

We will need a differently structured response from the server, and since picojson is already used for the Wine integration, using JSON for update information seems like a good idea. The update response could look something like this:

openmpt_versions = [
{
  "version":"1.28.01.00",
  "released":"2018-01-01",
  "announcement_url":"...",
  "download":
  {
    "win32":{url:"...","windows":"6.1","bits":32,"required_processor_features":{"sse2"}},
    "win32old":{url:"...","windows":"5.1","bits":32},
    "win64":{url:"...","windows":"6.1","bits":64},
    "win64old":{url:"...","windows":"5.1","bits":64}
  },
  "news":
  [
    "Fixed stuff",
    "Cool new feature"
  ]
},
(more skipped versions here, download links not needed)
]

The rationale for sending all download links to the client is that information about the user's operating system environment is sent to the server optionally. I think data avoidance is a goal worth striving for, so we should not force this information to be sent along.
This means that the client has to decide which version to download. Since support for some operating systems and processor combinations may cease to exist, we may also need to specify extra data the client should check for.
Suggested way of doing this:

  • Check if the current client configuration (e.g. "win32old") still exists and it meets the OS requirements specified by the server (e.g. 5.1). If version exists and minimum OS requirement is fulfilled, use this version.
  • Otherwise iterate through all other offered versions and check if any of them match the user's OS and current OpenMPT bitness (to avoid issues with plugin bitness). Suggest the user to switch to this new build variant.
  • If still no build variant is found, notify the user of this fact. Suggest visiting the OpenMPT website.

What else needs to be considered:

  • Is the user using an installer or zip version?
  • We need to decide if we need a new update checker entry point on the server or if we keep the old one. Since the update client already sends version information to the server, we can dynamically decide if we send old-style or new-style update information.
TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

manx

manx

2017-08-14 11:27

administrator   ~0003167

I'd prefer to use a new update URL. That way, the client can also send JSON data, which could easily be extended without breaking backwards compatibility in the future (which is a major hassle with the current way of doing things).

Other than that, I really like the proposal to send all build variants. That's exactly what I also had in mind.

Additionally, we should at least take a look at WinSparkle ( https://winsparkle.org/ ). I do not know if the sparkle specification would be enough for what OpenMPT needs, but even if it is not, and even if we do not use RSS/XML (like Sparkle), there might be good ideas in there to copy or mimic.

Issue History

Date Modified Username Field Change
2017-08-14 10:24 Saga Musix New Issue
2017-08-14 10:25 Saga Musix Description Updated View Revisions
2017-08-14 11:27 manx Note Added: 0003167
2017-08-14 11:32 Saga Musix Description Updated View Revisions
2017-08-14 12:40 Saga Musix Description Updated View Revisions
2017-08-14 12:42 Saga Musix Description Updated View Revisions
2017-08-16 22:51 Saga Musix Description Updated View Revisions