Re : Gestionnaire de compléments@Justin_Chilton JMP17 affiche des structures de menu vides pour mes compléments où JMP16 affiche des éléments de menu. C'est la même chose pour les trois addins. Voir mon message précédent du 14 septembre 2021.

Re : Gestionnaire de compléments@Justin_Chilton , @nathan-clark Je reviens enfin à ma fonction TEST Addin Auto Update. Je pense que je l'ai fait fonctionner correctement, à l'exception du fait que le gestionnaire de compléments n'écrit pas le dossier de métadonnées pour la configuration TEST.
Une chance d'activer cela? sinon, il faut mettre à jour manuellement ces fichiers à chaque fois, ce qui est plutôt sujet aux erreurs.
Henning
Re : Gestionnaire de complémentsSalut @Justin_Chilton
En essayant diverses choses après avoir posté la question, j'ai suspecté que le fichier était endommagé par le système de sécurité interne de l'industrie.
Lorsque j'ai reçu le fichier de l'extérieur et que j'ai procédé à la réinstallation, il a été installé normalement.

Je garderai les questions et les réponses pour le même cas.
Merci toujours, Justin
Dave_Ryu.
Re : Gestionnaire de complémentsSalut @Justin_Chilton
Je reçois beaucoup d'aide pour construire à l'aide du gestionnaire de compléments.
Je l'utilisais bien jusqu'à la v2.9, mais l'erreur suivante se produit lors de la réinstallation.
Cette erreur se produit à la fois dans la v2.9 et dans la dernière version de la v3.1.
Lorsque j'exécute le fichier d'installation, l'erreur se produit immédiatement et ne continue pas.
Pouvez-vous me dire comment agir pour l'erreur?

Merci beaucoup.
Dave_Ryu.
Re : Gestionnaire de complémentsSALUT @Justin_Chilton , j'ai rencontré cette erreur ci-dessous lors du déploiement dans un dossier TEST. Appréciez le complément sinon! Cela aurait dû être une fonctionnalité standard dans JMP 
Message d'erreur:
{"l'argument doit être un caractère"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "Vous n'avez pas enregistré vos informations mises à jour pour le " || /*###*/currentAddinInfo[" Nom"] || /*###*/" complément." /*###*/)}
Erreur : l'argument doit être un caractère
1 fois).
Erreur-type
Nom de la fonction : Concat
Mauvais argument : currentAddinInfo["Name"]
Fonction en cours d'exécution : "Vous n'avez pas enregistré vos informations mises à jour pour le " || /*###*/currentAddinInfo["Nom"] || /*###*/" ajouter à." /*###*/
Pile d'appel :
saveButtonCheck
refreshAddinTableBox
déployerSélectionné
Re : Gestionnaire de compléments@Justin_Chilton Merci pour la suggestion. Vous avez raison de dire que ce que je voulais peut être géré par include().Merci pour l'astuce sur <
Je ne sais pas pourquoi mon zip n'a pas fonctionné, mais je le faisais sur un Mac et toutes les entrées ont disparu après ma tentative manuelle.Maintenant que j'ai inclus le travail, il n'y a plus besoin de modifications manuelles de toute façon.
Re : Gestionnaire de compléments@steveylin , il suffit de compresser le contenu du complément et de le renommer en xxx.jmpaddin devrait fonctionner, il vous suffit de vous assurer que les fichiers jmpcust et def sont à la racine du fichier zip jmpaddin.
Alternativement, je suggérerais d'ajouter votre chemin en tant que include() pour "Run thi JSL" au lieu d'utiliser le script directement en utilisant un chemin. Cela éviterait d'avoir à modifier manuellement le fichier jmpcust. Je ne sais pas pourquoi le chemin ne fonctionnerait pas pour vous, mais c'est la configuration que j'utilise réellement pour mes compléments.

