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

nvda didn't create it's own folder on portable copy #3113

Open
nvaccessAuto opened this issue Mar 29, 2013 · 28 comments
Open

nvda didn't create it's own folder on portable copy #3113

nvaccessAuto opened this issue Mar 29, 2013 · 28 comments
Labels
component/installer enhancement good first issue github features these at https://github.com/nvaccess/nvda/contribute p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority quick fix triaged Has been triaged, issue is waiting for implementation. z goodfirstissue (archived) z goodForNewDev (archived)

Comments

@nvaccessAuto
Copy link

Reported by amir1096 on 2013-03-29 07:27
str:

  1. first, open the dialog where we can create nvda portable copy.
  2. When selecting the location to extract (let's say I selected my usb drive as the destination to extract it), NVDA didn't create it's own folder inside the USB drive.

expected:
Whenever choosing a location to extract, a "NVDA" folder should be created before extracting all the NVDA files.
This is very useful for beginners , maybe they didn't know that the NVDA folder didn't exist in their USB drive. So when they press the extract button, the files will scattered all around.

@nvaccessAuto
Copy link
Author

Comment 1 by briang1 on 2013-03-29 09:35
The question here is, how much knowledge of windows do we assume users have. I suppose it is not that hard to suggest for example, do you really want to put this into the root of x:, but then again, the same effect if not worse would occur if you had a folder called screenreaders and shoved it into there. If you tab around the current dialogue you hear the create new folder option, and I'd have hoped this would suggest that if you do not want it where you are now, you can create a folder for it. Many other programs do it this way, some with slight variations, though in the main as they are installers, not portable versions, they will have a more obvious default. Of course if you are creating it to a ram drive you are still going to have to run it manually due to the autostart restrictions on usb devices now.

It is thus perhaps best to assume at least part of the manual on this subject has been read. I don't know what others think on how much hand holding we can really use here.

@nvaccessAuto
Copy link
Author

Comment 2 by jteh on 2013-04-01 22:37
The fact that NVDA doesn't create its own folder is intentional. The user might want to name the folder themselves or they might want to extract to the root; e.g. if a USB stick has been dedicated to NVDA. However, we should probably warn the user if the directory into which they're extracting is not empty (and isn't an existing copy of NVDA).
Changes:
Milestone changed from None to near-term

@nvaccessAuto nvaccessAuto added this to the near-term milestone Nov 10, 2015
@jcsteh jcsteh removed this from the near-term milestone Jun 24, 2016
@nvaccessAuto nvaccessAuto added the p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority label Jul 5, 2016
@jcsteh
Copy link
Contributor

jcsteh commented Aug 8, 2017

We can test for an existing copy of NVDA by looking for nvda.exe or similar. It's not fool-proof - someone could theoretically have an nvda.exe which isn't related to an NVDA portable copy - but I think it's good enough to avoid the accidental case described here.

@feerrenrut
Copy link
Contributor

feerrenrut commented Aug 9, 2017

I think its far easier to rename the portable "nvda" folder, or copy the contents somewhere new (eg one directory above) than it is to carefully delete only the nvda files when accidentally installing to a non empty folder.

@jcsteh
Copy link
Contributor

jcsteh commented Aug 9, 2017 via email

@feerrenrut
Copy link
Contributor

I think the users expectation is fairly arbitrary (for new users / those who haven't created a portable copy for a long time), after entering the path e:\screenReader some users will expect e:\screenReader\nvda.exe and others will expect e:\screenReader\nvda\nvda.exe. Personally I consider this an unknown when using applications that are going to create a bunch of files for me (and then get annoyed when I guess wrong, regardless of how I guessed wrong).

Breaking backwards compat is a fair argument.

I think a warning in the case when the destination folder is not empty is a reasonable solution. This may be slightly annoying for those overwriting an existing portable nvda copies, but its a fairly minor impact on one group. I think this is justified when comparing it to the fairly major impact on the group who have to go and delete the files.

@bhavyashah
Copy link

@feerrenrut By #3113 (comment), are we agreeing that a folder with all required portable copy files should be created or is there still debate? Once that is sorted, I would like to urge prioritizing this as P2 because of the incredible annoyance it causes to those users expecting either a single file to serve as a launcher for the portable copy or a folder containing all necessary portable copy components, rather than finding out that a whole lot of odd files have been generated seemingly randomly on their USB flashdrive. As an individual who has experienced this problem multiple times (because I forget that I must specify a new empty folder as a directory), I can relate to the original author of this ticket and those that have raised this on the NVDA Users list in the past.

@jcsteh
Copy link
Contributor

jcsteh commented Aug 25, 2017

To clarify my above comments, I suggest the following (but @feerrenrut might have reasons against this):

  1. The directory we use should be the specific directory chosen, not a subdirectory.
  2. We should test if the directory contains files. If it doesn't, go ahead and continue; skip the rest of these steps.
  3. We should check for files that would only reasonably be found in a copy of NVDA (e.g. nvda.exe and perhaps nvda_slave.exe). If we find them, go ahead and continue; skip the rest of these steps.
  4. If the directory contains files but does not contain NVDA files, warn the user that they're extracting into an existing directory of files and give them the chance to cancel.

@Brian1Gaff
Copy link

Brian1Gaff commented Aug 26, 2017 via email

@Brian1Gaff
Copy link

Brian1Gaff commented Aug 26, 2017 via email

@feerrenrut
Copy link
Contributor

I think what @Brian1Gaff suggests covers the use cases well:
Where <NVDA_FILES> is all the files in a normal portable install and nvda.exe is a helper that just runs ./nvda_data/nvda.exe
The user specifies e:\ expecting to be able to run e:\nvda.exe . The result is: e:\nvda.exe and e:\nvda_data\<NVDA FILES>
The user specifies e:\screen reader\ expecting to be able to run e:\screen reader\nvda.exe. The result is: e:\screen reader\nvda.exe and e:\screen reader\nvda_data\<NVDA FILES>

The benefits here are:

  • no prompts are needed
  • we maintain backwards compatibility (assuming its just launching nvda that we need to be backwards compatible with)
  • if a user makes a mistake there is only two items to delete (.\nvda.exe and .\nvda_data\)

The big concern with this approach is that there may be other files (other than nvda.exe) that are expected to be at the location specified by the create portable copy dialog. Do we have a use-case for this?

@Adriani90
Copy link
Collaborator

@feerrenrut is not possible to create a new folder out of the portable copy creation dialog? I.e. "An NVDA folder does not exist on this device. Do you want to create one? Yes / no". I think running NVDA with autorun does not work in Windows 10 anyway. So a folder would be enough I guess.

@Adriani90
Copy link
Collaborator

maybe there is possible to create a rutine which creates an nvda.exe shortcut on the main folder of the device when creating a portable copy?

@Qchristensen
Copy link
Member

There is a discussion on this topic in the user email list currently. The majority view in that thread https://nvda.groups.io/g/nvda/message/64460 seems to be a preference for adding a folder. I think the option proposed to alert the user if the folder is not empty, is a good workaround and should meet most expectations.

@XLTechie
Copy link
Contributor

I respectfully disagree with @Qchristensen that the solution of just alerting the user if there are existing files is sufficient. I don't think it really addresses the issue most people had.

The best example I can think of, is a user creating a portable copy, not actually looking at it to notice that the files are all in the root (since most of them, even those who have done this sometime in the non-recent past, expect that it will create a subdirectory by default), and then pasting a bunch of other files on to that stick.
In that case, the check for an empty directory would determine nothing, because it would have been empty at creation time, loaded with other stuff later, and the user would still be left with sorting out NVDA files from others.
This solution only avoids one direction of user error, it does not solve the concern of the creation wizard not explaining well that it will not create a directory that you haven't manually entered.

Another question that comes to mind, is what happens in this situation?:

  1. User creates NVDA portable in root, as often happens unintentionally.
  2. User saves other files on disk.
  3. User upgrades portable copy.
    • At that point, you have the upgrader checking to see if the folder contains an NVDA, and the "avoid full folders" checker complaining about other non-NVDA files.
    • I suspect the resulting queries, unless very carefully handled, could be very confusing to the non-initiated user.
    • I further suspect that we will end up with USB drives with an older portable in the root, and because of that second warning, a newer one in some other folder that the user created when the full directory warning hit.

I think any of the solutions that @feerrenrut offered, are preferable.

Another option I would like to propose, which seems simpler than all of these, is:

  1. By default, have the portable copy put in a folder called "nvda", under whatever drive/folder the user enters. That's what most users (who commented) seem to want anyway.
  2. Include a checkbox that is selected by default, and states "Place files in an NVDA folder below the entered path".
  3. (perhaps for a later feature) Optionally, ask also about placing an executable shortcut, as @feerrenrut and @Brian1Gaff suggested.
  4. If we really want to avoid apparent user error: if the entered path ends with "\nvda", disregard the value of the checkbox, and skip step 1.

Lastly, I will close by pointing out that it is much easier to move a bunch of related files (all NVDA) from a single folder to a folder higher in the tree (or to drive root), than it is to do the inverse once other files have been added.

@XLTechie
Copy link
Contributor

One further alternate suggestion:

  1. Separate the drive selection from the folder selection. Once the user selects a drive:
  2. When the user is prompted to select a path on that drive, suggest that the user enter a path such as "\nvda", so that all NVDA files will be in one folder. Perhaps even put that in the directory field as the default, and let the user override it if desired, or the inexperienced user just press OK.

That would only require removing one path field from the existing wizard, and adding two others--a selector for drives, and a pre-populated text field for path.

It would also work more or less like existing installers do, which seem to be the model users are mostly expecting, even though this isn't a typical installer.

@Brian1Gaff
Copy link

Brian1Gaff commented Aug 26, 2019 via email

@Brian1Gaff
Copy link

Brian1Gaff commented Aug 26, 2019 via email

@bhavyashah
Copy link

I am not sure why it is useful to show alerts and warnings about empty and non-empty folders which may or may not contain NVDA.exe and related files to address this issue. I think just creating an NVDA Portable Copy folder in the selected directory path which folder would contain all the portable copy files is a clear-cut and user-friendly solution. I think creating an NVDA.exe shortcut in the chosen path is an interesting idea as well, but can be considered independently. A few responses to criticisms of the folder creation approach:

  • The point is that switching from files within folder to files in directory itself is fairly simple, i.e. just cut and paste files. However, if dozens of portable copy files get mixed up with the other files in a folder, it is quite challenging to filter them out and move them to a dedicated folder. Even if it is unclear which of A and B is more preferable, if it is significantly harder to move from A to B as opposed from B to A, I would argue that we should default to B.
  • I think the expectation of an average user - at least this was mine back in the day - is that a single file would be generated to launch a portable copy. This is to say that there is no anticipation of a folder full of files or a ton of files in the selected directory at all. Given this, we come closer to meeting this user preconception via a single folder rather than a bombardment of files itself.
  • There was some discussion about potential conffusion when an address entered in the Run dialog doesn't launch NVDA as expected. I would submit that the majority of users access files and folders by manually going into Windows Explorer and browsing, not by memorizing paths and typing them in the Run dialog. As such, the confusion caused by a sudden influx of files in the chosen directory seems far more significant than a Run command not going as planned.

@XLTechie
Copy link
Contributor

XLTechie commented Jul 9, 2020 via email

@Qchristensen
Copy link
Member

Following on from the idea that most users "browse" (with explorer) for the path they want, and only advanced users are likely to know it off the top of their head and type it, how about:

  • If the user types a path into the edit box, assume they know what they are doing, use the path they assign (assuming it exists).
  • If the user activates the "browse" button to find the path, automatically append /NVDA when populating the edit field (the user could then edit as desired)

@cary-rowen
Copy link
Contributor

@Qchristensen
Yes! I think this would be great.
Cheers

@feerrenrut
Copy link
Contributor

That sounds good @Qchristensen, happy for that solution to be implemented.

@cary-rowen
Copy link
Contributor

Hello, @Qchristensen
Are you planning to implement this on 2022.1?

@feerrenrut
Copy link
Contributor

@cary-rowen No, this isn't currently something we are focusing on. I'm happy to accept a community contributed pull request to address this.

@feerrenrut feerrenrut added good first issue github features these at https://github.com/nvaccess/nvda/contribute z goodfirstissue (archived) z goodForNewDev (archived) quick fix labels Jan 24, 2022
@Gene703122
Copy link

  Please stop making this question so horrendously complicated.  This was first raised in 2013 and ten years later, nothing has been done.  When you extract compressed files, the extraction program, including the Windows utility, creates a folder into which the files are extracted.  When you install a program, the installer specifies its own folder in the path and that is the default in program after program.  When you place a portable program from Portable Apps on a machine, the utility that places the portable version on the machine creates a folder into which the program is placed.  Its like running an installer.  
  
  This discussion has produced all sorts of do this and do that suggestions.  Ten years later, nothing has been done.
  
  What is an experienced user in this discussion?  It is completely undefined.  I am an experienced user, having used Windows for more than two decades and learned a good deal about it.  My experience told me to expect the same behavior from the NVDA creator as I saw in one instance after another after another when installing a program or creating a portable program..  
  
  An experienced user can copy or paste the portable program, once created, wherever he/she wants.  That is one of the reasons portable programs exist in the first place.  Whether the creator creates a folder or not is irrelevant for an experienced user.  
  
  There is simply no reason that the user, experienced or not, should be able to splatter files and folders in an existing folder.  There are certain practices that should be followed as a matter of good practice and common sense.

@britechguy
Copy link

Adding to Gene's comment, virtually all installers/unzippers have done what's being asked about for many, many years now.

I can't recall the last time I've unzipped something, or installed something, where I was not prompted to select the destination folder under which the material would be deposited in a folder create by the unzipper/installer. Creating a portable copy of NVDA is more akin to an unzipper than installer, but the principle applies.

If I specify C:\Temp as the destination folder, and I'm creating a portable copy of NVDA 2023.3, then creating a folder named NVDA2023.3 under C:\Temp as part of the process is not at all complicated. Adding the functionality to do this is not highly complicated. It has been asked for, repeatedly, for over a decade, by many users. It is an appropriate improvement to make because it's clearly very much wanted and it's not complicated to implement.

And, please, do not tell me I should implement it. That's not my job and I don't write Python code. My days as a programmer are over at this point with the very rarest of exceptions.

@seanbudd seanbudd added the triaged Has been triaged, issue is waiting for implementation. label Oct 19, 2023
@nvaccess nvaccess locked as too heated and limited conversation to collaborators Oct 19, 2023
@seanbudd
Copy link
Member

This issue has been locked as the issue has been sufficiently triaged, and the latest conversations around implementation will be lost easily if this issue continues to be bumped. To discuss this issue I encourage opening a GitHub discussion, or a new issue using the issue template to replace this issue, detailing the discussion and final proposed solution.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
component/installer enhancement good first issue github features these at https://github.com/nvaccess/nvda/contribute p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority quick fix triaged Has been triaged, issue is waiting for implementation. z goodfirstissue (archived) z goodForNewDev (archived)
Projects
None yet
Development

No branches or pull requests