BookmarkSubscribeSubscribe to RSS Feed


Aug 27, 2015

Add-In Manager


Add-In Manager enables you to easily build and re-build Add-In files, manage versions of an add-in over time, directly access source files, and have extra customizations for your add-in. Now with version 2.0 of Add-In Manager, you can control your entire JSL application development life-cycle now that you can deploy your add-ins out to your users directly from Add-In Manager!

Quickly Build Add-Ins

The fundamental feature of Add-In Manager is the ability to build a JMP add-in file directly from source files. This feature was initially included in my Custom Add-In Builder add-in and Add-In Manager has taken the basics of that add-in and improved upon it.

Add-In Manager.PNG

Deploy an Add-In to Users

With version 2.0 of Add-In Manager, you can now deploy (or push) add-ins out to your users directly from Add-In Manager. You can deploy to a TEST location for your users to test out your add-in and you can also deploy to a PROD location.




When deploying to PROD, a JSL script with an Associative Array is automatically updated with the latest publish date/time. This Associative Array can be used by an auto-generated 'updateCheck.jsl' script that can compare the build date of the user's add-in to the build date according to the Associative Array. If a newer version of the add-in is available, the user will see the following window, where they can choose to update to the latest version. This concept using an Associative Array to check for updates was adapted from @brady_brady's method of using a table with publish dates. This method is described in @Jeff_Perkinson's post How to write self-updating JMP add-ins.


Update Available.PNG

Manage Versions of an Add-In

Add-In Manager has the ability to automatically keep a version history of an add-in file each time a new one is built. It allows you to install, restore, or delete a previous version of an add-in. You can optionally include a comment for each build so you can keep track of what changes went into each version.


Making Extra Add-In Customizations

Add-In Manager allows you to make a few customizations to your add-in that previously required manual changes to XML. Below are the extra customizations available in Add-In Manager.

  • Max JMP Version
  • Built-in JMP Icons for menu items
  • Insert before position for specifying a position for a menu item
  • Custom menu bar – create your own menu or use an existing menu other than “Add-Ins”
  • New in Add-In Manager 2.0:  Multiple main menu's within a single add-in

Menu Items.png

Accessing Source Files Directly from JMP

On the Files tab within Add-In Manager, you can open files in your source folder directly from JMP by double-clicking on the desired file in the table.


Automatic Management of Custom Metadata

With Add-In Manager version 2.0, you can create your own custom metadata in addition to the metadata automatically included and managed by Add-In Manager.

Custom Metadata.png

Managing Previously Installed Add-Ins

From the Installed tab, you can enable, disable, or register installed add-ins as well register add-ins that are not installed.


System Requirements

This add-in is supported on Windows and Mac operating systems with JMP 13.

Blog Series

Add-In Manager, Part 1: Defining and building a JMP add-In

Add-In Manager, Part 2: Deploying auto-updating add-ins to users

Add-In Manager, Part 3: Advanced customization


Version 1.1-1.3 (October 16, 2017)


  • Fixed a few cases that caused the add-in to throw an error
  • Added new preferences for controlling whether menus and toolbars are shown

Version 2.0 (November 22, 2017)


  • Added support for deploying add-ins to TEST and PROD locations.
  • Added support for custom metadata via an Associative Array that can be included in your scripts.
  • Added ability to have multiple main menus in a single add-in.
  • Added ability to copy and paste menu items in the Menu Item Tree.
  • Added support for establishing a source folder from an existing 'jmpaddin' file. 
  • Added ability to check for a new version, pulled directly from the JMP Community.
  • Added preference to automatically install add-ins after being built.
  • Removed support for building multiple add-ins at a time, for various reasons.
  • Squashed other various bugs.

Version 2.1 (February 26, 2018)


  • Added preference to exclude invisible files and folders (i.e. files/folders that start with a period). This is useful if you're using a version control system, like Git.
  • The customMetadata.jsl file is now ignored when determining if you have the latest version installed. 

Version 2.2 (March 8, 2018)


  • Fixed an issue when adding more than two top-level main menus.
  • Added new icons to selection screen. Removed icons only available on one OS.

Version 2.3 (April 6, 2018)


  • Fixed error on Mac caused when a source folder was renamed or deleted
  • Preferences window now works even if you don't have the Consolas font installed on your computer.

Let me know if you find any issues!


The add-in does not seem to get installed on my computer. This seems to be the issue with some of the recently uploaded add-ins. Does this add-in require JMP-13?

I have JMP 12.2 on my computer.


Hi @tejvishnu,

Yes, JMP 13 is required to install this add-in. Unfortunately, I was not able to make this add-in compatible with JMP 12. I have updated the post to include this this information.




I want to be so good, and charitable and thank JMP developers for the 13th version of a software program that I love to teach with. I've had it since version 5.0, with it's well thumbed paper manuals and to be honest nothing has been added that is of any value to me since that version. But loving version 5.0 as I did, I have happily and willingly upgraded each year. And then the ROC-Curve & partial Area Under the Curve Analysis script came along which was beautiful in JMP12. I have set up a teaching session to show my students about ROC curves.... and I upgraded to v13...... and now it doesn't display the curves. boo. 


Thank you for this! Now creating and updating add-ins so easy that I develop and improve my own add-ins more often than in the dark ages before this tool.



Thanks again for this addin. I am finally getting up to speed with the new version and taking advantage of some of your improvments on what I was doing manually :) My one ask, and I'm not sure if this is possible, is to be able to build several addins at once. I know the bottom panels for information and directories are addin specific, but perhaps those could disappear if more than one addin is selected. Then all selected could be DEVd/Deployed/etc.

I manange over 40 addins right now and I often make updates in batches so being able to do a bunch of all of the addins at once would be amazing!


Hi Justin,

In JMP 14.0.1, I keep getting this error:


Error Message: {"argument should be list"(1, 2, "Concat Items", Concat Items /*###*/(errorList, " "))} Error: argument should be list 1 time(s). Type: Error Function Name: Concat Items Function being executed: Concat Items /*###*/(errorList, " ") Call Stack: getLastModifiedDateOfNewestFile getStatusIcon refreshAddinTableBox initialize


Any ideas? This is Manager 2.2.






If you still have version 1.3 of the add-in, you can change the ID and menu item name for that version and use it along side the new version. Version 1 allows you to use check boxes to build multiple at a time and should be able to hook up with the data table used by version 2. There were a lot of architectural changes in v2.0 so unfortunately I had to remove the checkboxes. I have it on my list to add those back in the future.




Thanks for reporting this! It looks like you are using a Mac, and you must have renamed or deleted one of your source folders. I have added a check for this now (v2.3) so it should not fail anymore.


@Justin_Chilton Thanks! I'll give that a try.




Version 2.3 works like a charm on my Mac! Thank you!!!





I'm having an issue with the autoupdate feature.  I have traced the issue back to the updateCheck.jsl script. 


The following line fails, then the try statement exits.

customMetadata_aa = Include("customMetadata.jsl" );


If I add the following to the file path there are no issues and it looks like things work as advertised.   


Am I supposed to be doing this for each addin or should this be automatic?






Hi Aubrey,

The Include statement within the updateCheck.jsl script uses a relative path to the customMetadata.jsl file. As long as both of those files are in the same folder, it should work properly. What does the folder structure look like for your add-in?

Feel free to send me a private message if you need to send anything you don't want on this public post.



Article Labels
Article Tags