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
Add-on store: don't interrupt user for addon install tasks when exiting. #14430
Comments
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
My apologies for not commenting here earlier, even though I was the one whose question triggered this issue on the add-on store PR.
There is also an assumption in the initial description that install tasks are disruptive, and disallow user to continue whatever they were doing. This is not true in general - most of them are either non interactive, or show a prompt only in very specific cases i.e. incompatible add-ons installed or change of a config format. It looks like the initial problem from this issue can be stated as follows:
Assuming this is correct, I propose to add an option to postpone installing add-ons, similarly to what we have for downloaded updates. I imagine that when user closes add-on store they're presented with a prompt which asks if they want to install add-on now, or later. If they choose 'now' add-ons are installed, and NVDA restarts. When 'later' is selected there should be an additional control in the add-on store, which, when activated, executes installations. Obviously #15613 has to be fixed in that case. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
I have been wondering for a while, if we need some more package management
functions.
* pre_update(): is called before the deletion of the old add-on directory.
* post_update(): is called before the newly installed add-on version is run for
the first time, so after the restart.
I am envisioning that pre_update() can move add-on config files to a holding
folder under %temp% or even in NVDADir/tmp, or whatever.
Then post_update() can move them back into the new add-on directory, perform
upgrade of configs, etc.
(For add-ons which need this sort of thing)
Naturally, this would require keeping track of which add-ons are in new install
pending vs. update install pending, status.
I admit I have not had time to think through all possible implications, but I
borrowed the pattern from the Debian package manager's (dpkg) preinst, postinst,
prerm, etc. stack.
|
@XLTechie I have trouble understanding how these proposed hooks would help with this issue, especially with use cases 2-4 of my above comment. I'm by no means saying that new hooks are not necessary or anything, just that if you have a specific use case in mint they probably should be discussed in a separate issue. |
@michaelDCurran @seanbudd Can we please have a comment from NV Access with regard to your plan here? One of my add-ons which I want to have ready for the store in time for 2024.1 is affected by #15613, but I'm reluctant to work on a fix without knowing how you want to progress with the current issue, as that is a prerequisite for any work on #15613. |
I think due to the synth/braille issue something like this is a good alternative. However, I would make it as a blocking modal dialog which presents the option "Finalize add-on installations now" only. This allows the user to perform tasks before triggering the install tasks, but blocks other NVDA GUI interactions like exiting NVDA. Additionally, I think we still need to expand the API here (in a non-breaking way):
|
This is being removed from the milestone as this should no longer require a breaking change, and has minimal user impact. It is just the option to delay starting install tasks after closing the add-on store, and potentially adding a new API for post-install tasks. #15613 can be fixed independently to this by tracking on-going install tasks |
It looks like I misunderstood the original intent of this issue. After reading the initial comment I imagined the following sample scenario:
With the design I proposed i.e. giving ability to delay add-on installs to some, unspecified point in time, they can for example restart their machine if that is necessary, and return to the add-on installs at some, more convenient time. In general since we offer that kind of flexibility for NVDA updates I see no reason not to do so for add-on installs. This can become more relevant when auto updates for add-ons is added into core, as time at which auto updater shows installation message is unpredictable.
In terms of implementations that is easy, documenting when to use which one is going to be pretty tough, though and list of use cases for which |
Is your feature request related to a problem? Please describe.
See prototype add-on store at: #13985
Installing an addon has the following workflow:
Note:
Describe the solution you'd like
The user experience could be improved if add-ons were installed (and the add-on install task ran) when NVDA next restarts.
There is a risk this may break assumptions by add-on authors, so will considered a compatibility breaking change.
This will need to be scheduled for a compatibility breaking release.
Describe alternatives you've considered
Apart from leaving the current workflow for add-on install tasks, another option is to run the installation and install tasks as soon as each add-on is downloaded. However, this results in many interruptions (for the add-on install task GUI prompts) with unknown timing between them. Batching the install tasks together is a smoother user experience.
Additional context
This issue is intended to outline the rational on the for this on the PR #139854 and was requested in:
#13985 (comment)
The text was updated successfully, but these errors were encountered: