Skip to content

Conversation

@rc-swag
Copy link
Contributor

@rc-swag rc-swag commented Dec 3, 2025

Fixes: #14261
Fixes: #14664
Build-bot: skip release:windows
Changes

  1. Added a return value using TModalResult to the "Keyman Configuration" form. When "Install Now" is selected as Keyman Configuration exists, the splash screen will also close. This address the issue of the splash screen covering the "restart now" Window displayed by Windows installer.
  2. Also changed the event HandleInstallNow in the UpdateAvailable state to callStartDownloadProcess instead of changing state to Downloading we need it to be new process, which is what StartDownloadProcess takes care off.

@github-project-automation github-project-automation bot moved this to Todo in Keyman Dec 3, 2025
@keymanapp-test-bot keymanapp-test-bot bot added the user-test-missing User tests have not yet been defined for the PR label Dec 3, 2025
@keymanapp-test-bot
Copy link

keymanapp-test-bot bot commented Dec 3, 2025

User Test Results

Test specification and instructions

  • TEST_KEYMAN_UPDATE_NOW_HAS_RUN (PASSED) (notes)
  • TEST_KEYMAN_UPDATE_NOW_HAS_NOT_RUN (PASSED) (notes)
  • TEST_KEYMAN_UPDATE_NOW_KBD_KEYMAN_HAS_RUN (PASSED) (notes)

Test Artifacts

@keymanapp-test-bot keymanapp-test-bot bot added this to the A19S17 milestone Dec 3, 2025
@rc-swag rc-swag marked this pull request as draft December 3, 2025 01:46
@keyman-server keyman-server modified the milestones: A19S17, A19S18 Dec 6, 2025
@keyman-server keyman-server modified the milestones: A19S18, A19S19 Dec 21, 2025
@rc-swag
Copy link
Contributor Author

rc-swag commented Dec 23, 2025

Notes:

  • If Install Now is true and the shell execute is successful Close or set ModalResult
  • Need to handle the splash screen so get a handle to the splash screen and close it also.
  • Maybe on another PR but add an eventhandler to give a status on the Configurtion to show downloading when downloading is required.

@keyman-server keyman-server modified the milestones: A19S19, A19S20 Jan 3, 2026
The Configuration window will return a mrAbort result when we want
the Splash screen to close. This is in the case the Installation
now has been selected.
@rc-swag
Copy link
Contributor Author

rc-swag commented Jan 8, 2026

This is a series of screenshots before and after the change. For this scenario Keyman has run in the current Windows session.
This screen is the same before as after, the check for updates button is pressed an update is found
then the Install Now button is presed.
Config_install_now

Before:
Since Keyman has run in the current Windows session a message pops up warning the user a restart will be required. If windows has not run this pop-up will not appear.
Update_now
Update Now is selected. Keyman starts to install then the Windows installer has "Restart now" form but its hidden by the splash screen In the screen shot you can see the icon for it on the start bar.
Restart_hidden
Selecting the Icon will bring it infront of the start bar.
restart_in_front_splash

After:
Pressing the Install now will kick-off the install but it will also close the configuration and the splash screen.

@rc-swag
Copy link
Contributor Author

rc-swag commented Jan 9, 2026

User Testing

For these tests the PR build needs to beto be older than the lastest Alpha build.

TEST_KEYMAN_UPDATE_NOW_HAS_RUN

  1. Install version of Keyman with this PR
  2. Launch Keyman but at the splash screen choose start
  3. Close Keyman
  4. Launch Keyman but at the splash screen choose configuration
  5. Go to the Update tab and press check for updates
  6. There should be a keyman 19.0.186 or higher
  7. Press install now
  8. The a pop-up warning that this will require a system reastart will display. Select "update now"
  9. Expected Result: The configuration and the splash screen will close.
  10. A pop-up asking for elevated permission will display.
    If you go through these steps quickly the download of the Keyman update may not have finished so it will appear nothing is happening. Showing the download dialog will be addressed in another PR.

TEST_KEYMAN_UPDATE_NOW_HAS_NOT_RUN
After uninstalling other versions of Keyman restart the test machine

  1. Install version of Keyman with this PR
  2. Launch Keyman but at the splash screen choose configuration
  3. Go to the Update tab and press check for updates
  4. There should be a keyman 19.0.186 or higher
  5. Press install now
  6. Expected Result: The configuration and the splash screen will close.
  7. A pop-up asking for elevated permission will display.
    If you go through these steps quickly the download of the Keyman update may not have finished so it will appear nothing is happening. Showing the download dialog will be addressed in another PR.

