Add-In zum Verteilen benutzerdefinierter Karten, entfernt Karten, wenn eine zweite Instanz von JMP geschlossen wird.Ich versuche, benutzerdefinierte Karten über ein JMP-Add-In zu verteilen. Ich habe ein Add-In erstellt, das die Kartendateien beim Start von JMP (mithilfe des Startskripts) aus dem Add-In-Verzeichnis in das Verzeichnis für benutzerdefinierte Karten kopiert und sie dann beim Schließen von JMP (mithilfe des Exit-Skripts) löscht. Dies führt jedoch zu einem Problem, wenn mehrere JMP-Instanzen geöffnet werden (manchmal versehentlich) und eine geschlossen wird. Beim Schließen der zweiten JMP-Instanz wird das Exit-Skript ausgeführt, das die Karten aus dem Ordner für benutzerdefinierte Karten löscht. JMP muss vollständig geschlossen (alle Instanzen werden geschlossen) und anschließend erneut geöffnet werden, um die Diagramme erneut hinzuzufügen.
Gibt es eine Möglichkeit, das Exit-Skript nur bei der Deinstallation des Add-Ins auszuführen, nicht aber beim Schließen von JMP? Oder gibt es eine bessere Möglichkeit, benutzerdefinierte Karten zu verteilen?
Startskript:
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] )
);
);
Exit-Skript:
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] )
);
Grundlegende Datenanalyse und -modellierungDatenzugriffWindowsBetreff: Add-In zum Verteilen benutzerdefinierter Karten, entfernt Karten, wenn eine zweite Instanz von JMP geschlossen wird.Hallo @RM2241 ,
Wenn Sie mehrere geöffnete JMP-Instanzen erwähnen, meinen Sie damit, dass mehrere Startbildschirme oder nur mehrere Plattformen geöffnet sind? Im letzteren Fall handelt es sich um einen bekannten Fehler (weitere Details finden Sie hier ).
Warum müssen die benutzerdefinierten Map-Dateien beim Schließen gelöscht werden? Wäre es stattdessen sinnvoll, wenn das Skript bei neuen Instanzen einfach prüft, ob die Map-Dateien bereits vorhanden sind, und diese dann verwendet?
Danke,
Ben
Betreff: Add-In zum Verteilen benutzerdefinierter Karten, entfernt Karten, wenn eine zweite Instanz von JMP geschlossen wird.Mit neuen Instanzen meine ich mehrere Startbildschirme.
Ich muss die benutzerdefinierten Karten beim Schließen nicht löschen. Tatsächlich möchte ich nicht, dass sie beim Schließen gelöscht werden. Ich möchte aber, dass sie gelöscht werden, wenn das Add-In deinstalliert wird. Das Exit-Skript war die einzige Möglichkeit, dies herauszufinden.
Betreff: Add-In zum Verteilen benutzerdefinierter Karten, entfernt Karten, wenn eine zweite Instanz von JMP geschlossen wird.Hallo @RM2241 ,
Könnten Sie im Add-In eine Schaltfläche zum Deinstallieren hinzufügen, über die Benutzer das Skript vor der Deinstallation ausführen können? Wenn Sie mehrere Instanzen (Startbildschirm) haben, würde ich versuchen, auch das zu lösen, indem ich mir den unten stehenden Link ansehe. Ich glaube nicht, dass es eine Möglichkeit gibt, aktiv zu verfolgen, wann die Deinstallation mit Add-Ins ausgelöst wird.
Danke,
Ben
Betreff: Add-In zum Verteilen benutzerdefinierter Karten, entfernt Karten, wenn eine zweite Instanz von JMP geschlossen wird.Sie können ein Exit-Skript verwenden, während Sie prüfen, ob das Add-In noch vorhanden ist.
Beispiel:
Erstellen Sie ein Add-In mit der ID com.mycompany.myaddin

Bringen Sie das Add-In irgendwie dazu, einige Dateien zu erstellen (ich habe ein Startskript verwendet).

Und suchen Sie im Exit-Skript mit Get Addin + << ID + Try-catch nach dem Add-In.

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");
);
Wenn Sie JMP jetzt schließen, sollte die Datei noch da sein, aber wenn Sie das Add-In aus dem Menü „Ansicht“ entfernen, wird die Datei entfernt (zumindest war das bei mir der Fall).