nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.12k stars 638 forks source link

NVDA 2012.2.1 portable copied to c:\program files #2879

Closed nvaccessAuto closed 9 years ago

nvaccessAuto commented 11 years ago

Reported by lzanoni on 2012-12-21 11:11 Hello,

for the infovox4 project, I put the NVDA files from the portable version to a USB stick. Then I copy all my files (including NVDA) to c:\program files (x86)\Acapela Group\infovox4. I removed the userConfig folder to mimic the normal installation of NVDA. I don't put any NVDA information into the registry.

NVDA.exe does not run from this installed folder with normal rights. With admin, it runs and creates the userConfig folder, but that's not what I want. I want the same behaviour as the normal NVDA installation, with settings in %APPDATA%\NVDA, or better %APPDATA%\Acapela Group\infovox4\NVDA.

I suppose nvda.exe does some verification at startup and fails in my configuration. Is there a way to tell NVDA.exe that it's actually an installed version and not a portable one ?

Thanks, Laurent Zanoni Acapela Group

nvaccessAuto commented 11 years ago

Comment 1 by briang1 on 2012-12-21 12:45 Apart from the comment that you are not using the latest release of nvda, I was just wondering why you would want such odd behaviour?. After all your users of the synth will be using normal versions. I seem to recall the reason nvda behaves as it does is all to do with preserving the rights of the user who installs it, and portable versions cannot access the place you are putting the user configs unless they are set up as admin, in which case it seems pointless to use a portable version for anything but testing the code.

I notice that you can copy user configurations between portable and installed etc, which may or may not suit what you are trying to achieve

nvaccessAuto commented 11 years ago

Comment 2 by lzanoni on 2012-12-21 14:11 Thanks for your reply.

I'll test the latest version, but I doubt the behaviour would be different.

The reason for the behaviour is the following:

My software (infovox4) is distributed ona USB stick, made up of several programs, including NVDA (portable version) The user can configure infovox4 to use one of our voices, we've a custom synthDriver for our TTS synthesis.

Than there is a mode to install locally infovox4 on the user computer: for the rest of the software, it's simply a copy of all files, my programs detect this local installation and use %APPDATA% to store the settings.

Unfortunately, for NVDA, it still thinks it's a portable version and try to write its configuration to the installed folder (c:\program files\acapela group\infovox4\infovox\nvda) instead of %APPDATA% like the normal installed NVDA.

I don't want NVDA to be a side installation of infovox4 software, and we can't use the normal NVDA setup program as it doesn't include our synthModule, and it's not the way the rest of infovox4 installation works (we kept it as simple as possible).

So, my question remains: what is required to make a portable NVDA.exe use %APPDATA% ?

I saw that the registry key \software\Microsoft\CurrentVersion\Uninstall\NVDA\UninstallDirectory must match the folder where nvda.exe is run to enable the launch from "program files". (oddly not the key InstallDir)

The trouble is that in case the user already has the original NVDA installed, it could conflict with the one from our software. Anything else ?

nvaccessAuto commented 11 years ago

Comment 3 by jteh on 2013-01-03 06:39 This is not a supported installation. There is no way to do this without core code modification. However, you may want to check out the -c command line parameter. Changes: Added labels: wontfix State: closed