TEST_KEYMAN_UPDATE_NOW_KBD_KEYMAN_HAS_RUN
After uninstalling other versions of Keyman restart the test machine

  1. Install version of Keyman with this PR
  2. Launch Keyman but at the splash screen choose configuration
  3. Install an older version of a keyboard from disk
  4. Go to the Update tab and press check for updates
  5. There should be a keyman 19.0.186 or higher
  6. There should also be an update for the Keyboard
  7. Press install now
  8. Expected Result: The configuration and the splash screen will close.
  9. A pop-up asking for elevated permission will display.
    If you go through these steps quickly the download of the Keyman update may not have finished so it will appear nothing is happening. Showing the download dialog will be addressed in another PR.

@keymanapp-test-bot keymanapp-test-bot bot added has-user-test user-test-required User tests have not been completed and removed user-test-missing User tests have not yet been defined for the PR labels Jan 9, 2026
@rc-swag rc-swag self-assigned this Jan 14, 2026
@rc-swag rc-swag marked this pull request as ready for review January 14, 2026 03:57
@keyman-server keyman-server modified the milestones: A19S20, A19S21 Jan 16, 2026
@Meng-Heng
Copy link
Contributor

Test Specs

  • Windows 10 Bootcamp in macOS Sequoia

The results are as followed:

Prerequisites for every tests

  • Uninstall active Keyman
  • Restart

Test Results

  • TEST_KEYMAN_UPDATE_NOW_HAS_RUN (PASSED):
  1. Install keyman-19.0.190-alpha-test-15269
  2. Launch Keyman -> Click Start -> Exit Keyman
  3. Launch Keyman -> Click Configuration -> Go to "Update" -> Click" Check for new updates"
  4. Keyman 19.0.192 shows up -> Click "Install updates now"
  5. Verified: a pop-up warning “require a system restart"
  6. Click “Update now”
  7. Verified: Startup and configuration windows close, and a pop-up asking for elevated permission
  8. Verified: After some time, a pop-up warning “require a system restart"
  9. Click “Yes” > Machine restart
  10. Verified: After a restart, a pop-up asking for elevated permission > installation process complete
  11. Keyman 19.0.192-alpha is active.
  • TEST_KEYMAN_UPDATE_NOW_HAS_NOT_RUN (PASSED):
  1. Install keyman-19.0.190-alpha-test-15269
  2. Launch Keyman -> Click Configuration -> Go to "Update" -> Click" Check for new updates"
  3. Keyman 19.0.192 shows up -> Click "Install updates now"
  4. Verified: Startup and configuration windows close
  5. Verified: After some time, a pop-up asking for elevated permission
  6. Keyman 19.0.192-alpha is active.
  • TEST_KEYMAN_UPDATE_NOW_KBD_KEYMAN_HAS_RUN (PASSED):
  1. Install keyman-19.0.190-alpha-test-15269
  2. Launch Keyman -> Click Configuration -> Download Khmer Angkor 2.2 from machine
  3. Go to "Update" -> Click" Check for new updates"
  4. Verified: Keyboard Khmer Angkor 2.4 and Keyman 19.0.192 show up
  5. Click "Install updates now"
  6. Verified: Startup and configuration windows close
  7. Verified: A few seconds later, a pop-up asking for elevated permission
  8. Verified: After some time, a pop-up warning “require a system restart"
  9. Click “Yes” > Machine restart
  10. After a restart > a pop-up asking for elevated permission > installation process complete
  11. Verified: Keyman 19.0.192-alpha and Khmer Angkor 2.4 show up as expected.

@keymanapp-test-bot keymanapp-test-bot bot removed the user-test-required User tests have not been completed label Jan 17, 2026
Comment on lines +172 to +176
configFrmResult := Main(Self);
if configFrmResult = mrAbort then
Command_Exit
else
Do_Content_Render;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a little WET with ll.157-161 😉

I suppose we can refactor in the future if there's a 3x

Copy link
Contributor

@darcywong00 darcywong00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

nit - can you update the PR description to start with "action" word?

Comment on lines +157 to +161
configFrmResult := Main(Self);
if configFrmResult = mrAbort then
Command_Exit
else
Do_Content_Render;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we wrap this in a function so we don't repeat the logic below?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

6 participants