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並禁用其中一個或者一個插件來強制使用正確的腳本集... 事情工作正常...... 但是我不能同時啟用它們而沒有問題。