JMP-Add-Ins sind großartige Ergänzungen zu den JMP-Kernfunktionen, und manchmal müssen Sie möglicherweise die Add-In-Erstellung mit JSL automatisieren. Ich habe beim Erstellen meines JMP-Add-Ins mit der automatischen Add-In-Erstellung gearbeitet JMP to R Custom Add-In Builder . Hier ist ein raffinierter JSL-Trick für die automatische Erstellung von Add-Ins.
Der Code in diesem Tutorial basiert auf einem wunderbaren Skript von @Justin_Chilton , der das gebaut hat Benutzerdefinierter Add-In-Builder .
Ein JMP-Add-In (.jmpaddin) ist eine Zip-Datei (.zip). Die drei Mindestkomponenten eines JMP-Add-Ins sind die Dateien addin.def und addin.jmpcust sowie das JSL-Skript, das ausgeführt wird, wenn das Add-In verwendet wird. Sie können nach Bedarf weitere Dateien hinzufügen, zum Beispiel andere JSL-Skripte, JMP-Tabellen, PDF- oder Word-Dokumente (häufig für die Dokumentation verwendet) und Bilder (häufig für die Miniaturansicht des Add-Ins verwendet).
In den folgenden Skriptauszügen wird alles, was anpassbar ist, in Großbuchstaben geschrieben (z. B. YOUR_ADDIN_NAME).
Erstellen Sie zunächst die Zeichenfolge, die in der Datei addin.def verwendet wird. Sie benötigen den Namen und die ID Ihres Add-Ins. Der Name wird im Add-In-Menü angezeigt, und die ID ist eine eindeutige Kennung für das Add-In, die üblicherweise im Format com.companyname.username.addinname angezeigt wird.
//create string for addin.def file
addinDefString = "id=com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME
name=YOUR ADDIN NAME
supportJmpSE=0";
Wenn Sie wissen, dass Ihr Add-In nur unter Windows bzw. Mac unterstützt wird, sollten Sie am Ende dieser Zeichenfolge eine Zeile hinzufügen mit:
"host=Win"
Oder
“host=Mac”
Erstellen Sie als Nächstes die Zeichenfolge für Ihre Datei addin.jmpcust:
addinjmpcustString = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>YOUR ADDIN NAME</NAME>
Your Addin Name
<ACTION type="path">$ADDIN_HOME(com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME)\YOUR_SCRIPT.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
Um Ihr JSL-Skript dann als Datei zu packen, laden Sie es zunächst als Textdatei:
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
Schreiben Sie dann alle Ihre Dateien in ein Zip-Archiv:
//create a ZipArchive to write files to
za = Open("$DOCUMENTS\YOUR_ADDIN_NAME.jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefString);
za << write("addin.jmpcust", addinjmpcustString);
za << write("YOUR_ADDIN_NAME.jsl", addinScript);
Schließlich können Sie zu dem Ordner navigieren, in dem Sie Ihre Dateien gespeichert haben, und Ihr Add-In sehen, das per Doppelklick installiert werden kann.
Ich habe auch eine Version des Skripts erstellt, in der Sie die Lücken füllen können, falls Sie die Erstellung Ihres Add-Ins automatisieren möchten (wenn Sie mehrere erstellen müssen und Variablennamen für Ihren Add-In-Namen, Ihre Dateien usw. haben müssen). Verzeichnis usw.), das unten aufgeführt ist.
Die beiden im Skript verwendeten Variablennamen sind addinName und dir, die wie folgt definiert sind:
addinName : Der Name Ihres Add-Ins als Zeichenfolge, mit Leerzeichen und Groß- und Kleinschreibung des Titels, so wie er im Add-In-Menü angezeigt werden soll (z. B. „JMP to R Add-In Builder“).
dir : das Verzeichnis, in dem Sie Ihr Add-In speichern möchten
addinDefStr = "id=com.YOUR_COMPANY.YOUR_ID" || addinName || "\!n name=" || addinName || "\!n supportJmpSE=0";
addinjmpcustStr = "\[<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>Add-Ins</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>]\" || uppercase(addinName) || "\[</NAME>
]\" || addinName || "\[
<ACTION type="path">$ADDIN_HOME(com.jmp.]\" || lowercase(regex(addinName, "\s", "", globalreplace)) || "\[)\]\" || addinName || "\[.jsl</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>]\";
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
//create a ZipArchive to write files to
za = Open(dir || "/" || addinName || ".jmpaddin", zip);
//write all necessary files to ZipArchive (which can also be binary blobs)
za << write("addin.def", addinDefStr);
za << write("addin.jmpcust", addinjmpcustStr);
za << write(addinName || ".jsl", addinScript);
Ich hoffe, diese Skripte können dazu beitragen, Ihre Add-In-Erstellungsprojekte reibungsloser zu gestalten!
Sie können Edit->Encrypt für Ihre Skripte ausprobieren. Führen Sie einige Tests durch und seien Sie darauf vorbereitet, JSL zu überarbeiten. Wenn Sie nur über einen kleinen Teil des Geheimcodes verfügen, sollten Sie erwägen, ihn in eine eigene Include-Datei zu verschieben und genau diesen zu verschlüsseln. Der Rest des Codes wird normal ausgeführt.
Ein verschlüsseltes Skript hat es schwer, sich selbst zu betrachten; Wenn Sie Ausdrucksmanipulation verwenden oder Ausdrücke in Zeichenfolgen konvertieren, müssen Sie mit einigen Umschreibungen rechnen. Verwenden Globals anzeigen(); nachdem Ihr Skript ausgeführt wurde, um eine Vorstellung davon zu bekommen, was möglicherweise ausläuft.
Bewahren Sie Ihre Klartextversion an einem sicheren Ort auf!
Ein JMP-Add-In (.jmpaddin) ist eine Zip-Datei (.zip). Die drei Mindestkomponenten eines JMP-Add-Ins sind die Dateien addin.def und addin.jmpcust sowie das JSL-Skript, das ausgeführt wird, wenn das Add-In verwendet wird.
Wir möchten einem Anbieter ein Add-In zur Verfügung stellen, möchten aber, dass der damit verbundene Code geheim gehalten wird. Die obige Aussage legt nahe, dass der Code sichtbar wäre. Gibt es eine Möglichkeit, ein Add-In in binärer Form zu erstellen, sodass es nicht (einfach) rückentwickelt werden kann?
@vince_faller , das „SE“ in „supportJmpSE“ steht für „Student Edition“, Sie müssen dies also nur auf 1 setzen, wenn Sie das Add-In für die Arbeit mit JMP Student Edition benötigen.
Danke, dass du das zusammengestellt hast, Julia!
Ich wollte nur ein paar weitere Optionen hinzufügen, die Sie der Datei addin.def hinzufügen können.
- addinVersion – die Versionsnummer, die im Dialogfeld „Ansicht > Add-Ins...“ angezeigt wird.
- minJmpVersion – die Mindestversion von JMP, die das Add-In installiert werden kann.
- maxJmpVersion – die maximale Version von JMP Das Add-In kann installiert werden.
addinVersion=1.3
minJmpVersion=12
maxJmpVersion=13
Und wenn Sie daran interessiert sind, eines der integrierten JMP-Symbole für einen Menüpunkt in Ihrem Add-In zu verwenden, schauen Sie sich meine an Integrierte JMP-Symbole Add-in für die Symbolnamen und verwenden Sie das folgende Format in der Datei addin.jmpcust.
<jm:icon type="builtin">JMPProSmall</jm:icon>