Using two instances of IDE 2.3.6 on Windows

Hello!
I would like to be able to develop for two different esp32 dev boards.
Each dev board needs it's own library versions, chip, board support.

I'm trying to install two instance of Arduino IDE 2.3.6 - thinking each will use it's own folder, and will point to a different sketch folder, where I can place it's own libraries.
so I downloaded the 2.3.6 zip file and extracted to two folders. I have two executables of the IDE... However - both instances are using the same resource (registry?) to store the sketch folder, last opened files, etc - so if I change the sketch folder (in preferences) in one instance and open the other instance - it's changed too!

Is there a way to make this work with two instances of 2.3.6?
Thanks

Are the file names different?

Which file names?
Each ide instance is under a different folder - are you saying I should change the executable name? I can try that

The better way would be to adopt the "older" sketch to be able to work with the latest library version also.

If you can't update your older sketch, copy the needed old library versions to the local old sketch folder and ensure that you include the local library version.

But on long term, I suggest you take the effort to update your "old" sketch.

This is the reason I am still on the IDE V1 generation. It supports portable mode, so that you can have as many instances as you like.

2 Likes

As far as I have found, V2 IDE does not support portable mode.

So for my own use profile, swapping between different PCs, and different copies on the same PC, I have to keep using V1.

Considering how long the lack of portable mode for V2 has been known you do wonder if Arduino have an intention to solve the problem.

1 Like

I don't believe this will be ever solved. They locked the discussions on Github about portable mode years ago, so apart from this forum, there is no place to ask for this regression to become fixed.

2 Likes

I can try that.
I hit this when working with different dev boards, usually it's the lcd/graphics library that require certain version of board/lvgl/gfx support and they are not updating their code, and I don't have time to dive into each compilation failure.

For example - using the lilygo T-display-s3 for one project, and ESP32-C6-LCD-1.47 for another - each use their own (multiple) library versions

There should be a way to keep an old project with it's own libraries without them flipping to new on you - maybe different library location is the key, but can you control where the library is installed if you're installing it from the UI? I don't think I have seen an option.

@xfpd changing the Arduino IDE executable file name didn't help , if that's what you meant.
Sketch names are different , sketch folder are different, and IDE folders are different.

Which library exactly are you using. Which version for the T-display-S3 and with Version for the ESP32-C6-LCD?

Perhaps I am misunderstanding, but simply run two instances of the IDE (I am a Mac user, so I'm not familiar with the Windows approach) and in each instance, use the drop-down board selector to select your board. Now each copy of the IDE 'sees' only that board's resources. Just name the two sketches differently, such as including the board name.

That will not work. The IDE uses e.g. the sketchbook directory which will be shared between two instances. If you want to / have to use different versions of a 3rd party library you can only do so by changing the sketchbook directory and that is shared. There are other directories that are shared as well.

OP's best chance is to use a portable installation of IDE 1.x if a true independence of instances is needed.

It is not clear to me if he wanted serial or concurrent access to the two variants. I think mine works for serial but not conc current, the portable works for both.
Also PlatformIO and VS should handle what he wants.
Is it not possible to use ONLY the IDE2 Editor with a portable core/library set up?

Just the "sketch" filenames.

[edit] Can you make a minimum test configuration for anyone to test? I can compile two different sketches using two different libraries with expected results (two different Arduinos doing two different things). Perhaps I am far off the subject.

The only other possibility I can think of, since the libraries and board packages are stored in the user folder, is to create and use a separate user account for project needing the older versions of libraries. Its not a particularly convenient solution but it would allow for two (or more) different setups.

(There is also a way to specify a custom user directory for an Electron app, but as yet I can't see how to do that with the IDE. It requires an edit to the main.js file in the root of the application but the IDE deson't seem to have one. Its also inconvenient unless you can specify a different main.js file to use on startup, which I am not sure one can do.)

The only other option, which I think has already been suggested is to move the older/alternate library folder into the project directory and include it with:

#include "libpath/mylib.h"

Instead of the usual:

#include <mylib.h>

No easy answers here I don't think.

The cores don't have to be separate unless you e.g. want to have a setup for e.g. ESP32 2.x and ESP32 3.x. And to my knowledge you can not separate the sketchbook/libraries as they are configured in a configuration file (arduino-cli.yaml) which is shared by all instances.

T-display-S3 readme is instructing to install all libraries from their repository directly, and use a certain esp32 release.
ESP32-C6-LCD-1.47 has their own requirements on lvgl and another library - if updated to latest it breaks.

I believe that could work - problem is, for example the T-display-s3 has many libraries it overrides (about 20) there is some interdependence between them, could be a mess to change.

It would be nice (and reasonable, IMHO) if every install directory of the IDE would use just what's under that directory and not share info, or at least have a mode to do that, like there used to be as I hear

Maybe time to try another IDE..

Yes, if it was just one or two then it might work, but multiple dependencies would get messy I guess.

Vscode with PlatformIO might have been an option if not for the fact that you need ESP32 support and Espressif pulled the plug on supporting PlatformIO. There is an community fork of PlatformIO called Pioarduino which might be a possible alternative.

Interesting, I'll check into that, thanks