J'aime utiliser <
Re : Gestionnaire de complémentsJe suis un novice essayant de faire fonctionner l'addin.Je l'ai fait fonctionner en référençant un répertoire, mais il est par défaut "texte" et je dois changer manuellement en "chemin"
"chemin" >$ADDIN_HOME(com.cirrus.pejmpscriptsMac)\pe-jmp-scripts\Check_Duplicate_Measurements.jsl
Le problème que j'ai est que je peux modifier .jmpcust pour le faire fonctionner sur mon ordinateur, mais je ne peux pas l'exporter.Existe-t-il un moyen simple de prendre le fichier addin.def/addin.jmpcust et de le compresser moi-même ?J'espère que c'est quelque chose de facile et que je n'ai pas besoin d'utiliser le gestionnaire de compléments.
J'ai essayé d'utiliser zip et de renommer mais cela n'a pas fonctionné.
Salutations,
Steve
Re : Gestionnaire de complémentsSalut @Justin_Chilton , j'ai récemment eu cette erreur lors du déploiement d'une nouvelle version de Prod.
Message d'erreur:
{"l'argument doit être un caractère"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "Vous n'avez pas enregistré vos informations mises à jour pour le " || /*###*/currentAddinInfo[" Nom"] || /*###*/" complément." /*###*/)}
Erreur : l'argument doit être un caractère
1 fois).
Erreur-type
Nom de la fonction : Concat
Mauvais argument : currentAddinInfo["Name"]
Fonction en cours d'exécution : "Vous n'avez pas enregistré vos informations mises à jour pour le " || /*###*/currentAddinInfo["Nom"] || /*###*/" ajouter à." /*###*/
Pile d'appel :
saveButtonCheck
refreshAddinTableBox
déployerSélectionné
Re : Gestionnaire de complémentsSalut Nathan,
Oui, je l'ai construit en premier et je n'ai eu aucune erreur. Mais je reçois quand même le message de déploiement.
John
Re : Gestionnaire de compléments@Gido_vanderStar ,
Il semble que vous utilisiez probablement des paramètres régionaux différents du mien, ce qui provoque l'erreur de format inconnu. Je viens de mettre à jour le complément (v3.1) qui fait que le format de date utilisé lors du processus d'archivage respecte le format de date de vos paramètres régionaux.
Re : Gestionnaire de compléments@john_madden Avez-vous d'abord cliqué sur le bouton de construction ? C'est le bouton à côté de l'icône de sauvegarde. Cela construira le complément et le placera dans le dossier de développement.
Ensuite, vous pouvez installer DEV .... Ou vous pouvez déployer une version TEST ou PROD du complément. (vous devez déployer un complément TEST ou PROD avant de pouvoir installer le complément TEST ou PROD.
Re : Gestionnaire de complémentsSalut Justine,
Lorsque j'essaie d'installer mon complément (qu'AIM construit très bien), j'obtiens une erreur "Le complément DEV/TEST/PROD n'existe pas". Qu'est-ce que je peux faire de mal ?
John
AIM 3.0, JMP Pro EA 17.0b6, OS X 12.2.1
Re : Gestionnaire de complémentsSalut @Justin_Chilton ,
Merci pour ce plugin. Je voulais juste signaler un désagrément. Lors de l'installation ou du déploiement d'un complément, j'obtiens environ 50 fois le message suivant dans le journal :
Unknown format: m/d/y h:m
Utilisation de la dernière version (v3.0) du complément, dans JMP 16.0.0, Windows10.
Re : Gestionnaire de compléments@vohwinkelh0 J'ai récupéré le code de mise à jour automatique de Justin, et il serait assez facile - je crois - de faire quelques mises à jour pour permettre ce dont vous parlez.
Selon la façon dont vous l'avez intégré, vous pourrez peut-être jouer avec votre code local pour effectuer ces mises à jour. Dans l'état actuel des choses, le code comporte une étape qui vérifie essentiellement si la version installée est PROD, puis recherche une version plus récente. Je pense que vous pouvez effectuer le processus si la version installée est PROD OR TEST ... et vérifier les métadonnées de la zone de déploiement pour voir s'il existe une version PROD plus récente.
C'est peut-être quelque chose que vous pourriez envisager pour couvrir vos besoins jusqu'à ce que la bande passante s'ouvre 
Re : Gestionnaire de compléments@pauldeen , merci de l'avoir signalé ! Cela devrait être corrigé dans la v3.0.
Re : Gestionnaire de compléments@vohwinkelh0 , cela semble être une excellente idée pour une fonctionnalité dans le gestionnaire de compléments. Il semble que vous auriez besoin d'une sorte de version TEST (ou bêta) séparée ? Malheureusement, je n'ai actuellement pas la bande passante pour implémenter quelque chose comme ça, mais je suis sûr que cela pourrait être fait en ajoutant des champs de métadonnées personnalisés et en utilisant ceux de votre code pour savoir s'il s'agit d'une version TEST.
Re : Gestionnaire de compléments@Justin_Chilton la saisie d'un & dans le champ d'info-bulle provoque un dysfonctionnement lors de l'écriture dans addin.jmpcust, ce qui l'empêche d'être parsable. (JMP 16.1 Windows 10).
Re : Gestionnaire de compléments@Justin_Chilton savez-vous s'il existe un moyen d'implémenter la fonction de mise à jour automatique également sur TEST ? Je tombe fréquemment sur le fait que je distribue le TEST aux utilisateurs pour tester une fonctionnalité, mais une fois que PROD est mis à jour, cette mise à jour n'est pas déployée car le complément TEST ne vérifie pas automatiquement s'il existe une nouvelle version de PROD ?
Re : Gestionnaire de complémentsMerci @pauldeen ! Je ne savais pas que la fonctionnalité addinLoad.jsl était disponible (cachée dans le guide). Cette solution fonctionne pour mon problème!
Re : Gestionnaire de compléments@Djtjhin Vous pouvez soit déployer un complément vide sur tous les ordinateurs avec un addinLoad.jsl qui inclut vos fonctions personnalisées
Ou
Vous pouvez utiliser votre service informatique pour déployer un fichier jmpStartAdmin.jsl qui contient vos fonctions personnalisées comme décrit ici , aucun complément nécessaire.
Re : Gestionnaire de complémentsHé @Justin_Chilton , j'essaie d'utiliser le gestionnaire de compléments pour déployer une fonction personnalisée définie par l'utilisateur qui s'exécute idéalement au démarrage. Pourriez-vous recommander la meilleure façon de le faire en utilisant le gestionnaire de compléments ?
Re : Gestionnaire de compléments@Justin_Chilton JMP17EA2 affiche à nouveau des structures de menu vides, aucune erreur dans le journal. Merci pour cet addin, il devrait être intégré directement dans JMP !
Re : Gestionnaire de compléments@Justin_Chilton @MikeD_Anderson
Merci beaucoup pour la réponse! En fait, je suis juste tombé sur la possibilité de le faire l'autre jour, mais vous m'avez battu pour le publier ici.
@MikeD_Anderson - les informations sur le démarrage rapide de JMP sont vraiment bonnes à savoir, les scripts d'application commençaient définitivement à devenir assez énormes, donc cela aide beaucoup.
Une partie de ce que j'espérais accomplir avec le gestionnaire de compléments était de sauter l'étape d'avoir à exporter le .jmpappsource vers un .jsl ou .jmpapp chaque fois que je voulais tester quelque chose, donc ce que j'ai fini avec était le code ci-dessous . Je ne sais pas trop comment cela fonctionne, mais lors de l'utilisation d'OpenFile(), le .jmpappsource ne lance pas le générateur d'application et l'application peut être exécutée directement. Exactement ce dont j'avais besoin !
app = JMPApp();
app << OpenFile("$ADDIN_HOME(com.example.addin)\MyApp.jmpappsource");
app << Run;Re : Gestionnaire de compléments@mringqui & @Justin_Chilton - juste un petit commentaire en couleur sur la méthode mentionnée par Justin. Vous devez d'abord compiler le fichier source de l'application jmp dans un fichier .jmpapp. Cela peut être fait sous Fichier> Exporter lorsque vous êtes dans le générateur d'applications. Vous incluez ensuite le fichier .jmpapp dans le package de complément et ouvrez le fichier .jmpapp :
open("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpapp");
Voici à quoi ressemble l'assistant de complément JMP par défaut.

Notez que cela a de jolis effets d'entraînement par rapport à l'intégration directe du JSL. Le plus important est que, pour les très grosses applications, cela empêchera JMP d'être lent au démarrage. Tout le code doit être analysé au démarrage - donc si votre script est vraiment gros ou si vous en avez une tonne, cela peut ralentir les choses - un problème que j'ai eu avec le STK. L'intégration en tant qu'application signifie que JMP n'a qu'à analyser une ligne de code au démarrage. Il y en a d'autres, mais c'est le plus important IMO.
Re : Gestionnaire de compléments@mringqui , Merci de nous avoir contactés. Je pensais que cela nécessiterait quelques modifications du complément du gestionnaire de compléments, mais @MikeD_Anderson m'a montré comment faire cela avec la façon dont le gestionnaire de compléments fonctionne déjà.
Au lieu de définir un fichier à exécuter, utilisez un script qui exécute le fichier source de l'application JMP. Vous n'auriez qu'à coller ceci dans la zone de texte pour "Exécuter ce JSL".
Include("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpappsource");</CODE></PRE></LINGO-BODY><LINGO-SUB id="lingo-sub-394777" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-394777" slang="en-US"><P>Salut, super travail ! J'espère créer un complément qui utilise un fichier .jmpappsource comme action "Exécuter JSL dans ce fichier" pour l'élément de menu. Est-ce quelque chose qui pourrait facilement être ajouté? À l'heure actuelle, être obligé d'utiliser un fichier .jsl limite ma capacité à utiliser le gestionnaire de compléments de manière pratique. Merci!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386516" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-386516" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@Justin_Chilton</A><BR /> J'utilise une combinaison de $ADDIN_HOME et Get Default Directory() selon où/comment j'ai besoin d'inclure des choses. Et pour bon nombre de mes inclusions, j'ai un ensemble de bibliothèques communes à plusieurs de mes outils et je les traite comme un complément distinct. Ensuite, tout outil que je crée inclut simplement le fichier de $ADDIN_HOME et toutes les fonctions de la bibliothèque sont disponibles pour moi ou pour toute autre personne souhaitant les utiliser.<BR /><BR /> je ne sais pas pourquoi<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank"> @tsl</A> doit ajouter cette couche supplémentaire au zip. De mon point de vue, le laisser un peu comme l'organisation dans sa première hiérarchie rendrait les choses plus simples dans l'ensemble, mais ne connaissant pas toutes les spécificités de cette infrastructure, il y a peut-être quelque chose qui me manque.<BR /> En règle générale, la seule mise à jour que je dois apporter à un fichier .jmpcust, une fois les éléments d'origine définis, consiste à mettre à jour le nom d'affichage pour une mise à jour de version (ce que je fais dans mon dépôt, mais qui pourrait être fait dans le gestionnaire de compléments).</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386499" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-386499" slang="en-US"><P>Merci pour la clarification<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank"> @tsl</A> . Il me semble que cela pourrait fonctionner avec quelques modifications de votre processus.</P>
<OL>
<LI>Ne modifiez pas le dossier $ADDIN_HOME et utilisez plutôt des chemins relatifs et Get Default Directory(). Cela facilite également le développement du complément, car toute référence à celui-ci concernerait la version installée.</LI>
<LI>Utilisez une variable pour déterminer l'emplacement du chemin relatif de CommonFiles et utilisez-le dans vos inclusions, car l'emplacement varie entre un complément de production et le dépôt de développement.</LI>
</OL>
<P>Alternativement, vous pouvez abandonner l'idée de copier CommonFiles dans chaque complément. Vous pouvez créer une entrée de complément distincte pour CommonFiles (elle n'aurait aucun élément de commande) et demander à l'utilisateur de l'installer en plus du complément. Cela signifierait qu'il n'y a qu'une seule copie des CommonFiles pour l'utilisateur (cela peut être une bonne ou une mauvaise chose selon la fréquence à laquelle vous testez tous les compléments après la mise à jour de CommonFiles. Avec cela, vous pouvez inclure les fichiers à l'aide de la variable de chemin $Addin_Home, mais vous devrez toujours trouver comment les inclure à partir du développement. Cela pourrait ressembler à ce que<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6649" target="_blank"> @nathan-clark</A> fait, mais je ne suis pas sûr.</P>
<P>Encore une autre alternative est qu'au lieu que j'implémente la copie pour vous (quelqu'un de restrictif), je peux simplement implémenter un script de post-traitement très flexible que vous pouvez définir. Supposons que vous définissiez une fonction qui prend une référence à ZipArchive et que vous puissiez la manipuler comme bon vous semble. Cette solution nécessite probablement le moins de changement par vous et moi.</P>
<P>Désolé pour toutes ces divagations, mais j'espère que l'une de ces suggestions nous mettra dans la bonne direction !</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386453" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-386453" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@Justin_Chilton</A> , oui, vous décrivez quelque chose de très proche de ce que je fais. Permettez-moi d'élaborer un peu, en montrant ce qui se passe si j'utilise le gestionnaire de compléments. (Et j'explore et j'apprends toujours comment cela fonctionne, alors pardonnez-moi si je ne représente pas ce qu'il peut faire !)</P><P> </P><P>Après avoir créé le complément, où j'ai laissé le dossier source être Addin_1\Source, j'ai un fichier que nous appellerons Addin_1.jmpaddin assis dans le dossier Addin_1\Release.</P><P>Je le renomme en extension .zip, l'ouvre et regarde. Je trouve que ça ressemble à ça :</P><P> </P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32932i1AD28B843A933FC3/Addin_Initial_Folder_Structure.png" role="button" title="Addin_Initial_Folder_Structure.png" alt="Addin_Initial_Folder_Structure.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P> </P><P>(Il y a aussi quelques fichiers XML que j'utilise pour gérer certaines choses, mais nous pouvons les ignorer pour plus de simplicité)</P><P>Je modifie ensuite manuellement le zip en créant un nouveau dossier dans le .zip et en faisant glisser tous les fichiers Source_1, etc. dans ce nouveau sous-dossier. Je laisse addin.jmpcust et add.def au niveau racine, car sinon le complément ne s'installera pas. Je laisse également CustomMetaData.jsl au niveau racine car je suppose que c'est là qu'il doit être.</P><P>Je fais ensuite glisser dans le .zip le dossier CommonFiles dont j'ai également besoin. Ma structure Zip finale ressemble à ceci :</P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32933i3C14631B2CA97BE7/Addin_Final_Folder_Structure.png" role="button" title="Addin_Final_Folder_Structure.png" alt="Addin_Final_Folder_Structure.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P>Il me reste ensuite une chose à faire : les lignes <ACTION type=""path""> du fichier .jmpcust doivent être modifiées maintenant. Alors qu'il dit</ACTION></P><P>$ADDIN_HOME(com.xyz)\Source_1\Code_1.jsl</P><P>Je dois le changer pour lire</P><P>$ADDIN_HOME(com.xyz)\Addin_1\Source_1\Code_1.jsl</P><P>Ce que je peux faire avec une recherche/remplacement dans un éditeur de texte.</P><P>Une fois toutes ces étapes terminées, je peux ensuite déployer et installer le complément et tout fonctionne.</P><P> </P><P>Pour votre dernier commentaire, parce que ce complément est une suite d'outils, chacun a son propre sous-dossier "Source" dans Addin_1, donc pour référencer les CommonFiles, mes instructions Include() dans Code_1.jsl etc ont un extra "..\" pour remonter d'un niveau supplémentaire afin de trouver correctement les fichiers inclus.</P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-385991" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-385991" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A><BR /> Je fais quelque chose de similaire avec subversion, et j'utilise le gestionnaire de compléments pour publier toutes les activités Repo. Une fois que tout le code est validé, j'exporte vers un emplacement qui devient la "source" de l'addin (un dossier local ou réseau). Personnellement, je gère mes fichiers .jmpcust et .def dans mon référentiel afin qu'ils soient également exportés, mais vous pouvez simplement exporter du code et créer les fichiers .def et .jmpcust avec Addin Manager (il créera les fichiers dans le dossier source , et dans mon cas, l'exportation de nouveaux éléments à partir du référentiel ne fera qu'écraser les fichiers en cours d'exportation).<BR /><BR /> Ensuite, j'utilise son outil pour gérer tout le packaging, l'archivage et la distribution dans mes dossiers de production (c'est toujours ce qui a pris le plus de temps à faire manuellement, de toute façon). Pour me faciliter la tâche, puisque j'avais également de nombreux addins gérés avant Addin Manager, j'ai également édité manuellement le fichier jmp qui stocke toutes les informations (addin, nom, dossiers source, etc.) donc j'avais tous mes addins prêts aller quand j'ai démarré le complément plutôt que de les ajouter manuellement via cette interface).</P><P> </P><P>En plus du complément lui-même, j'ai également mis à jour certaines fonctions incluses pour permettre à mes utilisateurs d'être avertis et de mettre à jour automatiquement les compléments lorsque de nouvelles versions sont mises en production.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-385979" slang="en-US">Re : Gestionnaire de compléments</LINGO-SUB><LINGO-BODY id="lingo-body-385979" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A> , à quoi ressemble la structure du fichier pour le complément lorsque vous le compressez manuellement ?</P>
<P>J'imagine que puisque votre code inclut des chemins relatifs vers le répertoire CommonFiles, votre complément ressemble à ceci ?<SPAN style="font-family: inherit;">Le dossier Release n'est-il pas inclus dans le fichier addin ?</SPAN></P>
<P> </P>
<PRE>Addin_1.jmpaddin
|_Addin
|_Source<BR /> |_Code.jsl<BR /> |_Release<BR /> |_Something?<BR /> |_CommonFiles</PRE>
<P>Dans la structure ci-dessus, le dossier 'Addin' n'existe que pour conserver la même structure de dossiers pour vos chemins relatifs. Est-ce le cas pour vous ?</P>
<P>Je pense que je peux ajouter un nouveau chemin de répertoire facultatif qui peut être copié dans le fichier de complément dans le cadre du processus de génération. Cependant, nous devons encore résoudre le problème de répertoire. Pour résoudre ce problème, l'idée que j'ai est d'ajouter un petit extrait pour définir l'emplacement du répertoire CommonFiles et de l'utiliser pour tous vos fichiers communs. Alternativement, vous pouvez créer une fonction 'IncludeCommonFile()' qui a tenté d'inclure à partir de l'emplacement de production et de basculement vers l'emplacement de développement</P>
<P> </P>
<PRE><CODE class=" language-jsl">commonFilesDir = Directory Exists("../CommonFiles/",
"../CommonFiles/", // production location
"../../CommonFiles/" // development location
);
//or
IncludeCommonFile = Function({file},
Try(Include("../CommonFiles/" || file), Include("../../CommonFiles/" || file));
);
Cela vous donnerait la structure suivante, et je * pense * que cela fonctionnerait si je devais ajouter une fonctionnalité de dossier partagé. Le seul hic auquel je peux penser serait que si vous avez des dossiers supplémentaires dans Source, la fonction Inclure ne fonctionnerait pas, ou vous auriez besoin de '../' supplémentaires dans vos inclusions en utilisant la variable de répertoire.
Addin_1.jmpaddin
|_Source
|_Code.jsl
|_CommonFiles
Re : Gestionnaire de complémentsSalut @Justin_Chilton ,
Je viens de découvrir votre gestionnaire de compléments et je suis intrigué. Je gère manuellement les compléments depuis des années, jusqu'à la modification manuelle des fichiers .jmpcust. Je vois une opportunité de me simplifier la vie avec votre gestionnaire de compléments. Cependant, je me demande comment faire pour qu'il supporte ce que je veux faire.
Je me référerai à l'image ci-jointe de la structure de dossier proposée. L'idée est qu'il existe un dossier contenant du code JMP, nous l'appellerons RepositoryRoot ici. Ce dossier se trouve dans un référentiel de laboratoire GIT et est partagé et synchronisé entre deux ou plusieurs développeurs JSL.
Chaque développeur possède un complément dans le référentiel. Appelons-les Addin_1 et Addin_2. Ces compléments se trouvent dans leurs propres sous-dossiers respectifs dans le référentiel.
Il existe également un dossier que nous appellerons CommonFiles dans le référentiel qui contient des fichiers de bibliothèque JSL standard utilisés par les deux compléments.
Ces fichiers de bibliothèque standard sont inclus dans les compléments individuels, par exemple un fichier JSL dans Addin_1\Source peut avoir une ligne comme
include("..\..\CommonFiles\LibraryFile1.jsl");

La question est donc de savoir comment tirer parti de cette structure avec le gestionnaire de compléments ? Je rencontre des problèmes avec deux options possibles :
1) Si dans le gestionnaire de compléments, je laisse "RepositoryRoot" être le dossier source, il crée alors Addin.def et Addin.jmpcust dans RepositoryRoot. Cela ne fonctionne pas car nous ne pouvons avoir qu'un seul addin.def dans un dossier source donné et nous voulons avoir des compléments séparés avec des développeurs séparés, mais en partageant le code.
2) Si je laisse "RespositoryRoot\Addin_1\Source" être le dossier source, alors addin.def et addin.jmpcust sont créés dans le dossier Source du sous-dossier de Addin_1. Et c'est bien car il est contenu dans son propre dossier. MAIS, je ne vois aucun moyen d'ajouter le dossier CommonFiles à partir de deux niveaux dans l'arborescence des répertoires au complément. Le code nécessite ce dossier de fichiers commun, mais nous souhaitons le conserver au niveau supérieur pour le partage et la synchronisation du code.
Je comprends qu'en fin de compte, le dossier "CommonFiles" doit être dupliqué dans chaque fichier .jmpaddin final avant la publication du complément.
L'espoir était que nous puissions trouver une capacité de gestionnaire de compléments qui gérerait cela pour nous. Notre alternative consiste à créer manuellement le fichier .zip et à configurer la structure du dossier comme nous en avons besoin, puis à modifier l'extension en .jmpaddin avant la publication.
Si vous avez des idées ou envisagez de faire en sorte que le gestionnaire de compléments prenne en charge cette fonctionnalité, ce serait formidable.
Merci beaucoup
À M
Re : Gestionnaire de complémentsMerci pour votre réponse @Justin_Chilton ! J'ai fini par appliquer un thème clair pour jmp afin d'éviter complètement le problème de couleur. Je vais essayer vos suggestions, en cliquant sur la touche d'échappement pour résoudre le temps de latence.
Re : Gestionnaire de complémentsSalut @alavy ,
Je ne sais pas ce qui se passe avec le temps de réponse lent. Je devrai faire des recherches plus approfondies pour voir s'il s'agit d'un problème avec mon complément ou d'un problème avec JMP. Cependant, j'ai trouvé une solution de contournement décente. La première fois que vous cliquez dans une zone d'édition de texte, maintenez la touche Échap enfoncée jusqu'à ce que le texte ne soit plus au point. Maintenant, toutes les zones d'édition devraient fonctionner sans délai après avoir cliqué dessus.
Quant à la palette de couleurs, je ne sais pas ce qui causerait cela. Toute version du complément après 2.5 doit avoir une coloration appropriée pour les thèmes sombres. Je pense que la seule façon de reproduire ce problème est de passer du thème clair au thème sombre lorsque JMP est ouvert. J'obtiens toujours la vue ci-dessous avec le thème gris.

Re : Gestionnaire de complémentsHé @Justin_Chilton ,
J'utilise la v2.9 du complément sur JMP 15.1 exécuté sur MacOS. Je rencontre un temps de réponse TRÈS lent chaque fois que je dois saisir du texte dans l'une des zones de texte du complément. C'est si lent qu'il rend le complément inutilisable.
Un deuxième problème, plus petit, est qu'aucun des schémas de couleurs ne fonctionne correctement avec JMP défini en mode sombre. La couleur du texte dans les zones de texte est trop claire et ne peut pas être lue sur la couleur d'arrière-plan.

Re : Gestionnaire de compléments@Justin_Chilton Je crois que j'ai un accès en écriture car je peux voir que l'ancien complément a été archivé correctement et que le nouveau complément a été mis à jour, mais je vois toujours l'erreur. Je ne suis pas sûr de l'étape spécifique qui a échoué. En ce qui concerne le lecteur réseau monté, malheureusement, je suis probablement à court de profondeur sur celui-là. Je ne suis pas sûr de ce statut, mais je peux peut-être demander à mes collègues d'en savoir plus.
Re : Gestionnaire de compléments@Djtjhin , il semble que cela soit très probablement lié au fait qu'il s'agit d'un emplacement sharepoint. Pouvez-vous confirmer que vous disposez d'un accès en écriture à cet emplacement en créant un fichier dans l'explorateur de fichiers ? Même si vous disposez d'une autorisation, JMP peut ne pas l'être en tant qu'application. Utilisez-vous un chemin réseau normal ou enregistrez-vous via un lecteur réseau monté ? Le montage de votre serveur Sharepoint en tant que lecteur réseau peut résoudre les problèmes liés aux autorisations, car JMP peut simplement enregistrer sur le lecteur monté. Avec le chemin réseau normal, des informations d'identification peuvent être requises, ce que JMP ne prend pas en charge.
Re : Gestionnaire de complémentsMerci d'avoir précisé Justin !
Question de suivi, je reçois le message d'erreur suivant alors que j'essayais de déployer en production. Le dossier de destination est en fait un point de partage. Je ne sais pas si c'est la raison ou peut-être qu'il y a une solution de contournement.
Message d'erreur:
{"Fichier non ouvert en mode écriture. "(1, {1}, 2, "Enregistrer le fichier texte", Enregistrer le fichier texte /*###*/(filepath, str))}
Erreur : Fichier non ouvert en mode Écriture.
1 fois).
Indices du tableau de données : 1
Erreur-type
Nom de la fonction : Enregistrer le fichier texte
Fonction en cours d'exécution : Enregistrer le fichier texte /*###*/(filepath, str)
Pile d'appel :
déployerSélectionné
Re : Gestionnaire de compléments@Djtjhin ,
Je recommanderais de mettre l'instruction dans chaque commande pour que la vérification soit effectuée chaque fois que le complément est utilisé et non chaque fois que l'utilisateur lance JMP. De plus, il y a eu des problèmes avec la mise à jour des compléments au démarrage, donc faire cela lorsqu'un utilisateur clique et commande de complément est un moyen plus sûr de le faire.
Re : Gestionnaire de compléments@Justin_Chilton puis-je clarifier une réponse que vous avez fournie à Sébastien précédemment ? Alors, l'instruction de mise à jour automatique (ci-dessous) fonctionnera-t-elle si je la place dans le "script de démarrage" (instantané) ? Ou devrions-nous inclure uniquement l'instruction de mise à jour automatique sous chaque script de commande ?
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();

Merci
Daniel
Re : Gestionnaire de complémentsC'est confirmé, ça fonctionne à nouveau, merci !
Re : Gestionnaire de complémentsMerci @pauldeen .Je pense qu'il y avait plusieurs facteurs différents en collision pour cela. D'une part, l'erreur devrait être résolue dans la version finale de JMP 16.0, mais elle était là pour EA8. De plus, cette erreur se produit probablement parce que vos paramètres régionaux ne prennent pas en charge le format de date que j'ai utilisé. Pour résoudre ce problème et être plus convivial pour les paramètres régionaux, j'ai mis à jour certains endroits où je formate les dates pour utiliser Locale Date Time au lieu de formats spécifiques. Cela devrait corriger l'erreur et mettre les dates dans un format plus convivial.
Re : Gestionnaire de complémentsMerci pour le correctif 2.8 sur les dossiers !
J'en ai un nouveau pour vous :
Gestionnaire de compléments ouvert, sélectionné un complément :

Exécution de JMP 16EA8.
Pas de problème avec la même chose sur JMP 15.2.0 sous windows 10
Re : Gestionnaire de compléments@Justin_Chilton Merci! Je vais essayer ça.
Re : Gestionnaire de compléments@pauldeen , je viens de mettre en ligne une nouvelle version (v2.8) qui corrige le problème de sous-dossier que vous voyiez. J'ai également ajouté une option de case à cocher pour créer automatiquement un dossier pour vous, comme vous vous y attendiez à l'origine.
Re : Gestionnaire de compléments@Sburel , Vous pouvez ajouter ce code partout où vous souhaitez rechercher une mise à jour, par exemple au début d'une commande d'élément de menu. Cela pourrait faire en sorte que lorsqu'un utilisateur clique sur la commande, il recherche une nouvelle version avant de lancer le complément.
Si je me souviens bien, il y avait un problème avec l'utilisation de ce code dans le fichier addinLoad.jsl, ce qui le ferait vérifier au démarrage de JMP, mais il y avait des problèmes avec la réinstallation du complément pendant que le complément est toujours en cours de chargement. Ce problème peut ou non être toujours un problème.
-Justin
Re : Gestionnaire de compléments@Justin_Chilton
Complément vraiment cool. Fonctionne vraiment bien.Cependant, j'ai eu du mal à utiliser la fonction de mise à jour automatique. En particulier, je suis confus avec le fichier/emplacement approprié pour ajouter l'extrait de code suivant
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
Meilleur
Sébastien
Re : Gestionnaire de compléments@Justin_Chilton Ah oui, créer un dossier vide vous fait passer cet écran. Le nom du dossier ne semble pas important, seul le fait qu'il soit vide.
Lors des tests, j'ai trouvé cet autre bogue:
Si je prends votre gestionnaire de compléments v2.7.jmpaddin et que je crée le dossier vide, puis que je le charge comme ceci, je dépasse l'écran d'ajout mais avec une grosse erreur : la même chose se produit avec d'autres compléments contenant des sous-dossiers. .

Re : Gestionnaire de compléments@pauldeen Le dossier source est l'endroit où le fichier jmpaddin sera également décompressé (j'aurais probablement dû le faire créer automatiquement le dossier, mais je suppose que je ne l'ai pas fait). Je suggère de créer un dossier appelé "Matériel de formation ASM" dans le dossier "Desktop" et de le définir comme dossier source. Le dossier source ne peut rien contenir car tout finirait par être compressé dans le complément.
Re : Gestionnaire de compléments@Justin_Chilton Lors de l'ajout d'un complément à partir d'un fichier .jmpaddin existant, nous avons un bogue sur cet écran :

Vous ne pouvez pas laisser le dossier source vide et si vous y mettez quelque chose, vous recevez un avertissement indiquant qu'il doit être vide lors du démarrage à partir d'un fichier jmpaddin.
Re : Gestionnaire de complémentsfonctionne comme un charme. Merci Henning
Re : Gestionnaire de complémentsSalut @vohwinkelh0 ,
Merci d'avoir signalé cela. J'ai vu cette erreur il y a quelques jours et votre commentaire me l'a rappelé, j'ai donc finalement pu localiser le problème d'un bogue avec l'une des fonctions de fichier/répertoire.
J'ai mis à jour le complément sur cette page pour contourner ce problème pour le moment, mais j'ai également noté le problème dans JMP afin que nous puissions le résoudre avant la sortie de JMP 16.
Merci,
Justin
Re : Gestionnaire de complémentsJustin,
Je reçois une erreur avec votre complément dans le cadre des programmes JMP16EA. Vous voulez que je dépose un rapport de bogue là-bas ou dois-je le poster ici ?
Henning
Re : Gestionnaire de complémentsMerci beaucoup pour le partage... j'essaierai la semaine prochaine.
Re : Gestionnaire de compléments@guillaumebugnon J'utilise donc cette fonction dans une boucle for pour chiffrer les scripts.
encryptScript = Function({filepath},
{defaultLocal},
errortxt = "";
winCount = N Items (Window ());
scriptWin = Open (filePath);
scriptWin << Bring Window to Front;
Wait (1);
Main Menu ("Encrypt Script");
windowList = Window ();
encryptedWin = windowList[nitems(windowList)]; // get reference to encrypted script window (i.e. the last window)
//TODO: Implement without Try
Try (
encryptedScript = encryptedWin[Script Box(1)] << Get Text;
save text file(filePath, encryptedScript);
ConsoleMsg("File Encrypted: "||filepath); // hoping this goes to stdout
,
errortxt ||= char(exception_msg) || "\!r\!n";
);
Try (scriptWin << Close WIndow());
Try (encryptedWin << Close WIndow());
Return (errortxt)
);
Ensuite j'en ai un autre autoit script qui traverse et tape le mot de passe et appuie sur Entrée.
Ce n'est certainement pas une solution parfaite et votre élément de la liste de souhaits serait bien mieux.
Re : Gestionnaire de compléments@pauldeen ,
Merci d'avoir signalé ce problème avec les compléments de menu personnalisés. Je viens de télécharger une nouvelle version qui devrait résoudre ce problème.
-Justin
Re : Gestionnaire de compléments@Justin_Chilton Merci pour votre réponse.
il peut être utile d'avoir une fonction jsl capabale qui peut chiffrer d'autres fichiers jsl (ou une autre façon de le faire).
j'ai regardé @vince_faller présentation ce matin (heure française). Joli.
Nous avons également un processus Devops mais nous devons en automatiser davantage.
Guillaume
Re : Gestionnaire de compléments
@guillaumebugnon ,
@vince_faller pourrait avoir quelques conseils sur le chiffrement des scripts. Cependant, je devrais ajouter une fonctionnalité au gestionnaire de compléments pour pouvoir autoriser la modification des fichiers à ajouter avant le processus de compression.
je pense @vince_faller a également fait une présentation/webcast hier qui pourrait vous être utile ici : https://www.brighttalk.com/webcast/18305/412912
- Justin
Re : Gestionnaire de complémentsBonjour tout le monde,
Quelqu'un a-t-il des conseils ou une expérience pour chiffrer les scripts avant qu'ils ne soient compressés dans le fichier jmpaddin ?
Merci
Salutations,
Guillaume
Re : Gestionnaire de compléments
S'exécutant sur JMP15 Windows 10, le gestionnaire de compléments ne peut plus analyser la structure de menu d'un complément existant.
Pour reproduire : créez un nouvel addin et renommez le menu de niveau supérieur en utilisant custom. Créez une commande et enregistrez la définition du complément.
Fermez le gestionnaire de compléments, rouvrez-le et essayez de voir l'onglet des éléments de menu pour le complément que vous venez de créer (assurez-vous de consulter celui-ci avant de regarder l'une de vos autres structures de menus de compléments).
Pour que cela fonctionne, créez un deuxième complément dans lequel vous ne modifiez pas l'élément de menu supérieur, mais laissez-le sur les "Compléments" par défaut. Enregistrez ce complément. Fermez le gestionnaire de compléments, ouvrez-le à nouveau, affichez d'abord la structure de menu de celui avec le nom de niveau supérieur par défaut, puis affichez la structure de menu de celui personnalisé. Tout fonctionne à nouveau.
Re : Gestionnaire de compléments#2 a commencé avec JMP15/OSX15, mais je n'ai pas encore essayé 2.4 et je reviendrai vers vous.
Re : Gestionnaire de complémentsMerci Justin!!
Re : Gestionnaire de complémentsSalut @john_madden ,
Merci de nous avoir contactés et excuses pour le retard.
#1 devrait être adressé dans la v2.4 que je viens de télécharger ici.
Pour # 2, je ne suis pas en mesure de reproduire ce problème sur Windows, mais je vais enquêter plus avant sur Mac. Savez-vous si ce problème a commencé avec un numéro de version JMP spécifique (c'est-à-dire JMP 14/15) ou avec une version macOS (10.14/15) ou cela vous est-il toujours arrivé ?
Merci,
Justin
Re : Gestionnaire de complémentsSalut Justine,
Je rencontre quelques problèmes avec le gestionnaire de compléments sous JMP 15/Mac OS 10.15.
(1) [trivial] les options de version maximale/minimale de JMP doivent inclure 15
(2) [moins trivial] La saisie de texte dans des zones de texte dans un certain nombre de volets du gestionnaire semble (partiellement) cassée. Je peux saisir du texte (par exemple, nom du complément, version, etc.) en le collant, mais pas en le tapant.
Merci.
Jean Madden
Re : Gestionnaire de complémentsBonjour, j'ai commencé à utiliser le gestionnaire de compléments après de nombreuses années de gestion manuelle des modifications. Cependant, j'ai récemment eu un problème avec les éléments de menu qui n'étaient pas visibles. J'ai récemment mis à jour JMP 14.3.0, je ne sais pas si cela est lié. Je n'avais aucun problème avec ça avant.
Comme vous pouvez le voir, il n'y a pas d'erreurs dans la construction ou le déploiement signalé, donc je ne sais pas ce qui se passe.
Toute aide ou suggestion est appréciée car je ne veux vraiment pas avoir à le reconstruire à partir de zéro.
Salutations,
Dereck.

