Using the KeymanMutex wrapper to check if a download process is occuring
if it isn't and we are in the downloading state this means the download
process exited early. We can then clean up any downloaded files and
reset the statemachine and check for updates again.
Check updates meaning has slightly changed it is now automatic updates
and it will now check, download and when possible start the install.
Previously it just meant a check for upates was made and notified
the user of updates.
Fixes:#13114
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
# Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
# Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
Need to make sure there is a keyman install package before
calling do install keyman. The handleinstallpackages is launched
on a different process hence why we need it to call do install keyman.
The UI checks have been moved outside the state machine.
This was clean for the install now case. For the waiting restart case
not so. To help a new method ready to install was added to the state
machine.
Made sure that since adding install packages it aligns with
the state transistion matrix. Also rename HandleMSIComplete to
removed cached files and removed the call in the function for
ChangeState(IdleState); Now it can be used in multiple places
when cleaning up the cached files.
Remove the retry state as the process will retry in the same process.
Future we could consider adding a retry state that would retry on
the next time kmshell is started for any reason.
Remove the extra time since last update check and let remote
update check control it. Also remove the events on the buttons
as and use the button modal property