Componente aggiuntivo per distribuire mappe personalizzate, rimuove le mappe quando viene chiusa una seconda istanza di JMP.Sto cercando di distribuire mappe personalizzate tramite un componente aggiuntivo JMP. Ho creato un componente aggiuntivo che copia i file delle mappe dalla directory del componente aggiuntivo alla directory delle mappe personalizzate all'avvio di JMP (utilizzando lo script di avvio), quindi li elimina alla chiusura di JMP (tramite lo script di uscita). Tuttavia, questo crea un problema quando vengono aperte più istanze di JMP (a volte accidentalmente) e una viene chiusa. Quando la seconda istanza di JMP viene chiusa, viene eseguito lo script di uscita, eliminando le mappe dalla cartella delle mappe personalizzate e JMP deve essere chiuso completamente (chiuso da tutte le istanze) e quindi riaperto per aggiungere nuovamente i grafici.
Esiste un modo per far sì che lo script di uscita venga eseguito solo quando il componente aggiuntivo viene disinstallato, ma non quando JMP viene chiuso? Oppure esiste un modo migliore per distribuire mappe personalizzate?
Script di avvio:
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] )
);
);
Script di uscita:
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] )
);
Analisi e modellazione dei dati di baseAccesso ai datiFinestreRe: Componente aggiuntivo per distribuire mappe personalizzate, rimuove le mappe quando viene chiusa una seconda istanza di JMP.Ciao @RM2241 ,
Quando parli di più istanze di JMP aperte, ti riferisci a più "schermate iniziali" o semplicemente a più piattaforme aperte? In quest'ultimo caso, si tratta di un bug noto (vedi qui per maggiori dettagli).
Perché è necessario eliminare i file mappa personalizzati alla chiusura? Funzionerebbe invece se lo script controllasse semplicemente le nuove istanze se i file mappa esistono già e li utilizzasse?
Grazie,
Ben
Re: Componente aggiuntivo per distribuire mappe personalizzate, rimuove le mappe quando viene chiusa una seconda istanza di JMP.Per le nuove istanze intendo più schermate iniziali.
Non ho bisogno di eliminare le mappe personalizzate alla chiusura, anzi, non voglio che vengano eliminate alla chiusura. Ma vorrei che venissero eliminate se il componente aggiuntivo è stato disinstallato e lo script di uscita è stato l'unico modo per farlo.
Re: Componente aggiuntivo per distribuire mappe personalizzate, rimuove le mappe quando viene chiusa una seconda istanza di JMP.Ciao @RM2241 ,
Potresti aggiungere un pulsante all'interno del componente aggiuntivo per la disinstallazione, in modo che gli utenti possano cliccare per eseguire solo quello script prima della disinstallazione? Se hai più istanze (schermata iniziale), proverei a risolvere anche questo problema, consultando il link che ho inviato qui sotto. Non credo ci sia un modo per monitorare attivamente quando la disinstallazione viene attivata con i componenti aggiuntivi.
Grazie,
Ben
Re: Componente aggiuntivo per distribuire mappe personalizzate, rimuove le mappe quando viene chiusa una seconda istanza di JMP.È possibile utilizzare lo script di uscita per verificare se il componente aggiuntivo esiste ancora.
Esempio:
Crea un componente aggiuntivo con com.mycompany.myaddin come ID

In qualche modo fai in modo che il componente aggiuntivo crei alcuni file (ho usato uno script di avvio)

E nello script di uscita controlla il componente aggiuntivo utilizzando 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");
);
Ora, quando chiudi JMP il file dovrebbe essere ancora lì, ma se rimuovi il componente aggiuntivo dal menu Visualizza, il file verrà rimosso (almeno nel mio caso).