JMP Addin Script-Zwischenspeicherung?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich arbeite an der Entwicklung einer Reihe von Skripten für ein JMP-Addin.
Zur Zeit haben wir 2 Paketversionen desselben Addins. Eine für DEV und eine für die Produktion.
Die meisten Benutzer hätten nur die PRO-Version installiert ...
Aber wir Entwickler und unsere Tester haben möglicherweise sowohl die PRO-Version als auch DEV-Addins installiert ...
Natürlich haben die in den Addins enthaltenen Skripten den gleichen Namen ... Die Variablen unterscheiden sich jedoch, wie AddinName und / oder DSN Name. und natürlich hätte die DEV-Version wahrscheinlich neueren Code als die PRO-Version, auch wenn die Skriptnamen unterschiedlich sind.
Was ich heute endlich bemerkt habe, war, dass JMP (sowohl 9 als auch 12) das Skript zwischenspeichert.
Es SEEMS, das Skript der zuletzt installierten ADDIN-Datei auszuführen ... also wenn ich das DEV Addin installiere, dann das PRO Addin ... Es scheint nicht, die DEV-Skripts jemals auszuführen. es scheint, dass die Skripte immer aus dem PRO Addin-Verzeichnis geladen werden, egal aus welchem MENÜ ich das Skript rufe ... Das Gegenteil passiert, wenn ich zuerst PRO installiere, dann DEV ... : S
1) Die Add-In-ID und die Namen sind unterschiedlich und eindeutig
2) Das hinzugefügte Verzeichnis ist anders ...... Auch wenn die Skriptnamen in den verschiedenen Verzeichnissen gleich sind, hat jedes Add-In eine andere INSTANZ des Skripts in seinem eigenen Verzeichnis ...
2a) dies wird noch deutlicher, wenn ich ein PRO-Skript über das PRO-Menü starte ... Schauen Sie sich die LOG-Datei an und sehen Sie, dass das DEV-Skript und nicht das Pro-Skript ausgeführt wurde. Es verwendet den DEV-Ordner für die Includes!
2b) Die Definition des jmpcust-Menüs verwendet $ ADDIN_HOME ("ADDIN-NAME") vs. $ ADDIN_HOME ("ADDIN-NAMEDev"), scheint jedoch immer noch das Skript aus der zuletzt installierten Add-In-Version (PRO vs. DEV) auszuführen.
Beispiel: Ich habe dieses Skript gerade über das PRO MENU-Element ausgeführt ... Trotzdem kann ich sehen, dass der DEV-Code läuft. und scheint den DEV NameSpace zu haben .. ??
strDefaultDir = Get Default Directory ();
print ("Einschließlich:" || strDefaultDir || "MFG360-Common.jsl");
Include (strDefaultDir || "MFG360-Common.jsl", nur Analyse);
Protokollausgabe ...
/ *:
Add-In erfolgreich geladen: MFG360
Add-In erfolgreich geladen: MFG360 _Dev
"Einschließlich: /C:/Users/klockk.AUTH/AppData/Local/SAS/JMP/Addins/MFG360 Dev /MFG360-Common.jsl "
Ich habe den DEV-Code nicht angerufen !! Ich habe den Menüpunkt aus dem MFG360-Menü ausgewählt ... nicht das MFG360_Dev-Menü ...
Wird JMP die Skriptnamen zwischenspeichern und den Angaben in der .jmpcust-Datei für jedes registrierte Add-In nicht ordnungsgemäß folgen?
Re: JMP Addin Script Caching?
Ich hatte dieses Problem sowohl mit JMP9 als auch mit JMP12
Die Namen der TOP-Level-Menüs sind unterschiedlich, aber die darunter liegende Struktur ist identisch.
Die Addin.def-Dateien geben unterschiedliche ID und Namen an
id = MFG360Dev
name = "MFG360_Dev"
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
autoLoad = 1
loadesStartup = 1
--vs--
id = MFG360
name = "MFG360"
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
autoLoad = 1
Die jmpcust-Datei hat auch ein anderes Menü der obersten Ebene angegeben… und verwendet außerdem die Variable $ ADDIN_HOME (), um auf den richtigen Pfad des Skripts zu verweisen.
Ich dachte, da der MENU-Name für DEV vs PRO den gleichen Namensstamm hat, könnte JMP vielleicht verwirrt werden, also habe ich sie geändert, um einen Unterstrich anstelle eines Leerzeichens zu haben, aber immer noch kein Glück….
< menu_and_toolbar_customizations="" ="" jm="""> http://www.jmp.com/ns/menu "version =" 3 ">
< insert_in_main_menu="">
< insert_after="">
< name=""> HILFE
< menu="">
< name=""> MFG360 DEV
< caption=""> MFG360 Dev
< menu="">
< name=""> FAB
< caption=""> Fab
< menu="">
< name=""> LOT HISTORY
< caption=""> Losverlauf
< befehl="">
< name=""> GESCHICHTE IM HAUS
< caption=""> Firmengeschichte
< action="" type=""path""> $ ADDIN_HOME ( MFG360Dev ) \ Lot_History.jsl
< icon="" type=""none"">
< befehl="">
< name=""> GESCHICHTE DER AUSSTATTUNGSAUSSTATTUNG
< caption=""> EQU-Verlauf auslagern
< action="" type=""path""> $ ADDIN_HOME ( MFG360Dev ) \ Outsource_Equipment_History.jsl
< icon="" type=""none"">
--vs.—
< menu_and_toolbar_customizations="" ="" jm="""> http://www.jmp.com/ns/menu "version =" 3 ">
< insert_in_main_menu="">
< insert_after="">
< name=""> HILFE
< menu="">
< name=""> MFG360
< caption=""> MFG360
< menu="">
< name=""> FAB
< caption=""> Fab
< menu="">
< name=""> LOT HISTORY
< caption=""> Losverlauf
< befehl="">
< name=""> GESCHICHTE IM HAUS
< caption=""> Firmengeschichte
< action="" type=""path""> $ ADDIN_HOME ( MFG360 ) \ Lot_History.jsl
< icon="" type=""none"">
< befehl="">
< name=""> GESCHICHTE DER AUSSTATTUNGSAUSSTATTUNG
< caption=""> EQU-Verlauf auslagern
< action="" type=""path""> $ ADDIN_HOME ( MFG360 ) \ Outsource_Equipment_History.jsl
< icon="" type=""none"">
Ich habe ziemlich viel damit gespielt, und wenn ich zu View-> ADD-Ins gehe und nur das eine oder das andere als Zeit aktiviert habe, wird der richtige Pfad und das richtige Skript verwendet, aber wenn ich sie beide aktiviere ... JMP scheint den $ ADDIN_HOME zu verwenden
Für den letzten, den ich aktiviert habe (oder über die Datei addinRegistry.xml geladen wird, wenn beide beim JMP-Start aktiviert sind ...)
Re: JMP Addin Script Caching?Hey, klockk,
Dieser scheint auch ein guter Kandidat für die Eröffnung eines technischen Support - Tracks für die Untersuchung zu sein (E - Mail an support@sas.com ).
Welche Version von JMP ist das?
JMP speichert zwar keine Skripts, aber ich frage mich nach den Bildunterschriften und IDs der Menüelemente, die Ihre Add-Ins den Menüs hinzufügen. Wenn Sie zwei verschiedenen Untermenüs, die dieselbe ID und dieselbe Beschriftung haben, Elemente hinzufügen, könnte JMP das Skript für das DEV-Add-In ausführen, obwohl Sie das Menüelement für das PROD-Add-In ausgewählt haben. Wir haben bei JMP 12 eine Änderung vorgenommen, um zu versuchen, diese Mehrdeutigkeit aufzulösen. Ich bin überrascht, dass Sie sie bei JMP 12 sehen, aber vielleicht ist Ihr Fall etwas anders. Wenn Sie die Möglichkeit haben, Ihre benutzerdefinierten Menüs auf einem Bildschirm festzuhalten, damit wir sehen können, wie Ihre Elemente organisiert sind, kann dies möglicherweise dazu beitragen, dass Sie eine Problemumgehung finden und auf zusätzliche Mängel in unserem Code eingehen, die auf diese Weise deutlich werden. Wenn die Bildschirmaufnahme nicht möglich ist, teilen Sie uns einfach die Hierarchie Ihrer Menüelemente mit den IDs und Bildunterschriften der Elemente mit.
Vielen Dank,
Eric
Re: JMP Addin Script Caching?Wenn Sie dies weiter testen, scheint es einfach, das Skript vom zuletzt geladenen Add-In aus zu laden und auszuführen.
Es scheint direkt mit der Reihenfolge zu korrelieren, in der die Addins geladen werden, was direkt mit der Bestellung von addinRegistry.xml für eingetragene Addins zusammenhängt.
Wenn das Logfile zeigt:
Add-In erfolgreich geladen: MFG360
Add-In erfolgreich geladen: MFG360Dev
Dann führt jedes Add-In den Code aus dem DEV-Add-In aus.
Wenn ich die Reihenfolge in der addinRegistry-Datei umklappe, führt JMP die Skripts von PRO ADDIN_HOME aus, obwohl das Addin / Menü verwendet wird.
Ich habe auch herausgefunden, dass ich den richtigen Satz von Skripten ERWERBEN kann, indem Sie zu View-> Add-Ins gehen und ein oder das Addin deaktivieren ... und die Dinge funktionieren in Ordnung ... aber ich kann nicht beide gleichzeitig aktiviert haben, ohne dass ein Problem vorliegt.