Communicating With Multiple Xojo IDEs Independently

Below is what is shown on the user guide (https://documentation.xojo.com/topics/build_automation/ide_communicator.html)

Communicating With Multiple Xojo IDEs Independently
The Xojo IDE listens on an IPCSocket with a path of /tmp/XojoIDE. In order to communicate with more than one running at a time, you need to use a unique path for each running IDE. This can be accomplished by setting the environment variable XOJO_IPCPATH to a filename. The only valid characters for the filename are a-z, A-Z, 0-9 and _.
env XOJO_IPCPATH=Xojo2019r2 /Applications/Xojo 2019 Release 2/Xojo.app/Contents/MacOS/Xojo &

I’m trying to run Xojo 2019r3.1 and 2021r3.1 on the same computer and connect to them with the IDECommunicator. The first xojo version to open listens on “C:\Users\Username\AppData\Local\Temp\XojoIDE” and the second on “C:\Users\Username\AppData\Local\Temp\XojoIDE1”. If I connect to the first one then disconnect sometimes the Xojo Versions switch places. Eg. First is now connected to “XojoIDE1” and the second to “XojoIDE”. The keep swapping. The only way it seems is to set the XOJO_IPCPATH Environment Variable.
If I add that environment variable in windows, Xojo’s IPC socket can no longer be seen and throws an error when connecting.
Eg./ XOJO_IPCPATH=Xojo2019r3.1 C:\XojoIPCPaths\2019
Also, I can’t connect to the default path either “C:\Users\Username\AppData\Local\Temp\XojoIDE”.
At this point I’m not sure of the path Xojo is listening on.

What is the correct format for XOJO_IPCPATH for multiple versions?
XOJO_IPCPATH=Xojo2019r3.1 C:\XojoIPCPaths\2019;Xojo2021r3.1 C:\XojoIPCPaths\2021
What is the delimiter to list multiple versions?

XOJO_IPCPATH=Xojo2019r3.1 C:\XojoIPCPaths\2019 - I thought that if I only mentioned one then 2019 would be on that path and 2021 on the default path but can’t connect to either

Have you tried https://www.monkeybreadsoftware.de/ /S :stuck_out_tongue:

I usually start the development of my app with one version of Xojo and don’t switch to newer versions immediately. As result I now and then work with different versions of Xojo at the same time.

I always had to quit one version of Xojo and then start the second version of Xojo. And even that didn’t work always.

I made a feature request in Feedback to use 2 versions of Xojo in IDE Communicator. But Xojo implemented something totally different.

I need to use both versions as most apps are in 2019r3.1 and some of the new ones are 2021r3.1
I can’t update them all to 2021 yet
I’ve made a program to compile the apps made in xojo and deploy them. Manually closing and re-opening isn’t an option
Xojo have implemented this feature in XOJO_IPCPATH but haven’t given details of the syntax. The IPCPath should be set inside the IDEs settings and then it would be fine.
Just looking for details on how to get XOJO_IPCPATH to work on windows

It would be helpful to know what your script looks like for setting the variable and launching the IDE.

Remember, that environment variable must be set before the IDE is launched to be available to it.

At the moment I’m just manually setting XOJO_IPCPATH in ControlPanel → System → Environment Variables and then opening 1 version of Xojo. The manually set path can’t be connected to using the IDECommunicator or the original default path in Temp. Has it got something to do with the xojo version, should it include the point for 3.1 eg/
XOJO_IPCPATH=Xojo2019r3.1 C:\XojoIPCPaths\2019
XOJO_IPCPATH=Xojo2019r31 C:\XojoIPCPaths\2019

So, you’re saying that you cant set both IPC Paths in an environment variable and let both versions of Xojo autostart?
What about if Xojo crashes?

In the batch file that you are using to launch the IDE, you should set the var there:

set XOJO_IPCPATH=/tmp/xojo_2019r3
"C:\Program Files\Xojo 2019r3.1\Xojo.exe"
set XOJO_IPCPATH=/tmp/xojo_2019r2
"C:\Program Files\Xojo 2019r2\Xojo.exe"

That’s not a windows path. Tried anyway and doesn’t work. Also, tried Windows temp path with xojo_2019r3 appended. Didn’t work either

env XOJO_IPCPATH=Xojo2019r2 /Applications/Xojo 2019 Release 2/Xojo.app/Contents/MacOS/Xojo &

That’s the format from IDE Communicator documentation. Obviously a MAC path though

Try this format instead:

XOJO_IPCPATH=C:\Temp\xojo_2019r3

It uses an IPCSocket, so the docs for the Path property are relevant here.

Nah, didn’t work

image

Ok, got this figured out.

So first of all, you need to stop trying to use the global environment variables. Instead, make yourself a .bat file that sets the var and then launches the IDE as I mentioned above. It should look something like this:

set XOJO_IPCPATH=Xojo2021r31

"C:\Program Files\Xojo\Xojo 2021r3.1\Xojo.exe"

Note that the path isn’t really a path, but it will be changed into one when the IDE sees the value exists. With two .bat files with different “paths” you can open the two IDEs and have them communicate separately.

Next, in your app that’s going to talk to the IDE, you need to use the “correct” temp directory. On Windows, that’s the equivalent of:

SpecialFolder.Temporary.Child("Xojo2021r31").ShellPath

which, on my machine, evaluates to:

C:\Users\greg\AppData\Local\Temp\Xojo2021r31

Once you get those two things set properly, the IDE communicator will connect properly and let you send commands.

1 Like

Thanks for that Greg.
Got it working now

Just an FYI

I ran into another issue while getting this to work.
The SpecialFolder.Temporary returns “C:\Users\Username\AppData\Local\Temp”
In my case windows was using temporary folders per session so my actual temp folder was located in “C:\Users\Username\AppData\Local\Temp\1”. Xojo was returning the system temp folder and not my current user temp folder. A way around this is to enable the following group policy or use cmd to echo back the actual temp folder

Windows Components\Remote Desktop Services\Remote Desktop Session Host\Temporary folders

https://www.windows-security.org/13618e03a81e77cd4fb79ccdf7974840/do-not-use-temporary-folders-per-session

Because you were connecting via Remote Desktop. Logging in directly doesn’t do that.

Nah, I logged in directly.
Only difference I can think is I’m running Windows Server DataCenter 2016 on that PC for that program