如何編寫自更新 JMP 插件設置“插件庫”可以輕鬆管理一組自我更新的 JMP 插件。 在此示例中,Depot 只是一個包含以下內容的文件夾:
- JMP 插件文件“com.jmp.brady.addin1.jmpaddin”。
- 元數據文件“File Metadata.jmp”。
在典型情況下,加載項庫將駐留在加載項用戶具有讀取訪問權限的服務器文件夾中。元數據文件是一個 JMP 表,用於存儲有關庫中每個插件的信息。 在此示例中,我們將使用它來檢查加載項最近發布的時間。
如果用戶運行該加載項時該加載項是最新的,則該加載項將無需大張旗鼓地運行。 但是,如果用戶嘗試運行該加載項的過時版本,他或她將收到安裝新版本的提示:
如果用戶單擊“取消”,則當前插件將運行。 如果他或她單擊“確定”,更新將自動安裝,覆蓋過時的版本。 在此示例中,用戶會收到安裝通知並提示重新運行插件:

自動更新 JMP 插件:分步示例。
- 打開“Hello Script.jsl”。
- 確保第 10 行引號之間的日期為 08/01/2012。
- 確保第 22 行將字符串“Hello world”作為文本框參數。
- 注:15號線呼叫檢查更新函數,它不包含在我們的主腳本中,但包含在“update_functions.jsl”中。 這就是原因包括第 13 行的聲明。 這很好,因為它使我們的主腳本更簡單,但是每當我們構建加載項時,我們都需要確保包含“update_functions.jsl”作為額外文件。
- 保存並關閉文件。

- 打開“文件元數據.jmp”:
- 請注意,“File”列中的文件名必須與上面腳本第 11 行中分配給“Addin_Name”的字符串相同。
- 確保發布日期為 08/01/2012,根據需要進行更改,然後保存並關閉。

- 打開“update_functions.jsl”:
- 在第 4 行,將 depot_path 變量設置為您將用於您的軟件倉庫的文件夾。
- 請注意,第 5 行的 meta_file 變量必須與元數據文件的名稱匹配。
- 保存並關閉該文件。

- 構建加載項:
- 從 JMP 菜單中,選擇文件 >> 新建 >> 新建插件
- 在“一般信息”選項卡上:
- 輸入加載項名稱,在本例中為“Hello World”。
- 輸入加載項 ID。 您在此處輸入的任何內容都必須與元數據文件中的文件列以及“Hello Script.jsl”中的 Addin_Name 字符串完全匹配。

- 在“菜單項”選項卡上:
- 單擊“添加”按鈕。
- 在“常規”面板的“菜單項名稱”文本框中,輸入您希望在加載項下拉菜單中顯示的名稱。
- 在“操作”面板中,選擇“在此文件中運行 JSL:”單選按鈕。
- 單擊“瀏覽”並添加“Hello Script.jsl”文件。

- 在“其他文件”選項卡上:
- 單擊“添加”。
- 瀏覽到“update_functions.jsl”文件並添加它。
- 單擊“保存”,然後將新的 .jmpaddin 文件保存到方便的位置。

