| Reference | Downloads | Github

Broken installer/uninstaller and concurrent versions

looks like windows installer/uninstaller is broken for 2021-series .


when installing 2021.1.4 version while 2021.1.2 is already installed
the installer asked me for a forced upgrade (replacement). I already did not like that…
however, after the installation both versions were available (probably because I did not use the default installation path).
further more, I have tried to uninstall 2021.1.2 by running uninstall, but it failed.
interestingly trying to run uninstall on 2021.1.4 also failed…

I think that the user should be given a choice of a new install vs forced upgrade
(old experiments should be able to run using old version and old code without any modification)
and the uninstaller could be better …

Maybe I should mention that the option described in

is not possible in our setup as the experiment computer does not have an internet connection.

we have multiple standalone installations of psychopy and would like to be able to maintain
an ability to run different experiments using different versions of psychopy.


Removing an existing installation before installing a new one is pretty standard.

If the installer doesn’t remove the existing files and the user installs to the same location then it can lead to various problems. Ghosts of previous installations (e.g. if the new version no longer includes a file but it still exists from a previous version) can cause bugs that are hard to diagnose.

If you install multiple versions in different locations then things can get confusing in a different way. A lot of people open experiments by double-clicking but then which version of PsychoPy will it open and will the user notice if it isn’t the one they intend?

As for the broken setup you’ve been left with, yes, I can see that the installer might not have handled it very well if it needed to remove from one location and install to another. Happy to take a fix to the NSIS script for that if you have time.

With useVersion you don’t need to be constantly connected to the internet, just once when the versions are fetched. They get cached locally for future use. If you use a version that’s already been retrieved that will be fine. If it hasn’t been retrieved before then psychopy will go online to see if it’s available there. This is really the better system for keeping studies needing different versions working on the same machine.

If that doesn’t work for you then you could install and then manually copy (but do copy not move) the files to a different location and run them from there. When you then uninstall you’ll keep your copy. You’ll have to set up your own app shortcuts, and do warn your teammates that they may not get the version they expect by double-clicking, but it’s very doable

Dear Jon and other psychopy developers

I think there is a misunderstanding…

  1. there is no internet connection ever and the user does not have administrative rights, so useVersion is not usable unless there is a method to bring the needed version manually. If there is a description of the required port-forwarding and which socket has to connect to which port then maybe it might be possible but sounds too complex to be practical.

  2. removing existing installation before installing new one is a common practice but not a standard one. For example, matlab does not remove old versions. they install and work concurrently and independently. I would like to hope and see that psychopy setup works in a way similar to matlab. Multiple versions are installed concurrently and managed independently.
    Other examples (which we use) are MS runtime libraries, psychtoolbox, eprime, fsl. there are many software packages which have a support for multiple independent concurrent installations.

I install each new version of psychopy into a unique path and expect that if I run an un-installer, uninstaller will be able to remove it. this does not happen.

I also would expect that the installation process of a new version will not break any existing ones. In addition, I would expect that the configuration file stored in the user directly will be psychopy-verison aware and if a user uses multiple versions for the projects, there would be no need to delete the config files to start the environment.

I hope that if you chose to fix the un-installer/installer, the ability to install multiple concurrent versions of psychopy into different unique paths will not be removed to allow users to have multiple concurrent and independent installations.

As to “double-clicking”. Here, I agree a user has to load a specific version directly. This is doable using user-project-specific wrapper scripts which then can be called via a double-click. This is not much different compared to teaching the user to call useVersion() had it been possible to utilize this functionality.

In our center, we have multiple shared stimulus presentation stations with various versions installed (probably 4-5) concurrently into unique paths.

Thank you very much for considering my suggestion


Ah, OK, I didn’t realise you had no internet connection ever there (I thought you just disconnected while running which is quite common). You can do it on another computer and copy teh files over on a stick if you like (you want the PsychoPy app data and the folder called /versions. Drag that to the same location on the target computer and it won’t need any further connection.

As for most (certainly not all) software packages, Windows maintains a (single) registry key for PsychoPy and that’s where it stores information about how to uninstall it as well. By trying to install it a second time in a different location the registry information has been overwritten.

Sorry, that just isn’t something we intend to support at the moment. Yes, we could switch to a system where PsychoPy always installs to a new location and creates a separate registry key for each version as if it were a different app but I think, for the majority of users, this will create more problems than it solves.

As I say, in your case you could install and then manually copy the files to another location. That will achieve what you need and won’t cause any confusion to other users

best wishes