Module complémentaire pour distribuer des cartes personnalisées, supprime les cartes lorsqu'une 2ème instance de JMP est fermée.J'essaie de distribuer des cartes personnalisées via un module complémentaire JMP. J'ai créé un module complémentaire qui copie les fichiers de cartes du répertoire du module complémentaire vers le répertoire des cartes personnalisées au lancement de JMP (via le script de démarrage), puis les supprime à la fermeture de JMP (via le script de sortie). Cependant, cela pose un problème lorsque plusieurs instances de JMP sont ouvertes (parfois accidentellement) et que l'une d'elles est fermée. À la fermeture de la deuxième instance, le script de sortie s'exécute, supprimant les cartes du dossier des cartes personnalisées. JMP doit être complètement fermé (toutes les instances sont fermées), puis rouvert pour réajouter les graphiques.
Existe-t-il un moyen d'exécuter le script de sortie uniquement lors de la désinstallation du module complémentaire, et non à la fermeture de JMP ? Ou existe-t-il une meilleure façon de distribuer des cartes personnalisées ?
Script de démarrage :
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 de sortie :
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] )
);
Analyse et modélisation des données de baseAccès aux donnéesWindowsRe : Module complémentaire pour distribuer des cartes personnalisées, supprime les cartes lorsqu'une 2e instance de JMP est fermée.Salut @RM2241 ,
Lorsque vous mentionnez plusieurs instances de JMP ouvertes, parlez-vous de plusieurs « écrans d'accueil » ou simplement de plusieurs plateformes ouvertes ? Dans ce dernier cas, il s'agit d'un bug connu (voir ici pour plus de détails).
Pourquoi faut-il supprimer les fichiers de carte personnalisés à la fermeture ? Le script pourrait-il simplement vérifier si les fichiers de carte existent déjà dans les nouvelles instances et les utiliser ?
Merci,
Ben
Re : Module complémentaire pour distribuer des cartes personnalisées, supprime les cartes lorsqu'une 2e instance de JMP est fermée.Pour les nouvelles instances, je veux dire plusieurs écrans d'accueil.
Je n'ai pas besoin de supprimer les cartes personnalisées à la fermeture. En fait, je ne souhaite pas qu'elles le soient. Cependant, je souhaiterais qu'elles le soient si le module complémentaire est désinstallé et que le script de sortie est le seul moyen de le faire.
Re : Module complémentaire pour distribuer des cartes personnalisées, supprime les cartes lorsqu'une 2e instance de JMP est fermée.Salut @RM2241 ,
Pourriez-vous ajouter un bouton « Désinstaller » dans le module complémentaire afin que les utilisateurs puissent cliquer pour exécuter ce script uniquement avant la désinstallation ? Si vous avez plusieurs instances (écran d'accueil), je vous conseille d'essayer de résoudre ce problème en consultant le lien ci-dessous. Je ne pense pas qu'il existe un moyen de suivre activement le déclenchement de la désinstallation avec les modules complémentaires.
Merci,
Ben
Re : Module complémentaire pour distribuer des cartes personnalisées, supprime les cartes lorsqu'une 2e instance de JMP est fermée.Vous pouvez utiliser le script de sortie tout en vérifiant si le module complémentaire existe toujours.
Exemple:
Créer un module complémentaire avec com.mycompany.myaddin comme ID

D'une manière ou d'une autre, faites en sorte que le module complémentaire crée des fichiers (j'ai utilisé un script de démarrage)

Et dans le script de sortie, vérifiez le complément en utilisant 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");
);
Maintenant, lorsque vous fermez JMP, le fichier devrait toujours être là, mais lorsque vous supprimez le complément du menu Affichage, il supprimera le fichier (du moins, c'est ce qui s'est passé pour moi).