- 設置倉庫:
- 將您剛剛創建的 .jmpaddin 文件以及文件“File Metadata.jmp”放入您指定為插件庫文件夾的文件夾中(“update_functions.jsl”文件的第 4 行)。
- 測試插件:
- 從 JMP 菜單欄中,選擇插件 >> Hello World(或者您作為菜單項文本輸入的任何內容),然後將出現簡單的“Hello World”窗口。
- 單擊“確定”關閉窗口。
- 創建加載項的更新版本:
- 打開“Hello Script.jsl”。
- 將第 10 行更改為在引號之間添加日期 10/01/2012。
- 將第 22 行更改為將字符串“Hellooooooooo world”作為文本框參數。
- 保存並關閉文件。
- 與之前完全相同地執行步驟 4a 到 4d,但有以下重要例外:
- 構建加載項時,在“常規信息”選項卡上,確保“保存後安裝”框未被選中。
- 將您剛剛構建的 .jmpaddin 文件放入庫中,覆蓋舊的 .jmpaddin 文件。
請注意,我們還沒有發表加載項,因為我們尚未更改元數據文件中的發布日期。 要查看此內容,請從 JMP 菜單中選擇插件 >> Hello World(或作為菜單項文本輸入的任何內容),然後將像以前一樣顯示“Hello World”窗口。
- 發布加載項:
- 打開“文件元數據.jmp”。 將發布日期更改為 10/01/2012。 保存並關閉文件。
- 測試自動更新:
- 從 JMP 菜單中,選擇插件 >> Hello World。 該加載項將確定有可用更新,並向您顯示更新窗口。
- 單擊“取消”拒絕更新並像以前一樣看到“Hello World”窗口。
- 選擇加載項 >> Hello World 再次運行該加載項。
- 這次,當出現更新窗口時,單擊“確定”接受更新。
- 單擊“確定”關閉確認窗口。
- 再次運行加載項。 新的加載項將運行,並顯示“Hellooooooooo World”作為窗口文本。
回复:如何編寫自我更新的 JMP 插件@ivan_j_moore我遇到了同樣的問題(國際公司),因此我改用加載項版本號而不是日期。 所以基本上:
// Get the installed JMP AddIn version
installedAddIn = Get Addin( "com.jmp.brady.addin1.jmpaddin" );
installedAddInVer = installedAddIn << version;
addinLocation = "http://gitlab.contoso.com/addin/updateLocation/addin1.jmpaddin";
depot_path = "http://gitlab.contoso.com/addin/updateLocation/";
meta_file = "File Metadata.csv";
Try(
dtm = Open( depot_path || meta_file, invisible );
r = ((dtm << selectwhere( :File == "addin1.jmpaddin" )) << get selected rows)[1];
mostrecent = Column( dtm, "Version" )[r];,
print("Cannot access update site.");
mostrecent = installedAddInVer;
Throw("AddIn cannot check for updates.");
);
If( mostrecent != installedAddInVer,
requestUpdate( mostrecent, installedAddInVer, addinLocation);
);
Close( dtm, nosave );權衡(我猜你可以這樣稱呼它?)是,AddIn 中的版本號和文件元數據中的版本列(代替日期列)對於每個新版本都必須相同,但這並沒有那麼大達成協議(無論如何仍然需要更新日期)。 我還切換到 .csv 文件元數據,因為我有一個構建 JMP 插件的 Python 腳本,而 Python 無法寫入 .jmp 文件。 我真的應該發表一篇關於該腳本的文章......
回复:如何編寫自我更新的 JMP 插件嗨傑夫,
這對於通過組或團隊控制加載項非常有效。
我有一個小問題,當我按照您的指示進行更新時,我總是收到此消息。
“更新版本仍然可用”
當我單擊“確定”時,安裝就會發生,但下次再次出現該消息。
我相信這與不同時區有關,我在英國。
我已將圖元文件“發布日期”中的時區更新為 d/m/y。
我已將腳本第 10 行的開頭“格式”更新為 dd/mm/yyyy。
“更新功能”文件中是否需要更新任何內容?
任何幫助表示讚賞。
回复:如何編寫自我更新的 JMP 插件<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,這聽起來非常有用。 不幸的是,它對我不起作用(直到最後一點 f. 一切都很好)。
有沒有可能有什麼東西(根? 文件夾?)中的“File Metadata.jmp”必須更改嗎?
編輯:
我的案例中存在命名問題。 我可以通過將以下名稱設置為相同來解決該問題:
- 加載項名稱
- 插件ID
- “文件元數據.jmp”中的文件
- jmpaddin 的文件名
我將所有這些命名為:“Foo.jmpaddin”
現在它就像一個魅力!