カスタム マップを配布するアドイン。JMP の 2 番目のインスタンスが閉じられるとマップを削除します。JMPアドインを使ってカスタムマップを配布しようとしています。JMPを起動すると(起動スクリプトを使って)アドインディレクトリからカスタムマップディレクトリにマップファイルをコピーし、JMPを終了すると(終了スクリプトを使って)マップファイルを削除するアドインを作成しました。しかし、このアドインでは、JMPのインスタンスを複数(場合によっては誤って)開いた状態で1つを閉じると問題が発生します。2つ目のJMPインスタンスを閉じると、終了スクリプトが実行され、カスタムマップフォルダからマップが削除されてしまいます。グラフを再度追加するには、JMPを完全に閉じ(すべてのインスタンスを閉じ)、再度開く必要があります。
アドインがアンインストールされたときのみ終了スクリプトを実行し、JMP が閉じられたときには実行しないようにする方法はありますか? あるいは、カスタムマップを配布するより良い方法はありますか?
起動スクリプト:
Names Default To Here( 1 );
//Create Custom Map Path
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
//Create map path if it doesn't exits
If( !Directory Exists( mapPath ),
Create Directory( mapPath )
);
//copy files from addin map folder to JMP map folder
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
newMapFilePath = "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps/" || mapFiles[i];
If( !File Exists( mapPath || mapFiles[i] ),
Copy File( newMapFilePath, mapPath || mapFiles[i] )
);
);
終了スクリプト:
Names Default To Here( 1 );
//delete map files
homePath = Convert File Path( "$HOME", absolute );//get home path
mapPath = Substr( homePath, 1, Length( homePath ) - Length( Word( -1, homePath, "/\" ) ) - 1 ) || "Maps/";
mapFiles = Files In Directory( "$ADDIN_HOME(com.hp.G5iTools)" || "/Maps" );
For( i = 1, i <= N Items( mapFiles ), i++,
Delete File( mapPath || mapFiles[i] )
);
基本的なデータ分析とモデリングデータアクセスウィンドウズRe: カスタム マップを配布するアドイン。JMP の 2 番目のインスタンスが閉じられるとマップが削除されます。こんにちは@RM2241さん、
JMPのインスタンスが複数開いているというのは、複数の「ホーム画面」が開いている状態のことでしょうか、それとも複数のプラットフォームが開いている状態のことでしょうか?後者の場合、これは既知のバグです(詳細はこちらをご覧ください)。
なぜ閉じるときにカスタムマップファイルを削除する必要があるのですか? 代わりに、スクリプトで新しいインスタンスでマップファイルが既に存在するかどうかを確認し、それを使用するようにすればうまくいくでしょうか?
ありがとう、
ベン
Re: カスタム マップを配布するアドイン。JMP の 2 番目のインスタンスが閉じられるとマップが削除されます。新しいインスタンスの場合、複数のホーム画面を意味します。
閉じるときにカスタムマップを削除する必要はありません。というか、削除してほしくないのです。しかし、アドインがアンインストールされた場合には削除したいのですが、終了スクリプトを実行する以外に方法が思いつきませんでした。
Re: カスタム マップを配布するアドイン。JMP の 2 番目のインスタンスが閉じられるとマップが削除されます。こんにちは@RM2241さん、
アドイン内に「アンインストール」ボタンを追加して、ユーザーがクリックするだけでアンインストール前にスクリプトを実行できるようにしていただけますか? 複数のインスタンス(ホーム画面など)がある場合は、下記リンクを参考にして解決方法を検討していただければと思います。アドインでアンインストールがいつトリガーされたかを積極的に追跡する方法はないと思います。
ありがとう、
ベン
Re: カスタム マップを配布するアドイン。JMP の 2 番目のインスタンスが閉じられるとマップが削除されます。アドインがまだ存在するかどうかを確認するときに、終了スクリプトを使用できます。
例:
ID として com.mycompany.myaddin を使用してアドインを作成する

何らかの方法でアドインにいくつかのファイルを作成させる(スタートアップスクリプトを使用)

終了スクリプトでは、Get Addin + << ID + Try-catchを使用してアドインをチェックします。

Names Default To Here(1);
Try(
Get Addin("com.mycompany.myaddin") << id
, // if this fails add-in has been removed
Delete File("$DOCUMENTS/test.txt");
);
JMP を閉じるとファイルはまだ残っているはずですが、[表示] メニューからアドインを削除するとファイルも削除されます (少なくとも私の場合はそうでした)。