Portable toolbox ?
Hello,
I recently started using JetBrains' products, and a bit later, the Toolbox app. I discovered that this was an amazing tool to automatically authenticate you, update the products and license them using your account.
Me, while setting up a portable development environment using IntelliJ, Rider, PyCharm and the dotUltimate pack (dotPeek, dotMemory, dotTrace, dotCover) thought it would be a great idea to use the toolbox app to manage all of those.
So I started searching for a portable version of the toolbox, a premade one or even a ZIP download. Not finding one, I contacted the support to know if a ZIP download was available or if I could use the installation folder.
I conclude I could try myself, so I extracted the content of the setup using 7-Zip and I fire up a clean Windows 7 VM, then I imported the extracted content into the VM and started the Toolbox. I noticed a few things :
- Toolbox keeps wanting to update it-self because it's not in the %AppDataLocal%\JetBrains\Toolbox folder (probably).
- Toolbox stores data in %AppDataLocal%\JetBrains\Toolbox.
- You cannot use relatives paths in the "Tools install location" setting, I tried using for example \apps but it uses C:\apps, I also tried %~dp0\apps and ..\apps but those two causes errors.
All of these problems prevents users to use the toolbox app as a portable solution.
After this unsuccessful experience, I thought about some solutions :
- Redirects %AppDataLocal%\JetBrains\Toolbox to another folder next to the executable using folders junctions (MKLINK), but this would work on a limited amount of computers, since in each new computer you plug you USB key, for example, you would have to make a program that creates those symbolic links before launching the toolbox.
- Using a sandbox solution, like having a portable instance of Sandboxie and running the Toolbox inside, but this is a heavy and unpractical solution.
- Having a "hidden" option where when you create for example a "data" folder next to the executable, it automatically stores all of the data inside like if this folder was %AppDataLocal%\JetBrains\Toolbox. Visual Studio Code already have this type of system for portable distribution, see here. This solution is the best but it would probably require time to implement and ZIP download too.
As I say, the Toolbox app is a wonderful software but portability is missing, and I think this could profit to a lot of people.
Edit : I've made a feature request on YouTrack, please upvote, thanks :) https://youtrack.jetbrains.com/issue/TBX-5271
Kind regards,
Astyr
Please sign in to leave a comment.
I didn't thought about this at first, but I realized I could use PortableApps.com to make a portable version of this for myself, this is what I did but due to the way PortableApps.com works it takes several minutes to close and open the portable app.
It takes lot of time because on start the portable app will rename the actual Toolbox folder in %AppDataLocal%\Jetbrains and copy a backed up folder to this location with the right name, when the toolbox wants to access data it will get the new folder. On close, the portable app will back up the whole folder and delete it and after rename the original folder already on the computer. so if you start the normal Toolbox it will get its original data back.
Due to this way of working, since I have 3 IDEs and it's 5gb big, it will slowly copy the 5gb on start and on close, which is problematic and which is why I can't use this a solution to my problem.
This was until I realized that we can change "Tool install location" setting to another folder than %AppDataLocal%\JetBrains\Toolbox. And this is where it becomes interesting, let me explain.
This is my current folder structure :
Toolbox Portable
+ App
+ AppInfo
+ Toolbox # This is where installation folder is located
+ DefaultData # This is where we put data that will be use if the Data folder is empty
+ Data # This is where all of data is stored, this folder is empty at start but for good mesures we will fill it like the Toolbox has been started once
+ Toolbox # Equivalent of %AppDataLocal%\JetBrains\Toolbox
+ apps # This what it would give if we use an absolute path to the Data folder for the "Tool install location" setting
If we take my previous post, we know that the Data/Toolbox folder is moved on start and on close, but not the apps folder since this one can be static.
So, because %AppDataLocal%\JetBrains\Toolbox without any apps installed only weights 1 or 2 Mo, it make my solution usable if "Tool install location" setting has another path.
I will go straight to my point :
Please, we need support for relative paths in "Tool install location setting".
With the used of the DefaultData folder, I've already made a premade configuration using .settings.json which sets a default path for the install location and disable auto-updates for the toolbox, if I can use relative paths in this premade config, portable toolbox would be real, then I would need JetBrains' permission if needed to make a public release on GitHub.
Hey !
Thanks for you comment I greatly appreciate, however this is not portable in the way I meant.
Please check the issue I wrote for more informations : TBX-5271
Thanks you :)
Aeris - As a workaround to more flexible layout you may use Windows junctions (symbolic links) and place the Apps folder on the desired disk.