Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addon store restart dialog is overlaping installtasks dialog #15613

Closed
beqabeqa473 opened this issue Oct 12, 2023 · 7 comments · Fixed by #15852
Closed

Addon store restart dialog is overlaping installtasks dialog #15613

beqabeqa473 opened this issue Oct 12, 2023 · 7 comments · Fixed by #15852
Labels
feature/addon-store Features / behavior of the add-on Store p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Milestone

Comments

@beqabeqa473
Copy link
Contributor

Steps to reproduce:

Make a simple addon and in installtasks.py, in method onInstall try to show some informational message.
install it from addon store as you install an addon from available addons tab, not with install external button

Actual behavior:

When pressing close button, dialog is shown but shortly is overlapped with NVDA's restart dialog

Expected behavior:

Dialog should stay alive untill it is closed.

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

Version: alpha-29601,f1c73d1d (2024.1.0.29601)

Windows version:

Windows 10 22H2 (AMD64) build 19045.3448

Name and version of other software in use when reproducing the issue:

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes

Have you tried any other versions of NVDA? If so, please report their behaviors.

All versions which include addon store

If NVDA add-ons are disabled, is your problem still occurring?

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

@CyrilleB79
Copy link
Collaborator

@beqabeqa473, it's not possible to use a simple test add-on from the add-on store (since it should actually be submitted to the store). Except of course if you have performed a test hack to mimic the add-on store.
If you have performed such hack, could you please indicate the steps?

If instead you have tested with a real add-on from the store, could you indicate which one?

@beqabeqa473
Copy link
Contributor Author

beqabeqa473 commented Oct 12, 2023 via email

@CyrilleB79 CyrilleB79 added the feature/addon-store Features / behavior of the add-on Store label Oct 12, 2023
@seanbudd
Copy link
Member

This should be fixed with #14430 - where in 2024.1 we can run the install tasks after NVDA restarts, instead of before.

@seanbudd seanbudd added this to the 2024.1 milestone Oct 13, 2023
@beqabeqa473
Copy link
Contributor Author

beqabeqa473 commented Oct 13, 2023 via email

@seanbudd seanbudd added p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation. p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority and removed p3 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority labels Oct 16, 2023
@seanbudd
Copy link
Member

@lukaszgo1 - based on your previous comment, do you still plan to fix this? would you like to be assigned to this issue?

Do you mind outlining how you plan to fix this?
I can't imagine this being possible without add-on authors notifying NVDA when their blocking install task ends.

@seanbudd
Copy link
Member

I can't imagine this being possible without add-on authors notifying NVDA when their blocking install task ends.

Mick suggested passing in a resource handler so add-on authors can use with blockingInstallTask: syntax

@lukaszgo1
Copy link
Contributor

Sorry for the delay. In general doing this without forcing add-on authors to notify when install tasks are done would be ideal, and from my testing seems pretty doable. Using the same approach as when installing the add-on from a external bundle that is executing the installation in the call to gui.ExecAndPump, which ensures that the restart dialog is shown only after installation of the add-on is done. I have some intermittent failures with this approach, but that is certainly due to issues in my prototype, rather than the design idea being flawed, so I'll submit a PR for this either today or tomorrow.

seanbudd pushed a commit that referenced this issue Nov 28, 2023
… is shown only when the install is done (#15852)

Fixes #15613

Summary of the issue:
When installing add-ons developers may want to present a GUI prompt as part of the install tasks. When installing from the external bundle this prompt is blocking, in other words user has to answer it before installation is complete and NVDA asks to be restarted. In comparison installations from the add-on store shows the prompt, but then the restart prompt was shown, making it impossible to interact with the add-ons installation GUI.

Description of user facing changes
When installing add-ons from the store the restart message is shown only when all installations are done, giving user a chance to interact with eventual GUI prompts they raise.

Description of development approach
Similar to the code path used when installing external bundles, call to the addonHandler.installAddonBundle is executed in a separate, blocking threat using ExecAndPump. ExecAndPump was also moved from gui to systemUtils, as it has no relation to GUI, other than the fact that it was used only in this package.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature/addon-store Features / behavior of the add-on Store p2 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
4 participants