JMP アドインは、JMP コア機能への優れた追加機能であり、JSL を使用してアドインの作成を自動化する必要がある場合があります。 JMP アドインを構築するときに、アドインの自動作成を使用しました。 JMP to R カスタム アドイン ビルダー。 ここでは、アドインを自動作成するための気の利いた JSL トリックを紹介します。
このチュートリアルのコードは、によって書かれた素晴らしいスクリプトを基にしています。 @ジャスティン・チルトンを建てたのは誰ですか?カスタム アドイン ビルダー。
JMP アドイン (.jmpadin) は Zip ファイル (.zip) です。 JMP アドインの 3 つの最小コンポーネントは、addin.def ファイルと addin.jmpcust ファイル、およびアドインの使用時に実行される JSL スクリプトです。 必要に応じて、他の JSL スクリプト、JMP テーブル、PDF または Word ドキュメント (ドキュメントによく使用される)、および画像 (アドインのサムネイルによく使用されます) などのファイルを追加できます。
次のスクリプトの抜粋では、カスタマイズ可能なものはすべて大文字で表記されています (例: YOUR_ADDIN_NAME)。
まず、addin.def ファイルで使用される文字列を作成します。 アドイン名と ID が必要になります。 名前はアドイン メニューに表示されるもので、ID はアドインの一意の識別子で、通常は com.companyname.username.addinname の形式で表示されます。
//create string for addin.def file
addinDefString = "id=com.YOUR_COMPANY.YOUR_ID.YOUR_ADDIN_NAME
name=YOUR ADDIN NAME
supportJmpSE=0";
アドインがそれぞれ Windows または Mac でのみサポートされていることがわかっている場合は、この文字列の末尾に次のいずれかの行を追加する必要があります。
"host=Win"
または
“host=Mac”
次に、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>]\";
次に、JSL スクリプトをファイルとしてパッケージ化するには、まずテキスト ファイルとしてロードします。
addinScript = Load Text File("$SOME_PATH\YOUR_ADDIN_NAME.jsl");
次に、すべてのファイルを zip アーカイブに書き込みます。
//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);
最後に、ファイルを保存したフォルダーに移動してアドインを確認し、ダブルクリックしてインストールできます。
また、アドインの作成を自動化したい場合に備えて、より「穴埋め」バージョンのスクリプトも作成しました (複数のアドインを作成する必要があり、アドイン名、ファイル、ディレクトリなど)、以下にあります。
スクリプトで使用される 2 つの変数名は addinName と dir で、次のように定義されます。
アドイン名: アドイン メニューに表示するスペースとタイトルの大文字化を含む文字列としてのアドインの名前 (例: 「JMP to R アドイン ビルダー」)
ディレクトリ: アドインを保存するディレクトリ
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);
これらのスクリプトがアドイン作成プロジェクトをよりスムーズにするのに役立つことを願っています。
スクリプトで「編集」->「暗号化」を試してみてください。 いくつかのテストを行って、JSL を作り直す準備をしてください。 秘密のコードがほんの少ししかない場合は、それを独自のインクルード ファイルに移動し、そのコードだけを暗号化することを検討してください。 残りのコードは通常どおり実行されます。
暗号化されたスクリプトは、それ自体を確認するのが困難です。式の操作を使用する場合、または式を文字列に変換する場合は、多少の書き直しが必要になります。 使用グローバルを表示();スクリプトの実行後、何がリークする可能性があるかを把握します。
プレーンテキストバージョンを安全な場所に保管してください。
JMP アドイン (.jmpadin) は Zip ファイル (.zip) です。 JMP アドインの 3 つの最小コンポーネントは、addin.def ファイルと addin.jmpcust ファイル、およびアドインの使用時に実行される JSL スクリプトです。
ベンダーにアドインを提供したいと考えていますが、それに関連付けられたコードは秘密にしておきたいと考えています。 上記のステートメントは、コードが表示可能であることを示唆しています。 リバース エンジニアリングが (簡単に) できないように、アドインをバイナリ形式で作成する方法はありますか?
@vince_faller 「supportJmpSE」の「SE」は「Student Edition」を表しているため、アドインを JMP Student Edition で動作させる必要がある場合にのみ、これを 1 に設定する必要があります。
ジュリアさん、まとめてくれてありがとう!
addin.def ファイルに追加できるオプションをさらにいくつか追加したいと思いました。
- addinVersion - [表示] > [アドイン...] ダイアログに表示されるバージョン番号。
- minJmpVersion - アドインをインストールできる JMP の最小バージョン。
- maxJmpVersion - JMP の最大バージョンアドインをインストールできます。
addinVersion=1.3
minJmpVersion=12
maxJmpVersion=13
アドインのメニュー項目に JMP の組み込みアイコンの 1 つを使用することに興味がある場合は、私の記事をチェックしてください。組み込みの JMP アイコンアイコン名にアドインを追加し、addin.jmpcust ファイルで以下の形式を使用します。
<jm:icon type="builtin">JMPProSmall</jm:icon>