Re : Gestionnaire de complémentsSalut Adam,
Toutes mes excuses pour la réponse tardive. D'après le message d'erreur que vous voyez lors de la suppression de l'essai, il semble que mon hypothèse selon laquelle le script updateCheck puisse trouver le fichier customMetadata était correcte. Je vois où vous avez le '
aa = Inclure ( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl" ) ;' partie de votre scénario. Cependant, vous n'avez pas vraiment besoin d'y inclure le fichier. Au lieu de cela, vous souhaitez modifier l'inclusion dans le script updateCheck.jsl. Cela devrait ressembler à ce qui suit (autour de la ligne 11).
customMetadata_aa = Include( "<SPAN>$ADDIN_HOME(com.jmpTest.myjmpaddin)\</SPAN>customMetadata.jsl" );
Faites-moi savoir si vous avez des questions supplémentaires.
Salutations,
Justin
Re : Gestionnaire de complémentsBonjour Justine,
Comme il s'agit de mon premier complément et que je suis un enfant en ce qui concerne l'expérience JMP (environ 11 mois d'utilisation), je peux commencer à poser des questions simples maintenant pendant que j'active la fonction de vérification des mises à jour.J'ai créé un complément de test simple pour me concentrer uniquement sur la fonction de mise à jour afin que je puisse comprendre cette fonctionnalité avant de l'appliquer à mon programme plus robuste.
LE SCÉNARIO:
aa = Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl" );
Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
New Window ("Test 3",
Panel Box ("Test 3",
Text Box("Test 3")
)
);
Répondre à vos questions :
- Ai-je défini la préférence "Créer un fichier de métadonnées" ?
- J'avais coché la case "Créer un fichier de métadonnées", mais je n'avais pas le code de métadonnées personnalisé contenant l'instruction d'inclusion dans mon script.J'ai ajouté cette ligne de code à la ligne juste avant le code de vérification de mise à jour, comme vous pouvez le voir ci-dessus, mais cela n'a pas corrigé le problème.
- Quelle est la structure de répertoire de mon addin ?
- Dans la section centrale de la fenêtre du gestionnaire de compléments, sous l'onglet Fichiers, addin.def, addin.jmpcust, customMetadata.jsl et updateCheck.jsl existent tous dans le même dossier.Ce dossier existe dans le même dossier parent que le fichier addin lui-même (.jmpaddin).
- Ce dossier existe sur mon lecteur C, PAS sur le serveur.Dois-je également enregistrer ces fichiers sur le serveur ?
- Dans la section inférieure, onglet Prod, j'ai les trois options d'enregistrement sur un emplacement de serveur.Ils ont chacun leur propre dossier et les trois dossiers existent dans le même dossier parent.
- ARCHIVE - ne contient que les itérations précédentes du complément lors du déploiement.
- META – ne contient que le fichier publishedAddins.jsl
- PROD - contient uniquement le fichier d'installation du complément .jmpaddin
- Quel message d'erreur est-ce que je reçois lorsque je commente "Essayer ()"
- Je reçois le message d'erreur "Erreur avec le fichier : le chemin n'est pas valide : \customMetadata.jsl"
- J'ai essayé de changer le chemin d'accès ci-dessus de la langue $ADDIN_HOME... à l'emplacement exact sur mon lecteur C tel qu'il est appelé dans l'onglet Fichier (section du milieu).Cela n'a pas aidé, j'ai reçu le même message d'erreur.
Merci pour votre aide!
-Adam
Re : Gestionnaire de complémentsSalut @Adam_R ,
Merci pour tout le travail sur les détails ! Quelques questions et choses à essayer :
- La préférence "Créer un fichier de métadonnées" est-elle définie dans le groupe de préférences "Métadonnées personnalisées" ? Ce fichier est requis pour que le script de mise à jour réussisse.
- À quoi ressemble la structure de répertoires de votre addin ? Le script appelle-t-il 'com.jmp.juchil.addinmanager:checkForUpdate' dans un dossier de niveau inférieur ? Si tel est le cas, le fichier updateCheck.jsl s'attend à ce qu'il se trouve dans le même dossier que celui à partir duquel le dossier est appelé, ce qui empêche la fonction de fonctionner. Une solution de contournement consiste à ajouter un autre fichier JSL au niveau racine de votre complément (identique à customMetadata.jsl et updateCheck.jsl) qui appelle la fonction updateCheck et à inclure simplement ce fichier dans le script JSL de niveau inférieur. Une autre option consiste à modifier le script updateCheck.jsl pour utiliser '$addin_home(com.jmp.myaddin)/customMetadata.jsl' au lieu du nom de fichier relatif. Si tel est le problème, je peux mettre à jour le complément pour le rendre plus flexible là où il ne dépend pas tellement du répertoire par défaut où vous appelez la fonction.
- Le script updateCheck.jsl est implémenté de sorte qu'il échoue silencieusement à l'aide d'un Try() afin de ne pas perturber le flux de travail de votre complément. Donc, si aucune des deux premières suggestions ne résout le problème, pourriez-vous commenter Try() dans le fichier updateCheck.jsl et me faire savoir quel message d'erreur vous obtenez lorsque vous essayez de rechercher une mise à jour ?
Faites moi savoir si vous avez des questions.
Salutations,
Justin
Re : Gestionnaire de complémentsBonjour Justine,
Add-In Manager v2.3 fonctionne à merveille dans tous les aspects pour moi, sauf un, je ne parviens pas à obtenir le updateCheck pour pousser correctement les mises à jour.Quelques faits:
- Mon code en dehors de la vérification des mises à jour s'exécute correctement.
- Mes dossiers PROD "Métadonnées" et "Déploiement" se trouvent tous les deux sur des emplacements de serveur sous le même dossier parent, et j'ai vérifié que les utilisateurs y ont accès.
- Dans la section Préférences, j'ai sélectionné "Inclure le script de vérification de mise à jour" et copié l'instruction d'inclusion fournie dans cette section dans mon code.J'ai modifié la section ID du complément de cette déclaration de (com.jmp.myaddin) pour qu'elle corresponde à mon complément.Je n'ai rien modifié d'autre dans cette déclaration et je n'ai rien modifié dans le script updateCheck.jsl.
- Lors de la modification du complément et du déploiement sur PROD, j'ai vérifié que la "pubDate" dans le fichier publishedAddins.jsl situé dans le fichier du serveur de métadonnées a changé à chaque déploiement
- J'ai demandé à des utilisateurs de télécharger une version existante du fichier situé dans le dossier PROD, de fermer JMP, de rouvrir JMP et d'exécuter le complément avec succès.
- J'ai déployé une nouvelle itération sur PROD, vérifié que la pubDate a été modifiée et demandé à l'utilisateur précédent de rouvrir JMP et d'exécuter le complément existant.L'utilisateur n'est jamais invité à mettre à jour le complément.
- J'ai demandé au même utilisateur d'accéder au dossier PROD et de réinstaller le complément, qui a mis à jour le complément avec succès.
Re : Gestionnaire de complémentsSalut Aubrey,
L'instruction Include du script updateCheck.jsl utilise un chemin relatif vers le fichier customMetadata.jsl. Tant que ces deux fichiers sont dans le même dossier, cela devrait fonctionner correctement. À quoi ressemble la structure des dossiers de votre complément ?
N'hésitez pas à m'envoyer un message privé si vous avez besoin d'envoyer quelque chose que vous ne voulez pas sur ce post public.
Merci,
Justin
Re : Gestionnaire de complémentsJustin,
J'ai un problème avec la fonction de mise à jour automatique.J'ai retracé le problème jusqu'au script updateCheck.jsl.
La ligne suivante échoue, puis l'instruction try se termine.
customMetadata_aa = Include("customMetadata.jsl" );
Si j'ajoute ce qui suit au chemin du fichier, il n'y a aucun problème et il semble que les choses fonctionnent comme annoncé.
$ADDIN_HOME(my_addin_here)
Suis-je censé faire cela pour chaque addin ou cela devrait-il être automatique ?
Merci,
Aubrey
Re : Gestionnaire de complémentsJustin,
La version 2.3 fonctionne comme un charme sur mon Mac !Merci!!!
John
Re : Gestionnaire de compléments@Justin_Chilton Merci! Je vais essayer.
Re : Gestionnaire de compléments@john_madden ,
Merci d'avoir signalé cela ! Il semble que vous utilisiez un Mac et que vous ayez renommé ou supprimé l'un de vos dossiers source. J'ai ajouté une vérification pour cela maintenant (v2.3) afin qu'il ne devrait plus échouer.
Re : Gestionnaire de compléments@nathan-clark ,
Si vous avez toujours la version 1.3 du complément, vous pouvez modifier l'ID et le nom de l'élément de menu pour cette version et l'utiliser avec la nouvelle version. La version 1 vous permet d'utiliser des cases à cocher pour en créer plusieurs à la fois et devrait pouvoir se connecter à la table de données utilisée par la version 2. Il y avait beaucoup de changements architecturaux dans la v2.0, j'ai donc malheureusement dû supprimer les cases à cocher. Je l'ai sur ma liste pour les ajouter à l'avenir.
Re : Gestionnaire de complémentsSalut Justine,
Dans JMP 14.0.1, j'obtiens toujours cette erreur :
Message d'erreur : {"l'argument doit être une liste"(1, 2, "Concat Items", Concat Items /*###*/(errorList, " "))} Erreur : l'argument doit être une liste 1 fois. Type : Erreur Nom de la fonction : Concat Items Fonction en cours d'exécution : Concat Items /*###*/(errorList, " ") Pile d'appels : getLastModifiedDateOfNewestFile getStatusIcon refreshAddinTableBox initialize
Des idées? C'est le gestionnaire 2.2.
John
Re : Gestionnaire de compléments@Justin_Chilton
Merci encore pour ce complément. Je me mets enfin au courant de la nouvelle version et profite de certaines de vos améliorations sur ce que je faisais manuellement
Ma seule demande, et je ne sais pas si cela est possible, est de pouvoir créer plusieurs addins à la fois. Je sais que les panneaux inférieurs pour les informations et les répertoires sont spécifiques aux compléments, mais ils pourraient peut-être disparaître si plusieurs compléments sont sélectionnés. Ensuite, tous les éléments sélectionnés pourraient être DEVd/Deployed/etc.
Je gère plus de 40 addins en ce moment et je fais souvent des mises à jour par lots, donc pouvoir faire un tas de tous les addins à la fois serait incroyable !
Re : Gestionnaire de complémentsMerci pour ça! Maintenant, créer et mettre à jour des compléments est si facile que je développe et améliore mes propres compléments plus souvent qu'à l'âge des ténèbres avant cet outil.
Re : Gestionnaire de complémentsJe veux être si bon et charitable et remercier les développeurs JMP pour la 13e version d'un logiciel avec lequel j'aime enseigner. Je l'ai depuis la version 5.0, avec ses manuels papier bien feuilletés et pour être honnête, rien n'a été ajouté de valeur pour moi depuis cette version. Mais aimant la version 5.0 comme je l'ai fait, j'ai volontiers et volontiers mis à jour chaque année. Et puis le Analyse de la courbe ROC et de l'aire partielle sous la courbe le script est arrivé, ce qui était magnifique dans JMP12. J'ai mis en place une session d'enseignement pour montrer à mes étudiants les courbes ROC .... et je suis passé à la v13 ...... et maintenant il n'affiche pas les courbes. huer.
Re : Gestionnaire de complémentsSalut @tejvishnu ,
Oui, JMP 13 est requis pour installer ce complément. Malheureusement, je n'ai pas pu rendre ce complément compatible avec JMP 12. J'ai mis à jour le message pour inclure ces informations.
Merci,
Justin
Re : Gestionnaire de complémentsLe complément ne semble pas être installé sur mon l'ordinateur. Cela semble être le problème avec certains des compléments récemment téléchargés. Ce complément nécessite-t-il JMP-13 ?
J'ai JMP 12.2 sur mon ordinateur.
Re : Gestionnaire de compléments@Justin_Chilton : outil merveilleux, merci beaucoup!
- "insert_after" pour les commandes.
Dans le fichier .jmpcust, il y a un espace réservé pour "l'entrée avant" (dans l'exemple ci-dessous : Graph Builder), qui peut être saisi manuellement pour placer la nouvelle commande à la bonne position.
Existe-t-il une fonction cachée dans l'interface graphique pour placer une commande à une position spécifique - comme c'est possible pour les menus ?

- Puis-je également utiliser l'outil pour développer des compléments Barres d'outils ?
Re : Gestionnaire de compléments@vohwinkelh0 Je ne suis pas sûr de comprendre ce que vous essayez de faire. Dans le gestionnaire de compléments, je déploierais TEST après avoir créé le complément qui crée le fichier de métadonnées dans le .jmpaddin
Selon la façon dont vous utilisez la fonction dans les fichiers du gestionnaire de compléments, il se peut qu'elle ne vérifie les mises à jour que si la version utilisée est PROD. Cherchez-vous également à faire des mises à jour automatiques pour les versions TEST ?
Je me demande si le problème est que le fichier "publishedaddins" n'est mis à jour que sur une version PROD, pas sur une version TEST ?
Re : Gestionnaire de compléments@hogi Si vous cliquez sur l'onglet Éléments de menu, vous devriez pouvoir cliquer sur le point chaud à côté de l'arborescence des éléments de menu et ajouter une "commande de menu de niveau supérieur" qui devrait vous permettre de placer le complément dans un menu supérieur existant OU de créer le vôtre. De plus, vous pouvez mettre à jour manuellement le fichier .jmpcust pour créer des fonctions de menu personnalisées.
Re : Gestionnaire de compléments@nathan-clark pourriez-vous préciser à laquelle de mes deux questions renvoie cette réponse ?
Re : Gestionnaire de compléments@hogi Oh, oui, désolé... principalement la question du menu. La première fois que j'ai lu, je les considérais comme similaires, mais je vois à quel point les barres d'outils sont un peu un problème différent.
Étant donné que vous pouvez modifier les barres d'outils, je pense qu'il existe un moyen de créer automatiquement une barre d'outils personnalisée (si je me souviens bien, les personnalisations de la barre d'outils résident simplement dans un fichier quelque part). En fonction de votre infrastructure, je pourrais voir cela comme un complément autonome ou peut-être quelque chose d'intégré dans d'autres compléments utilisant les fichiers addinload.jsl et addinunload.jsl.
Re : Gestionnaire de compléments@hogi Ok, je vois où nous nous manquons, au moins en partie.
Les barres d'outils et les menus sont des choses différentes. Les menus sont les options de texte pour naviguer et cliquer et toujours démarrer dans ce "Fichier" "Modifier"... etc. Les barres d'outils sont les barres d'images de raccourci que vous pouvez ajouter/supprimer.
Je ne peux pas parler spécifiquement de ce que vous voyez. Pourtant. Je n'ai jamais eu de problèmes avec l'édition des fichiers .jmpcust, sauf si je fais une erreur. Je n'ai pas utilisé Addin Manager pour modifier beaucoup le fichier .jmpcust, je ne peux donc pas dire à quoi s'attendre dans votre scénario.
La grande majorité des modifications .jmpcust que je fais manuellement dans les éditeurs de texte, et s'il y a une erreur dans ce fichier, JMP n'affichera pas correctement les éléments de menu.
@Justin_Chilton avez-vous vu quelque chose comme ci-dessus?
Re : Gestionnaire de compléments@nathan-clark
Désolé, je ne comprends pas non plus votre dernier message.
Je peux ajouter une barre d'outils à la .jmpcust, soit dans JMP, soit manuellement en modifiant le fichier.
Mais une fois que j'ai modifié le complément respectif dans Gestionnaire de compléments (par exemple ajouter une autre commande au menu Add-In), Gestionnaire de compléments supprimera la barre d'outils et toutes les entrées de la barre d'outils du fichier .jmpcust.
C'est un comportement assez inattendu, n'est-ce pas ?
De plus : je ne comprends pas pourquoi je dois ajouter les paramètres de la barre d'outils manuellement - pourquoi pas via Gestionnaire de compléments ?
Concernant l'autre question :
Pourriez-vous s'il vous plaît indiquer ce que je dois faire dans Gestionnaire de compléments placer un complément, par exemple exactement sous GraphBuilder dans le menu Graph ?
(correspondant à l'extrait de code manuel dans https://community.jmp.com/t5/JMP-Add-Ins/Add-In-Manager/tac-p/567196/highlight/true#M1646 )
Re : Gestionnaire de compléments@nathan-clark oui c'est exactement le fichier. Je dois mettre à jour manuellement le fichier publishedAddins.jsl chaque fois que je pousse une nouvelle version vers Test. L'automatisation serait d'une grande aide
Re : Gestionnaire de compléments@vohwinkelh0 ahh ... c'est un problème plus difficile à résoudre. d'après ce que j'ai compris, ce fichier sert davantage à suivre les versions de production les plus récentes afin que personne ne mélange les versions de production et de test.
Je ne sais pas combien de traçage du code serait nécessaire, mais je trouverais où le fichier addins publié est créé et le copierais essentiellement comme une nouvelle méthode. Je créerais essentiellement un fichier supplémentaire qui contiendrait tous les addins publiés par test. Ensuite, j'exécuterais cette nouvelle méthode lorsque les déploiements TEST sont terminés.
Et dans votre code de mise à jour, il peut être configuré de sorte que pour un complément PROD, il vérifie les mises à jour dans le fichier publishedaddin... s'il s'agit d'un complément TEST, il vérifie dans le fichier testpublishedaddin.
Je ne suis pas sûr de la quantité réelle de travail de code qui serait nécessaire pour cela, mais c'est la direction que je prendrais.
Re : Gestionnaire de complémentsLa façon dont je le gère en ce moment est que les noms de fichiers sont en fait les mêmes, ainsi que la structure des dossiers. Dans le updateCheck.jsl j'ai ajouté :
If( customMetadata_aa["state"] == "TEST",
addinLoc = "\\xxx\JMP_Addin\TEST\xxx_META\";
);donc fondamentalement dépendant de l'état du complément, il apparaîtra dans l'un ou l'autre dossier. J'espérais que ce serait aussi simple que de passer un emplacement différent à la fonction qui écrit le publishedAddins.jsl.
En espérant que cela puisse faire germer une idée...
Re : Gestionnaire de complémentsJe crois que l'emplacement est transmis via la table configurée pour chaque addin. Ainsi, un complément donné aura son emplacement de complément publié à un endroit donné, quel que soit "l'état". Et je ne sais pas comment cet emplacement est passé ou quand dans la progression du code. Si un déploiement TEST, je ne pense pas que le code d'écriture du fichier soit appelé, vous devrez donc également le mettre à jour.
Re : Gestionnaire de compléments@nathan-clark a écrit:Je ne peux pas parler spécifiquement de ce que vous voyez. Pourtant. Je n'ai jamais eu de problèmes avec l'édition des fichiers .jmpcust, sauf si je fais une erreur.
Hum, étrange. Sur mon système, c'est bien pire - en fait comme ceci :
Après avoir importé le code dans Gestionnaire de compléments , tout semble bien.
Mais dès que j'ajoute une commande à l'Add-In via le Gestionnaire de compléments fonctionnalité, l'ensemble barre d'outils les paramètres seront supprimés du fichier .jmpcust (les paramètres du menu seront toujours là).
Je suis assez surpris que ce comportement soit simplement observable sur mon PC - qu'est-ce qui ne va pas?
Voici un exemple de code .jmpcust à tester sur vos PC.
Une fois que vous avez ajouté une commande via le gestionnaire de compléments, la barre d'outils avec le afficher/masquer la légende le bouton disparaîtra 
<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>ADD-INS</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>TEST</NAME>
test
<ACTION type="text">print(1);</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
<TOOLBAR>
<NAME>TEST.TEST: ADD-IN TOOLBAR</NAME>
test.test: Add-In Toolbar
<COMMAND>
<NAME>SHOW/HIDE LEGEND</NAME>
show/hide legend
<ACTION type="text">local({first_gb},
Try(
first_gb = (Current Report() << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1] << Get Scriptable Object;
first_gb << show legend (!(Report(first_gb)[LegendBox( 1 )] << get width));
)
);</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</TOOLBAR>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>Re : Gestionnaire de complémentsMerci!@hogi
Pouvez-vous envoyer une capture d'écran de ce à quoi les choses devraient ressembler ? Je n'ai jamais vu ni utilisé la touche de la barre d'outils auparavant.
Re : Gestionnaire de complémentsVoici comment ajouter une barre d'outils :

une description générale de ce que sont les barres d'outils et de leur fonctionnement peut être trouvée ici :
https://community.jmp.com/t5/JMP-Add-Ins/Add-In-Manager/tac-p/574113/highlight/true#M1661
Re : Gestionnaire de compléments@hogi ok... je pense que je vois ce qui se passe. même si je ne suis pas sûr d'avoir une bonne réponse. en regardant le gestionnaire de compléments, il n'a pas d'options de barre d'outils (dans l'onglet Éléments de menu, le menu hotspot) ce qui me porte à croire qu'il peut ne pas être intégré à la recréation du texte .jmpcust pour inclure les barres d'outils, c'est pourquoi votre texte se perd.
Je n'ai pas de travail réel autre que l'édition manuelle de vos fichiers .jmpcust. Je conserve mon code dans des référentiels et je modifie manuellement mes fichiers addin.def et addin.jmpcust à l'aide du gestionnaire de compléments principalement pour un système de déploiement. Je n'ai donc pas rencontré de problèmes comme ceux que vous voyez ici.
Re : Gestionnaire de complémentsBonjour,
Je viens de commencer à créer un complément et avant qu'il ne soit déployé auprès de mes collègues, j'aimerais apprendre à le gérer et à déployer des compléments avec ce complément utilitaire.Je rencontre des difficultés pour configurer des compléments de manière à ce qu'ils se mettent à jour automatiquement.
- L'option "Inclure le script de vérification de mise à jour" est de préférence cochée.
- L'extrait de code pour vérifier les mises à jour est inclus.
- Le "my.jmp.addin" est modifié pour chacune des tentatives de version de complément que j'essaie. "ID de complément"
- La création et l'installation d'un complément sont faciles avec cet utilitaire. Les étapes des pages 5 à 8 du guide de l'utilisateur du gestionnaire de compléments sont suivies. Il s'agit du complément de la version de base que j'utiliserai pour « mettre à niveau ».
- Complément installé dans PROD
- Un nouveau complément est créé en utilisant les mêmes méthodes qu'à l'étape 1, mais l'extrait de code est mis à jour pour le nouvel "ID de complément", la version dans Informations générales > Définition est également mise à jour.Cette version du script "mis à jour" possède sa propre arborescence de dossiers.
- Complément déployé dans PROD
- Exécuter le complément à partir de l'étape 1
- Aucune fenêtre ne s'affiche demandant de mettre à jour le complément. Vérifié en faisant un petit changement dans le texte d'une zone de texte
Je ne pense pas comprendre le lien de la façon dont les scripts des étapes 1 et 2 compareront leurs versions si tout se trouve dans leurs propres dossiers séparés. Toutes les métadonnées et autres fichiers du dossier source sont créés avec succès.Toute orientation serait appréciée!
Re : Gestionnaire de compléments@Justin_Chilton ou quelqu'un d'autre, des conseils sur mon post ci-dessus?
Modifier : je ne parviens pas à définir le même ID de complément pour une mise à jour. Il semble que le gestionnaire de compléments nécessite des ID de complément identiques pour que la fonction de date fonctionne. Chaque test de la mise à jour du complément a son propre dossier avant que je tente de lui attribuer un ID de complément.

Re : Gestionnaire de compléments@StarfruitBob
Je ne suis pas sûr de bien comprendre ce que vous faites. Mais les ID de complément doivent être complètement uniques et deux compléments ne peuvent pas avoir le même ID de complément, même s'il ne s'agit que de versions différentes.
Lorsque j'exécute des mises à jour d'add-in, j'ai le contrôle de version dans un dossier contenant le code mis à jour. Je copie ensuite ce code sur mon dossier "source" pour le gestionnaire de compléments. Je peux ensuite empaqueter le complément avec le même addinID et le même nom de complément (ou mettre à jour le nom pour refléter la version).
Peut-être que je ne comprends pas ce que vous essayez de faire pour une "mise à jour" ?
Re : Gestionnaire de compléments@nathan-clark
Je souhaite déployer des correctifs de bogues, des mises à jour et de nouvelles fonctionnalités sur mon complément.Je pense avoir trouvé un des problèmes. Quand je regarde le customMetadata.jsl, "l'état" est "DEV", pas "PROD" comme requis par updateCheck.jsl.Cela peut sembler idiot, mais je ne sais pas comment l'obtenir sur PROD sans mettre à jour manuellement le jsl, ce que j'espère éviter.Pour mon complément, j'ai construit, puis déployé (PROD) et enfin installé (PROD). Je ne sais pas ce que je peux faire de plus pour le changer avec le gestionnaire de compléments.
Après avoir lu la documentation d'aide du complément, il ne semble pas que la méthode que vous utilisez pour mettre à jour votre complément soit répertoriée.Lorsque vous parlez de contrôle de version, voulez-vous dire un dossier qui contient non seulement le code mis à jour, mais également le fichier customMetadata.jsl mis à jour et d'autres fichiers générés avec le gestionnaire de compléments ?
Encore plus curieusement, lorsque je regarde dans mon dossier PROD, dans mon dossier Source, le publishedAddins.jsl contient les addins que j'ai tenté de mettre à jour. Le dossier Archive que j'ai contient également des compléments archivés, mais lorsque je vais dans le menu des compléments de JMP et que je clique sur mon complément, aucun message ne s'affiche indiquant qu'une nouvelle version du complément est disponible. C'est bloqué sur la première version que j'ai publiée.Je comprends évidemment mal plusieurs choses à propos de tout ce processus.
Re : Gestionnaire de compléments@StarfruitBob
Le déploiement de PROD est aussi simple que le menu déroulant lorsque vous déployez le complément. Vous pouvez créer le complément, qui le place en tant que DEV .. puis vous pouvez déployer le complément en tant que TEST ou PROD qui met à jour le fichier de métadonnées personnalisées pour vous.
le déploiement PROD mettra également à jour le fichier publishedaddins... configuré dans le tableau lorsque vous configurez les emplacements des dossiers DEV, TEST et PROD.
Le script updatecheck doit utiliser la date de complément du fichier PROD chargé de métadonnées personnalisées (complément local) et le comparer au fichier publishedaddins qui aura la date de construction la plus récente du complément. Si la date de construction la plus récente du complément est plus récente que la date du complément installé, l'utilisateur doit être invité à effectuer la mise à jour.
Je sais que mon infrastructure a nécessité des travaux supplémentaires pour s'assurer que tous les points sont alignés (accès à l'emplacement des fichiers, etc.), mais je pense que le déploiement PROD peut résoudre la plupart des problèmes pour vous.
Re : Gestionnaire de complémentsJe pense que le déploiement sur PROD est l'un des problèmes, comme nous le soupçonnons tous les deux.J'ai juste essayé de construire une autre version de mon addin et après l'avoir construit, j'ai noté que le customMetadata.jsl avait en effet "state" = "DEV", j'ai ensuite quitté cette fenêtre.Lorsque j'ai sélectionné cette nouvelle version du complément dans la fenêtre de développement principale du gestionnaire de compléments, puis que je l'ai déployée sur PROD, customMetadata.jsl indiquait toujours que le complément était en DEV.
Pour tester cela davantage, j'ai modifié manuellement l'état de DEV à PROD pour la nouvelle version du complément, enregistré, puis cliqué sur mon complément dans le menu du complément de JMP.L'addin ne m'a pas invité à mettre à jour. Cela m'indique qu'il y a autre chose qui me manque.
J'ai vérifié mon code d'extension pour m'assurer que la section de vérification de mise à jour du code à ajouter était obsolète et utilisait un ancien ID d'extension. Je l'ai mis à jour, puis j'ai vérifié sur customMetadata.jsl pour voir si des modifications ont été apportées. state = DEV à nouveau, même si j'ai déployé sur PROD.D'accord..
Test de la nouvelle version : ID unique et texte mineur mis à jour, mais faciles à voir dans l'add-in. Assurez-vous que la section de vérification de la mise à jour du code a été insérée et mise à jour pour correspondre à l'ID de complément unique. Complément intégré. Déployé en PROD. Le fichier de métadonnées indique toujours déployé sur DEV….
Résumer:
- J'ai trouvé que certaines de mes versions d'addin n'avaient pas de code de vérification de mise à jour mis à jour -> mis à jour toutes les versions pour qu'elles correspondent à l'ID unique de chaque addin
- Trouvé customMetadata.jsl n'est pas mis à jour "state" = DEV --> PROD
- Reconstruit, redéployé et réinstallé (sur PROD) v1 de mon addin
- Reconstruit et redéployé (sur PROD) d'autres versions de mon addin
- Définissez manuellement tous les "états" customMetadata.jsl = PROD
- JMP ne reconnaît pas les mises à jour de ce complément
- Dossier PROD : Source, publishedAddins.jsl enregistre toutes les versions que j'ai déployées
- Dossier PROD : Archive, plusieurs sauvegardes d'addin en raison de tous les tests que j'ai effectués
Re : Gestionnaire de complémentsHmmm....
Cela vaut peut-être la peine de recommencer avec le gestionnaire de compléments et de mettre à jour de nouveaux dossiers sans vestiges de déploiement.
En règle générale, je clique sur le bouton Construire qui crée tout dans DEV ... puis je peux cliquer sur le bouton déployer et cliquer sur PROD et cela créera le complément dans mon dossier de production et le métadat dans le .jmpaddin dit PROD ainsi que le fichier de publication du complément est mis à jour avec la date de compilation de ce déploiement.
Re : Gestionnaire de complémentsVoici ce que j'ai fait @nathan-clark @Justin_Chilton
- J'ai désinscrit et supprimé tous les compléments du gestionnaire de compléments (sur lesquels je testais)
- Gestionnaire de compléments non enregistré pour le supprimer en tant que complément de JMP
- Suppression de tous mes fichiers DEV et PROD contenant les tests d'extension que j'ai effectués
- Retélécharger le gestionnaire de compléments et installé
- Création d'un nouveau complément
- Construit --> PROD déployé --> PROD installé
- Il faut avoir une 1ère version pour mettre à jour !
- Vérifié customMetadata.jsl de cette v1 --> "state" = DEV
Des conseils ?:visage_grimacant:
Re : Gestionnaire de compléments@StarfruitBob
Hmmm... Je suis à court d'idées. Je vais devoir le transmettre à @Justin_Chilton
Re : Gestionnaire de compléments@Justin_Chilton Comment le gestionnaire de compléments stocke-t-il les paramètres ?
Puis-je les exporter et les envoyer à un collègue ?
Est-il préférable d'installer une version mise à jour de Addin Manager - ou cela réinitialisera-t-il les paramètres ?
Re : Gestionnaire de compléments@Justin_Chilton Je suis fan du gestionnaire de compléments ! Je crée des compléments et des structures de menus avec depuis déjà trois ans. Récemment, j'ai rencontré des problèmes avec JMP 17+ - en bref : si je crée un nouveau complément vierge et un menu de niveau supérieur personnalisé dans le gestionnaire de compléments, puis un ou plusieurs sous-menus et cliquez sur Enregistrer, lors de l'enregistrement. tous les sous-menus disparaissent à l'exception de l'élément de menu de niveau supérieur. Cela fonctionnait parfaitement dans JMP 14, 15 et 16. Y a-t-il quelque chose que je fais de mal ou un problème de compatibilité avec JMP 17 ? Le journal ne montre aucune erreur.
Je suis sous AIM v3.1, Windows 10 Enterprise et JMP Pro 17.1.0
Re : Gestionnaire de complémentsMême problème ici
Gestionnaire de complémentsDescription
Gestionnaire de compléments vous permet de créer et de reconstruire facilement des fichiers de complément, de gérer les versions d'un complément au fil du temps, d'accéder directement aux fichiers source et de bénéficier de personnalisations supplémentaires pour votre complément. Maintenant avec la version 2.0 de Gestionnaire de compléments , vous pouvez contrôler l'intégralité du cycle de vie de développement de vos applications JSL maintenant que vous pouvez déployer vos compléments auprès de vos utilisateurs directement depuis Gestionnaire de compléments !
Créez rapidement des compléments
La caractéristique fondamentale de Gestionnaire de compléments est la possibilité de créer un fichier de complément JMP directement à partir des fichiers sources. Cette fonctionnalité était initialement incluse dans mon Générateur de compléments personnalisés complément et Gestionnaire de compléments a repris les bases de ce complément et l'a amélioré.

Déployer un complément aux utilisateurs
Avec la version 2.0 de Gestionnaire de compléments , vous pouvez désormais déployer (ou envoyer) des compléments à vos utilisateurs directement depuis Gestionnaire de compléments . Vous pouvez déployer vers un emplacement TEST pour que vos utilisateurs testent votre complément et vous pouvez également déployer vers un emplacement PROD.

Lors du déploiement sur PROD, un script JSL avec un tableau associatif est automatiquement mis à jour avec la dernière date/heure de publication. Ce tableau associatif peut être utilisé par un script « updateCheck.jsl » généré automatiquement qui peut comparer la date de construction du complément de l'utilisateur à la date de construction en fonction du tableau associatif. Si une version plus récente du complément est disponible, l'utilisateur verra la fenêtre suivante, dans laquelle il pourra choisir de mettre à jour vers la dernière version. Ce concept utilisant un tableau associatif pour vérifier les mises à jour a été adapté de @brady_brady La méthode d'utilisation d'une table avec des dates de publication. Cette méthode est décrite dans @Jeff_Perkinson le message Comment écrire des compléments JMP à mise à jour automatique .

Gérer les versions d'un complément
Gestionnaire de compléments a la capacité de conserver automatiquement un historique des versions d’un fichier de complément chaque fois qu’un nouveau est créé. Il vous permet d'installer, de restaurer ou de supprimer une version précédente d'un complément. Vous pouvez éventuellement inclure un commentaire pour chaque version afin de pouvoir suivre les modifications apportées à chaque version.

Effectuer des personnalisations supplémentaires des compléments
Gestionnaire de compléments vous permet d’apporter quelques personnalisations à votre complément qui nécessitaient auparavant des modifications manuelles du XML. Vous trouverez ci-dessous les personnalisations supplémentaires disponibles dans Gestionnaire de compléments .
- Version maximale de JMP
- Icônes JMP intégrées pour les éléments de menu
- Insérer avant la position pour spécifier une position pour un élément de menu
- Barre de menus personnalisée – créez votre propre menu ou utilisez un menu existant autre que « Compléments »
- Nouvelle dans Gestionnaire de compléments 2.0 : plusieurs menus principaux dans un seul complément

Accéder aux fichiers sources directement depuis JMP
Dans l'onglet Fichiers de Gestionnaire de compléments , vous pouvez ouvrir les fichiers de votre dossier source directement depuis JMP en double-cliquant sur le fichier souhaité dans le tableau.

Gestion automatique des métadonnées personnalisées
Avec Gestionnaire de compléments version 2.0, vous pouvez créer vos propres métadonnées personnalisées en plus des métadonnées automatiquement incluses et gérées par Gestionnaire de compléments .

Gestion des compléments précédemment installés
À partir de l'onglet Installé, vous pouvez activer, désactiver ou enregistrer les compléments installés ainsi que les compléments qui ne sont pas installés.

Configuration requise
Ce complément est pris en charge sur les systèmes d'exploitation Windows et Mac avec JMP 13 ou version ultérieure.
Série de blogs
Gestionnaire de compléments, partie 1 : définir et créer un complément JMP
Gestionnaire de compléments, partie 2 : Déploiement de compléments de mise à jour automatique auprès des utilisateurs
Gestionnaire de compléments, partie 3 : personnalisation avancée
Journal des modifications
Versions 1.1-1.3 (16 octobre 2017)
- Correction de quelques cas qui provoquaient une erreur du complément
- Ajout de nouvelles préférences pour contrôler si les menus et les barres d'outils sont affichés
Version 2.0 (22 novembre 2017)
- Ajout de la prise en charge du déploiement de compléments vers les emplacements TEST et PROD.
- Ajout de la prise en charge des métadonnées personnalisées via un tableau associatif qui peut être inclus dans vos scripts.
- Ajout de la possibilité d’avoir plusieurs menus principaux dans un seul complément.
- Ajout de la possibilité de copier et coller des éléments de menu dans l'arborescence des éléments de menu.
- Ajout de la prise en charge de la création d'un dossier source à partir d'un fichier 'jmpaddin' existant.
- Ajout de la possibilité de rechercher une nouvelle version, extraite directement de la communauté JMP.
- Ajout d'une préférence pour installer automatiquement les compléments après leur création.
- Suppression de la prise en charge de la création de plusieurs compléments à la fois, pour diverses raisons.
- Écrasé d’autres bugs divers.
Version 2.1 (26 février 2018)
- Ajout d'une préférence pour exclure les fichiers et dossiers invisibles (c'est-à-dire les fichiers/dossiers commençant par un point). Ceci est utile si vous utilisez un système de contrôle de version, comme Git.
- Le fichier customMetadata.jsl est désormais ignoré lors de la détermination si la dernière version est installée.
Version 2.2 (8 mars 2018)
- Correction d'un problème lors de l'ajout de plus de deux menus principaux de niveau supérieur.
- Ajout de nouvelles icônes à l'écran de sélection. Icônes supprimées disponibles uniquement sur un seul système d'exploitation.
Version 2.3 (6 avril 2018)
- Correction d'une erreur sur Mac provoquée lorsqu'un dossier source était renommé ou supprimé
- La fenêtre Préférences fonctionne désormais même si la police Consolas n'est pas installée sur votre ordinateur.
Version 2.4 (9 janvier 2020)
- Autoriser l'insertion d'éléments de menu avant ou après d'autres éléments, au lieu d'autoriser uniquement l'insertion après.
- Ajoutez 15 et 16 comme numéros de version min/max de JMP.
Version 2.5 (5 février 2020)
- Améliorez la lisibilité lors de l’utilisation du mode sombre de macOS et du mode contraste élevé de Windows dans JMP 15.
- Correction de l'alerte affichée lors de l'ouverture des préférences sur Mac.
Version 2.6 (4 juin 2020)
- Correction d'un bug avec l'analyse des compléments avec des menus personnalisés.
- Ajout d'informations de diagnostic pour l'analyse des erreurs afin de faciliter la résolution des problèmes futurs.
Version 2.7 (10 juin 2020)
- Ajouter une solution de contournement pour un bug temporaire dans JMP 16 EA
Version 2.8 (24 septembre 2020)
- Correction d'un problème lors de la décompression des compléments avec des sous-dossiers
- Ajout d'une option pour créer automatiquement un dossier lors de l'utilisation d'un modèle de complément (activé par défaut).
Version 2.9 (4 février 2021)
- Modification de certains formats de date en formats régionaux
- Correction de la fonctionnalité de vérification des mises à jour
Version 3.0 (18 janvier 2022)
- Les caractères spéciaux XML (tels que « & ») ne devraient plus interrompre les fichiers addin.jmpcust.
Version 3.1 (4 mars 2022)
- Correction d'un avertissement de format de date pour certains paramètres régionaux lors de l'archivage des compléments.
Version 3.2 (25 septembre 2023)
- Correction des menus personnalisés de niveau supérieur dans JMP 17+
Faites-moi savoir si vous rencontrez des problèmes !
Version actuelle = 3.2
2.9
Add-In Manager vous permet de créer et de reconstruire facilement des fichiers de complément, de gérer les versions d'un complément au fil du temps, d'accéder directement aux fichiers source, d'avoir des personnalisations supplémentaires pour votre complément et de déployer vos compléments sur vos utilisateurs.

UtilitairesRe : Gestionnaire de compléments@ajniskan @pauldeen , veuillez essayer la dernière version 3.2 et faites-moi savoir si cela résout ce problème.
Re : Gestionnaire de compléments@hogi , le fichier de préférences pour Add-in Manager se trouve à ces emplacements.
Sous Windows :
%APPDATA%\SAS\JMP Add-In Manager\AM.PFS
Sur Mac :
~/Library/Application Support/JMP Add-In Manager/AM.PFS
Re : Gestionnaire de complémentsMerci @Justin_Chilton pour les chemins de fichiers - et pour résoudre le problème avec la V3.2 
Est-il prévu de prendre en charge les barres d'outils dans une prochaine version ?
Re : Gestionnaire de compléments@Justin_Chilton merci pour la v3.2 - elle a résolu les problèmes que j'avais et fonctionne comme avant 
Re : Gestionnaire de complémentsMerci!
Re : Gestionnaire de complémentsBonjour @Justin_Chilton ,
Merci beaucoup pour votre complément qui sauve des vies !!!Par contre j'ai juste une question :
J'ai un complément que je déploie et maintiens sur un site client avec des dizaines d'utilisateurs. Ce client dispose de la suite Google, je dépose donc la nouvelle version à chaque fois sur un Google Drive, et les utilisateurs doivent récupérer cette nouvelle version à chaque fois pour mettre à jour. Nous sommes tous d’accord sur le fait que cela est très chronophage, non optimisé et source d’erreurs en cas d’oubli de l’utilisateur. Je vous avais vu le complément "Add-in Manager" et je voulais l'utiliser, mais je dois spécifier un dossier PROD auquel tous les utilisateurs doivent avoir accès. Il s'agit généralement d'un dossier partagé... Mais j'ai demandé au service informatique et il n'est pas possible de créer un dossier partagé pour tous ces utilisateurs. Le dossier PROD doit correspondre à l'adresse web du répertoire google drive où je stocke traditionnellement les versions. Est-il possible d'adapter le gestionnaire de compléments pour avoir une adresse web à la base d'un dossier partagé ?