This removes the FDEV ID Submodule, and instead hands over responsibility for maintaining the fdev id files to the internal system updater. Instead of the full submodule, we only pull the two files we need.
'status' is a child of 'edmarketconnector', not of `self.root`. And if
we were to do `self.root.children['edmarketconnector'].children['status']`
then we might as well use `.nametowidget()`.
**BUG FOUND**
The code in `Updater.check_appcast()` assumes that
`semantic_version.SimpleSpec.select()` will say "5.6.1 is an upgrade for
this 5.6.0". But it doesn't. It's looking for *matches*.
So this needs to be a proper loop/compare *and* should only take into account
options *for the current platform*.
* Updater.__init__() now takes 'provider' argument to specify if we use
the internal checking code, or the available external code.
* EDMC.py changed to utilise this with internal provider.
* EDMarketConnector.py changed to use internal provider if not frozen,
else the internal provider.
* Corrected the darwin/MacOS toggling of auto updates checking to actually
use the Sparkle, not WinSparkle, API call.
* Updater.check_appcast() does the internal checking:
* class EDMCVersion to hold the information.
* Returns None on any error, or if it didn't find a newer version.
* Returns an EDMCVersion object if it found a newer version.
* py2exe only supports Major.Minor.Patch(.Revision), so pass only
Major.Minor.Patch to it. 'File version' of generated EXEs will have
a `.0` appended as .Revision.
* Set 'product_version' in py2exe with the full version string. This
ends up in the EXE 'Product version' property.
* WinSparkle accidentally suppoorts semver -prerelease correctly, but
not +buildmetadata. So trim the latter off and set that as the version
for checks.
* Stores disable_autoappupdatecheckingame in settings.
* If 'disable' is active then once you're in-game WinSparkle auto
check for updates is disabled.
* Whatever the state of the option WinSparkle auto updates are
(re-)enabled when you exit the game to Main Menu or fully.
* Using 'Help' > 'Check for updates' manually will still always work.
It has been difficult to test the code fully because it isn't easy to
get WinSparkle's registry data about last update check time set just right
to not check immediately, but to do so some reasonable time after you're
in-game and have confirmed the new option setting isn't easy.
Worst case people won't learn about an update until the next time they
run EDMC.