如何编写自我更新的 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”:
- 请注意,“文件”列中的文件名必须与上述脚本第 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 菜单栏中,选择 Add-Ins >> Hello World(或者,无论您输入什么作为菜单项文本),都会出现简单的“Hello World”窗口。
- 单击“确定”关闭窗口。
- 创建加载项的更新版本:
- 打开“Hello Script.jsl”。
- 更改第 10 行,使引号之间的日期为 10/01/2012。
- 更改第 22 行,将字符串“Hellooooooooo world”作为文本框参数。
- 保存并关闭文件。
- 完全像以前一样执行步骤 4a 到 4d,但有以下重要例外:
- 构建加载项时,在“常规信息”选项卡上,确保未选中“保存后安装”框。
- 将您刚刚构建的 .jmpaddin 文件放在软件仓库中,覆盖旧的 .jmpaddin 文件。
请注意,我们还没有发表加载项,因为我们尚未更改元数据文件中的发布日期。 要查看此内容,请从 JMP 菜单中选择 Add-Ins >> 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 );权衡(我想你可以这样称呼它?)是加载项中的版本号和文件元数据中的版本列(代替日期列)对于每个新版本都必须相同,但这并不大一笔交易(无论如何仍然必须更新日期)。 我还为文件元数据切换到 .csv,因为我有一个构建 JMP 插件的 Python 脚本,而 Python 无法编写 .jmp 文件。 我真的应该发一篇关于那个剧本的帖子......
回复:如何编写自我更新的 JMP 插件嗨,杰夫,
这对于用 group 或 Team 控制加载项非常有用。
我有一个小问题,当我按照你的指示进行更新时,我总是收到这条消息。
“更新版本仍然可用”
当我单击“确定”时,安装发生,但下一次再次出现该消息。
我相信这与不同的时区有关,我在英国。
我已将元文件“发布日期”中的时区更新为 d/m/y。
我已将脚本第 10 行的开头“格式”更新为 dd/mm/yyyy。
“更新功能”文件中是否需要更新任何内容?
任何帮助表示赞赏。
回复:如何编写自我更新的 JMP 插件<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨,这听起来很有用。 不幸的是,它对我不起作用(直到最后一点 f. 之前一切都很好)。
有没有可能是什么东西(根? 文件夹?)必须更改“File Metadata.jmp”中的?
编辑:
在我的案例中有一个命名问题。 我能够通过将以下名称设置为相同来解决此问题:
- 加载项名称
- 加载项 ID
- “File Metadata.jmp”中的文件
- jmpaddin 的文件名
我将所有这些命名为:“Foo.jmpaddin”
现在它就像一个魅力!