For my specific use-case, of running GUI automation tests using Sikuli on a datacenter with multiple users, the App class fails to open my application as there are multiple other processes with the same name on the system, so it bypasses the _osutil.open line.
From having a closer look at the code, I can see the following behavior when trying to call App.open() with a full path to an executable on Windows. First, it checks if the path pointing to a valid location, then it extracts the application executable name from the path and runs a search on all the open processes to see if a process with that name already exists, and if so it uses that process instead of creating a new one.
I believe that the user should have a choice of whether he/she wishes to opt in for this functionality, and it should not be default, as it breaks the use-case described above, where other processes with the same name are running, but the user wishes to spawn a new one regardless.
For my specific use-case, of running GUI automation tests using Sikuli on a datacenter with multiple users, the App class fails to open my application as there are multiple other processes with the same name on the system, so it bypasses the _osutil.open line. From having a closer look at the code, I can see the following behavior when trying to call App.open() with a full path to an executable on Windows. First, it checks if the path pointing to a valid location, then it extracts the application executable name from the path and runs a search on all the open processes to see if a process with that name already exists, and if so it uses that process instead of creating a new one. I believe that the user should have a choice of whether he/she wishes to opt in for this functionality, and it should not be default, as it breaks the use-case described above, where other processes with the same name are running, but the user wishes to spawn a new one regardless.