Créer un complément à partir de l'application ? Obtenir le chemin de l'application ?Existe-t-il un moyen de créer un complément à partir d'une application que j'ai créée ? L'application est assez complexe et tout ce que je voudrais faire est de la regrouper dans un complément. De plus, ce problème pourrait être résolu si quelqu'un peut m'aider à résoudre le problème suivant :
J'ai construit une application et l'ai dans un dossier (myApp/) et j'ai des scripts que je voudrais inclure () à partir du répertoire source (myApp/src/). Cependant, lorsque j'essaie d'obtenir le répertoire par défaut() à partir de l'application, il renvoie "/", ce qui ne me permettra pas de trouver le dossier source si l'application a été exécutée sur un autre ordinateur. Existe-t-il un moyen d'interroger l'emplacement de l'application en cours d'exécution ? Sinon, existe-t-il un moyen de regrouper des fichiers dans l'application afin que je puisse accéder de manière fiable à mes fichiers (peut-être via une variable de chemin par défaut) ?
Mes tentatives pour mettre l'application dans un complément ont échoué. Je ne peux pas exécuter l'application (.jmpappsource ou .jmpapp) à partir du complément. De plus, étant donné que l'application est assez complexe, je ne souhaite pas la reconstruire dans le générateur de compléments. Existe-t-il un moyen d'organiser l'application dans un complément ? Ce serait formidable si JMP ajoutait une fonctionnalité "Exporter l'application en tant que complément" ou "Créer un complément à partir de l'application".
Re : Créer un complément à partir de l'application ? Obtenir le chemin de l'application ?Merci nascif_jmp pour le partage de votre méthode et merci ian_jmp pour le partage du papier ! Les deux ont été utiles, mais j'ai opté pour une approche différente - restructurer mon application/complément. Voici les étapes que j'ai suivies pour m'assurer que mon application trouverait ses fichiers inclus, de manière fiable, sur différents ordinateurs.
- Placez tous les fichiers/dossiers pertinents pour l'application dans un dossier (je l'appelle le répertoire racine de l'application ou le répertoire racine en abrégé)
- Utilisez une variable de chemin pour le répertoire racine de l'application et des chemins relatifs pour faire référence aux fichiers et répertoires de l'application.
- Par exemple, un répertoire "$appRoot/" qui contient un dossier "src/" avec mes scripts et un "lib/" avec des images et des icônes. Je les appelle "$appRoot/src/" et "$appRoot/lib/"
- Enregistrez votre application en tant que fichier .jmpapp, situé quelque part sous le répertoire racine de votre application ou dans l'un de ses sous-répertoires (peu importe où tant qu'il est accessible via un chemin relatif à partir du dossier racine)
- Créez un complément et sous des fichiers supplémentaires, ajoutez le répertoire racine de l'application (jmp importera également tous ses fichiers et sous-répertoires à inclure dans le complément).Ces fichiers seront situés dans le répertoire du complément.
- Vous pouvez maintenant localiser tous vos fichiers en vous référant au répertoire du complément, qui se trouve dans un emplacement par défaut sur chaque ordinateur. Cet emplacement est récupéré en faisant getPathVariable("ADDIN_HOME("My Add In Name")). Utilisez-le pour trouver les fichiers et répertoires que vous avez ajoutés à l'étape précédente. Dans votre script de complément, définissez la variable path sur le répertoire racine du complément :
- ADDIN_NAME = "Nom de mon complément" ;
- setPathVariable("appRoot", getPathVariable(evalInsert("ADDIN_HOME(^ADDIN_NAME^)")) || "Répertoire racine de l'application/");
- Définir d'autres variables de chemin relatives à ce répertoire racine
- Exécutez votre fichier d'application à partir de votre script de complément en utilisant open("$appRoot/pathToMyApp/myApp.jmpapp");
- Pour distribuer votre application, distribuez plutôt le complément qui contient votre application avec ses fichiers nécessaires
Re : Créer un complément à partir de l'application ? Obtenir le chemin de l'application ?De plus, cet article de Prédictum montrerait comment d'autres ont réussi cela: Meilleures pratiques dans JMP ® Gestion des compléments
Re : Créer un complément à partir de l'application ? Obtenir le chemin de l'application ?J'ai eu un problème similaire lorsque j'ai essayé de décomposer un framework JSL en plusieurs modules qui s'incluraient les uns les autres. Je l'ai résolu en ajoutant le code suivant au module principal :
// Find the current location in the source tree for the given file
__getThisPath = Function( {this_f},
{Default Local},
this_p = "";
ifl = Include File List();
For( ifli = 1, ifli <= N Items( ifl ), ifli++,
a_path = ifl[ifli];
idx = Contains( a_path, this_f );
If( idx > 0,
this_p = Left( a_path, idx - 1 );
Break();
);
);
If( this_p == "",
Throw( "Unable to find path for " || this_f )
);
Return( this_p );
);
Une fois que j'ai déterminé l'emplacement de mon script dans le système de fichiers, j'ai pu l'utiliser pour trouver et inclure ses dépendances :
// Use the current location in the source tree for this file
// in order to load its dependencies.
__INCLUDE = __getThisPath( "timeit.jsl" );
Set Path Variable( "TI_HOME", __INCLUDE );
Include( "$TI_HOME/../JSLhelpers/mfr.jsl" );