How to find installation folder for matlab add-ons via command line?

80 views (last 30 days)
Kevin Phung
Kevin Phung on 3 May 2019
Edited: svanimisetti on 8 Mar 2021
Hi, I have a gui (made through a class method, in a class folder) that on start up checks whether or not the user has a specific toolbox installed.
I do this by:
matlab.addons.installedAddons
if a particular toolbox is not installed, it will install via a .mltbx within the class folder.
If the toolbox IS installed but is not up to date, it will install via the new .mltbx file.
it uninstalls and updates successfully, however, I am running into the issue of where the user will have to manually delete the old folder-- so I am trying to automate this.
My plan is to change the matlab directory to the path containing the old and new toolbox folder.
from here: https://www.mathworks.com/help/matlab/matlab_env/manage-your-add-ons.html I know that there is a default installation folder for addons, but this can also be customized in Home > Environment tab > preferences > Add ons.
Is there a way for me to navigate to wheverever this installation folder is? And so then I can just use:
rmdir
to remove the old one so that there wont be any naming issues.

Answers (1)

Robert
Robert on 15 Jan 2021
It's a bit late, but anyone trying to do the same, try this:
mngr = com.mathworks.addons_toolbox.ToolboxManagerForAddOns();
installed = cell(mngr.getInstalled());
myTb = installed{find(cellfun(@(tb) strcmp(tb.getName(), 'MyToolboxName'), installed), 1)};
identifier = char(myTb.getInstallationIdentifier());
theFolder = extractBefore(identifier, '|');
Note that as of R2020b, the com.mathworks package is listed as will be removed in a future release. I'd be happy to learn about alternatives to this that do not use com.mathworks.
  1 Comment
svanimisetti
svanimisetti on 8 Mar 2021
A more compact form can be obtained using arrayfun and getInstalledFolder function, eliminating the need to convert to a cell array and working with identifier.
tbxlist = com.mathworks.addons_toolbox.ToolboxManagerForAddOns().getInstalled();
idx = arrayfun(@(x)startsWith(x.getName(),'MyToolboxName'),tbxlist);
path = tbxlist(idx).getInstalledFolder();

Sign in to comment.

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!