JMP Addin脚本缓存?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在为JMP Addin开发一些脚本....
这时,我们有2个相同插件的软件包版本.... 一个用于DEV,一个用于生产..
大多数用户只安装了PRO版本......
但是我们的开发人员和我们的测试人员可能同时安装了PRO版本和DEV Addins ......
显然,addins中包含的脚本具有相同的名称...... 但变量是不同的,如AddinName和/或DSN Name .... 显然DEV版本可能会有比PRO版本更新的代码,即使脚本名称不同....
我今天终于注意到的是JMP(9和12)似乎缓存了脚本?
它看起来正在运行最近安装的ADDIN文件的脚本...... 所以如果我安装DEV Addin,那么PRO插件...... 它似乎没有运行DEV脚本.. 似乎总是从PRO Addin目录加载脚本,不管我从哪个菜单调用脚本.... 当我先安装PRO然后安装DEV时,情况恰恰相反...... :S
1)Addin ID和Names是不同且唯一的
2)添加目录不同...... 因此,即使不同目录中的脚本名称相同,每个插件在其自己的目录中也有不同的脚本INSTANCE ...
2a)当我从PRO菜单启动PRO脚本时,这变得更加明显...... 并查看LOG文件并看到它运行DEV脚本而不是专业脚本,并且它使用包含的DEV文件夹!
2b)jmpcust菜单定义使用$ ADDIN_HOME(“ADDIN-NAME”)vs $ ADDIN_HOME(“ADDIN-NAMEDev”),但似乎仍然从最近安装的插件版本(PRO vs DEV)执行脚本
例如:我刚刚从PRO菜单项运行此脚本... 但我可以看到它正在运行DEV CODE .. 并且似乎有DEV NameSpace .. ??
strDefaultDir =获取默认目录();
print(“包括:”|| strDefaultDir ||“MFG360-Common.jsl”);
包括(strDefaultDir ||“MFG360-Common.jsl”,Parse Only);
记录输出...
/ *:
加载项已成功加载:MFG360
加载项已成功加载:MFG360 _Dev
“包括:/ C:/Users/klockk.AUTH/AppData/Local/SAS/JMP/Addins/MFG360 开发 /MFG360-Common.jsl”
我没有打电话给DEV CODE !!我从MFG360菜单中选择了菜单项... 不是MFG360_Dev菜单......
JMP是否缓存了脚本名称,而没有正确地遵循每个注册插件的.jmpcust文件中的内容?
Re:JMP Addin Script Caching?
我对JMP9和JMP12都有这个问题
TOP级菜单名称不同,但它们下面的结构是相同的......
Addin.def文件指定不同的ID和名称
ID = MFG360Dev
NAME = “MFG360_Dev”
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
AUTOLOAD = 1
loadsAtStartup = 1
--vs--
ID = MFG360
NAME = “MFG360”
supportJmpSE = 0
addinVersion = 1
installAfterSave = 0
minJMPVersion = 9
maxJMPVersion = 12
AUTOLOAD = 1
jmpcust文件还指定了不同的顶级菜单...并且还使用$ ADDIN_HOME()变量指向脚本的正确路径。
我认为既然MENU名称与DEV vs PRO的名称相同,可能JMP会变得混乱,所以我把它们改成了下划线而不是空格,但仍然没有运气......
http://www.jmp.com/ns/menu “version =”3“>
HELP
MFG360 DEV
MFG360 Dev
FAB
的Fab
LOT HISTORY
Lot History
IN-HOUSE HISTORY
内部历史
$ ADDIN_HOME( MFG360Dev ) \ Lot_History.jsl
外包设备历史
外包EQU历史
$ ADDIN_HOME( MFG360Dev ) \ Outsource_Equipment_History.jsl
--vs.-
http://www.jmp.com/ns/menu “version =”3“>
HELP
MFG360
MFG360
FAB
的Fab
LOT HISTORY
Lot History
IN-HOUSE HISTORY
内部历史
$ ADDIN_HOME( MFG360 )\ Lot_History.jsl
外包设备历史
外包EQU历史
$ ADDIN_HOME( MFG360 )\ Outsource_Equipment_History.jsl
我已经玩了很多,如果我进入View-> ADD-Ins并且只启用一个或另一个,则使用正确的路径和脚本,但如果我启用它们两个.. JMP似乎使用$ ADDIN_HOME
对于我启用的最后一个(或者如果在JMP Startup中启用了两个,则通过addinRegistry.xml文件加载...)
Re:JMP Addin Script Caching?嘿,klockk,
这个似乎也是打开调查技术支持轨道的好候选人(发送电子邮件给 support@sas.com )。
这是什么版本的JMP?
JMP不缓存脚本,但我想知道加载项添加到菜单的菜单项的标题和ID。 如果将项目添加到具有相同ID和标题的两个不同子菜单,即使您选择了PROD加载项的菜单项,JMP也可能正在执行DEV加载项的脚本。 我们确实在JMP 12做了一个改变,试图解决这个模糊性,所以我很惊讶你在JMP 12上看到它,但也许你的情况略有不同。 如果您有办法屏幕捕获自定义菜单,以便我们可以看到您的项目的组织方式,这可能有助于我们找到解决方法,并解决我们的代码中的任何其他缺点。 或者,如果无法进行屏幕截图,请告诉我们菜单项的层次结构以及项目的ID和标题。
谢谢,
埃里克
Re:JMP Addin Script Caching?进一步测试,它似乎只是从启动时加载的最后一个插件加载并执行脚本。
它似乎与加载的加载顺序直接相关,这直接与REGISTERED Addins的addinRegistry.xml顺序相关。
如果日志文件显示:
加载项已成功加载:MFG360
加载项已成功加载:MFG360Dev
然后addin将运行DEV Addin的代码....
如果我在addinRegistry文件中翻转顺序,那么JMP会执行PRO ADDIN_HOME中的脚本,尽管我使用的是addin / menu ...
我还发现我可以通过转到View-> Add-Ins并禁用其中一个或者一个插件来强制使用正确的脚本集... 事情工作正常...... 但是我不能同时启用它们而没有问题。