回复:加载项管理器@贾斯汀_奇尔顿JMP17 为我的插件显示空菜单结构,其中 JMP16 显示菜单项。 这三个插件都是一样的。 请参阅我之前 2021 年 9 月 14 日的消息。

回复:加载项管理器@贾斯汀_奇尔顿, @内森克拉克我终于回到了我的测试插件自动更新功能。 我想我确实让它运行正常,只是加载项管理器没有为测试设置写出元数据文件夹。
有机会启用此功能吗?否则每次都需要手动更新这些文件,这很容易出错。
亨宁
回复:加载项管理器你好@贾斯汀_奇尔顿
在发布问题后尝试各种事情时,我怀疑文件被内部行业安全系统损坏。
当我从外部收到文件并继续重新安装时,它已正常安装。

我将保留同一案例的问题和答案。
永远感谢你,贾斯汀
Dave_Ryu。
回复:加载项管理器你好@贾斯汀_奇尔顿
我收到了很多使用加载项管理器构建的帮助。
我一直使用它直到 v2.9,但重新安装时出现以下错误。
在 v2.9 和最新版本的 v3.1 中都会出现此错误。
当我运行安装文件时,立即出现错误并且无法继续。
你能告诉我如何对错误采取措施吗?

非常感谢。
Dave_Ryu。
回复:加载项管理器你好@贾斯汀_奇尔顿,我在部署到 TEST 文件夹时遇到了以下错误。 否则感谢加载项! 这应该是 JMP 中的标准功能 
错误信息:
{"argument should be character"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "你没有保存你的更新信息" || /*###*/currentAddinInfo["名称"] || /*###*/"加载项。" /*###*/)}
错误:参数应该是字符
1 次。
类型:错误
函数名称:连接
错误参数:currentAddinInfo["Name"]
正在执行的函数:“您尚未保存更新的信息” || /*###*/currentAddinInfo["名称"] || /*###*/“ 加入。” /*###*/
调用堆栈:
保存按钮检查
刷新AddinTableBox
部署选定
回复:加载项管理器@贾斯汀_奇尔顿感谢您的建议。 你是对的,我想要的可以通过 include() 来处理。感谢您提供关于 <
不知道为什么我的 zip 不起作用,但我是在 Mac 上做的,在我手动尝试后所有条目都消失了。现在我得到了包含工作,无论如何都不需要手动编辑。
回复:加载项管理器@steveylin ,只需压缩加载项内容并重命名为 xxx.jmpaddin 即可,您只需确保 jmpcust 和 def 文件位于 jmaddin zip 文件的根目录。
或者,我建议将您的路径添加为“运行 thi JSL”的 include(),而不是直接使用路径使用脚本。 这将避免手动编辑 jmpcust 文件的需要。 我不确定为什么路径对您不起作用,但这是我实际用于加载项的设置。

我喜欢在插件的 Includes 中使用 <
回复:加载项管理器我是一个试图让插件工作的新手。我让它引用一个目录,但它默认为“文本”,我必须手动更改为“路径”
<动作类型> “小路” >$ADDIN_HOME(com.cirrus.pejmpscriptsMac)\pe-jmp-scripts\Check_Duplicate_Measurements.jsl
我遇到的问题是我可以修改 .jmpcust 以使其在我的计算机上运行,但我无法导出它。有没有一种简单的方法来获取 addin.def/addin.jmpcust 并自己压缩它?我希望这很简单,我不必使用加载项管理器。
我尝试使用 zip 和重命名,但没有奏效。
问候,
史蒂夫
回复:加载项管理器你好@贾斯汀_奇尔顿,我最近在部署新的 Prod 版本时遇到了这个错误。
错误信息:
{"argument should be character"(1, 2, "Concat", Bad Argument(currentAddinInfo["Name"]), "你没有保存你的更新信息" || /*###*/currentAddinInfo["名称"] || /*###*/"加载项。" /*###*/)}
错误:参数应该是字符
1 次。
类型:错误
函数名称:连接
错误参数:currentAddinInfo["Name"]
正在执行的函数:“您尚未保存更新的信息” || /*###*/currentAddinInfo["名称"] || /*###*/“ 加入。” /*###*/
调用堆栈:
保存按钮检查
刷新AddinTableBox
部署选定
回复:加载项管理器嗨内森,
是的,我确实先构建了它,并且没有收到任何错误。 但无论如何我都会收到部署消息。
约翰
回复:加载项管理器@Gido_vanderStar ,
看起来您可能使用的语言环境与我不同,这导致了未知格式错误。 我刚刚更新了插件 (v3.1),它使归档过程中使用的日期格式尊重您所在地区的日期格式。
回复:加载项管理器@john_madden您是否先单击构建按钮? 这是保存图标旁边的按钮。 这将构建插件并将其放置在开发文件夹中。
然后你可以安装DEV .... 或者,您可以部署插件的 TEST 或 PROD 版本。 (您需要先部署 TEST 或 PROD 插件,然后才能安装 TEST 或 PROD 插件。
回复:加载项管理器嗨贾斯汀,
当我尝试安装我的加载项(AIM 构建得很好)时,我收到一个错误“DEV/TEST/PROD 加载项不存在”。 我可能做错了什么?
约翰
AIM 3.0、JMP Pro EA 17.0b6、OS X 12.2.1
回复:加载项管理器你好@贾斯汀_奇尔顿,
感谢这个插件。 只是想报告一个烦恼。 安装或部署加载项时,我在日志中收到大约 50 次以下消息:
Unknown format: m/d/y h:m
在 JMP 16.0.0、Windows10 中使用最新 (v3.0) 版本的插件。
回复:加载项管理器@vohwinkelh0我收获了贾斯汀的自动更新代码,我相信,进行一些更新以允许您正在谈论的内容会很容易。
根据您的集成方式,您可以使用本地代码进行这些更新。 就目前而言,代码有一个步骤,主要是查看安装的版本是否为 PROD,然后检查是否有更新的版本。 如果安装的版本是 PROD 或 TEST,我相信您可以执行此过程......并检查部署区域元数据以查看是否有更新的 PROD 版本。
在带宽开放之前,您可能会考虑满足您的需求:)
回复:加载项管理器@pauldeen ,感谢您的报告! 它应该在 v3.0 中修复。
回复:加载项管理器@vohwinkelh0 ,对于加载项管理器中的功能来说,这听起来是个好主意。 听起来您需要某种单独的 TEST(或 beta)版本控制? 不幸的是,我目前没有足够的带宽来实现类似的东西,但我确信可以通过添加一些自定义元数据字段并在代码中使用这些字段来了解它是否是 TEST 构建。
回复:加载项管理器@贾斯汀_奇尔顿在工具提示字段中输入 & 会导致写入 addin.jmpcust 时出现故障,从而导致其不再可解析。 (JMP 16.1 Windows 10)。
回复:加载项管理器@贾斯汀_奇尔顿你知道是否有办法在 TEST 上实现自动更新功能? 我经常偶然发现我将 TEST 分发给用户以测试功能,但是一旦 PROD 更新,他们就没有部署该更新,因为 TEST 插件不会自动检查是否有新的 PROD 版本?
回复:加载项管理器谢谢@pauldeen ! 不知道 addinLoad.jsl 功能是否可用(隐藏在指南中)。 该解决方案适用于我的问题!
回复:加载项管理器@Djtjhin您可以使用包含自定义函数的 addinLoad.jsl 将空插件部署到所有计算机
或者
您可以使用您的 IT 部门来安排一个 jmpStartAdmin.jsl 文件,其中包含您描述的自定义功能这里,不需要插件。
回复:加载项管理器嘿@贾斯汀_奇尔顿,我正在尝试使用加载项管理器来部署用户定义的自定义函数,该函数理想地在启动时运行。 您能否推荐使用加载项管理器执行此操作的最佳方法?
回复:加载项管理器@贾斯汀_奇尔顿JMP17EA2 再次显示空菜单结构,日志中没有错误。 感谢这个插件,它应该直接集成到 JMP 中!
回复:加载项管理器@贾斯汀_奇尔顿@MikeD_Anderson
非常感谢您的回复! 实际上,前几天我只是偶然发现了这样做的能力,但是您击败了我将其发布在此处。
@MikeD_Anderson - 关于快速 JMP 启动的信息真的很好知道,应用程序脚本肯定开始变得非常庞大,所以这很有帮助。
我希望使用插件管理器完成的部分工作是跳过每次我想测试某些东西时必须将 .jmpappsource 导出到 .jsl 或 .jmpapp 的步骤,所以我最终得到的是下面的代码. 我不太确定它是如何工作的,但是当使用 OpenFile() 时,.jmpappsource 不会启动应用程序构建器,并且可以直接运行应用程序。 正是我需要的!
app = JMPApp();
app << OpenFile("$ADDIN_HOME(com.example.addin)\MyApp.jmpappsource");
app << Run;回复:加载项管理器@mringqui & @贾斯汀_奇尔顿- 只是对贾斯汀提到的方法的一点色彩评论。 您需要先将 jmp app 源文件编译成 .jmpapp 文件。 当您在应用程序构建器中时,这可以在文件 > 导出下完成。 然后将 .jmpapp 文件包含在加载项包中并打开 .jmpapp 文件:
open("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpapp");
这就是 JMP 默认插件向导的样子。

请注意,与直接嵌入 JSL 相比,这具有一些很好的连锁效应。 最大的是,对于非常大的应用程序,它将阻止 JMP 在启动时变慢。 所有的代码都需要在启动时进行解析——所以如果你的脚本真的很大或者你有很多,它可能会减慢速度——这是我在使用 STK 时遇到的问题。 作为应用程序嵌入意味着 JMP 只需在启动时解析一行代码。 还有其他一些,但这是 IMO 中最重要的一个。
回复:加载项管理器@mringqui , 感谢您与我们联系。 我在想这需要对加载项管理器加载项进行一些更改,但是@MikeD_Anderson向我展示了如何使用加载项管理器已经工作的方式来做到这一点。
不要设置要运行的文件,而是使用运行 JMP 应用程序源文件的脚本。 您只需将其粘贴到“运行此 JSL”的文本框中。
Include("$ADDIN_HOME(com.example.me.myaddin)/MyApp.jmpappsource");</CODE></PRE></LINGO-BODY><LINGO-SUB id="lingo-sub-394777" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-394777" slang="en-US"><P>嗨,伟大的工作! 我希望创建一个使用 .jmpappsource 文件作为菜单项的“在此文件中运行 JSL”操作的加载项。 这是可以轻松添加的东西吗? 现在,被迫使用 .jsl 文件限制了我以方便的方式使用加载项管理器的能力。 谢谢!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386516" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-386516" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@贾斯汀_奇尔顿</A><BR />我使用 $ADDIN_HOME 和 Get Default Directory() 的组合,具体取决于我需要在哪里/如何包含东西。 对于我的许多包含,我确实有一组库,这些库对于我的许多工具都是通用的,并且我确实将它们完全视为一个单独的插件。 然后,我制作的任何工具都只包含 $ADDIN_HOME 中的文件,并且所有库函数都可供我或任何可能想要使用它们的人使用。<BR /><BR />我不确定为什么<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A>必须将额外的层添加到 zip 中。 从我的角度来看,将它留在他的第一个层次结构中的组织会使事情总体上更简单,但不了解该基础架构的所有细节,我可能会遗漏一些东西。<BR />通常,一旦设置了原始内容,我需要对 .jmpcust 文件进行的唯一更新是更新版本更新的显示名称(我在我的存储库中执行此操作,但可以在插件管理器中完成)。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386499" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-386499" slang="en-US"><P>感谢您的澄清<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A> . 在我看来,它可以对您的流程进行一些更改。</P>
<OL>
<LI>不要更改 $ADDIN_HOME 文件夹,而是使用相对路径和 Get Default Directory()。 这也使得开发插件更容易,因为任何对它的引用都是针对已安装版本的。</LI>
<LI>使用变量来确定 CommonFiles 的相对路径位置并在您的包含中使用它,因为位置在生产加载项和开发存储库之间有所不同。</LI>
</OL>
<P>或者,您可以放弃将 CommonFiles 复制到每个加载项中的想法。 您可以为 CommonFiles 创建一个单独的加载项条目(它没有命令项),并要求用户在加载项之外安装它。 这意味着用户只有一个 CommonFiles 副本(这可能是好事也可能是坏事,具体取决于您在更新 CommonFiles 后测试所有加载项的频率。 有了这个,您可以使用 $Addin_Home 路径变量包含文件,但您仍然需要弄清楚如何从开发中包含它们。 这可能类似于<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/6649" target="_blank">@内森克拉克</A>正在做,但我不确定。</P>
<P>另一种选择是,我可以实现一个您可以定义的非常灵活的后处理脚本,而不是我为您实现副本(有些限制)。 比如说,您定义了一个引用 ZipArchive 的函数,并且您可以按照您认为合适的方式操作它。 此解决方案可能需要您和我进行最少的更改。</P>
<P>很抱歉所有的漫无边际,但希望这些建议之一能让我们朝着正确的方向前进!</P></LINGO-BODY><LINGO-SUB id="lingo-sub-386453" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-386453" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/1855" target="_blank">@贾斯汀_奇尔顿</A>,是的,您所描述的事情与我所做的非常接近。 让我详细说明一下,如果我使用插件管理器会发生什么。 (而且我仍在探索和学习它是如何工作的,所以如果我错过了代表它可以做什么,请原谅我!)</P><P> </P><P>构建插件后,我将源文件夹设置为 Addin_1\Source,我在 Addin_1\Release 文件夹中有一个名为 Addin_1.jmaddin 的文件。</P><P>我将其重命名为 .zip 扩展名,打开并查看。 我发现它看起来像这样:</P><P> </P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Initial_Folder_Structure.png" style="width: 217px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32932i1AD28B843A933FC3/Addin_Initial_Folder_Structure.png" role="button" title="Addin_Initial_Folder_Structure.png" alt="Addin_Initial_Folder_Structure.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P> </P><P>(还有几个 XML 文件我用来管理一些事情,但为了简单起见,我们可以跳过这些文件)</P><P>然后,我通过在 .zip 中创建一个新文件夹并将所有 Source_1 等文件拖到该新子文件夹中来手动更改 zip。 我将 addin.jmpcust 和 add.def 保留在根级别,否则加载项将无法安装。 我还将 CustomMetaData.jsl 保留在根级别,因为我猜这就是它需要的地方。</P><P>然后我将我还需要的 CommonFiles 文件夹拖到 .zip 中。 我最终的 Zip 结构如下所示:</P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><span class="lia-inline-image-display-wrapper" image-alt="Addin_Final_Folder_Structure.png" style="width: 220px;"><img src="https://us.v-cdn.net/6038925/uploads/images/32933i3C14631B2CA97BE7/Addin_Final_Folder_Structure.png" role="button" title="Addin_Final_Folder_Structure.png" alt="Addin_Final_Folder_Structure.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P>然后我还有一件事要做:现在需要编辑 .jmpcust 文件中的 <ACTION type=""path""> 行。 而它说</ACTION></P><P>$ADDIN_HOME(com.xyz)\Source_1\Code_1.jsl</P><P>我需要将其更改为阅读</P><P>$ADDIN_HOME(com.xyz)\Addin_1\Source_1\Code_1.jsl</P><P>我可以在文本编辑器中使用搜索/替换来完成。</P><P>完成所有这些步骤后,我就可以部署和安装插件,一切正常。</P><P> </P><P>对于您的最后一条评论,因为这个插件是一套工具,每个插件在 Addin_1 中都有自己的“源”子文件夹,所以为了引用 CommonFiles,我在 Code_1.jsl 等中的 Include() 语句确实有一个额外的"..\" 上一级以正确找到包含文件。</P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-385991" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-385991" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A><BR />我对颠覆做了类似的事情,我使用插件管理器发布任何 Repo 活动。 提交所有代码后,我将导出到成为插件“源”的位置(本地或网络文件夹)。 就个人而言,我在我的存储库中管理我的 .jmpcust 文件和 .def 文件,因此它们也可以导出,但是您可以只导出代码并使用 Addin Manager 制作 .def 和 .jmpcust 文件(它将在源文件夹中创建文件,在我的情况下,从 repo 中导出新内容只会覆盖正在导出的文件)。<BR /><BR />然后我使用他的工具来处理所有的打包、归档和分发到我的生产文件夹(无论如何,这总是花费最多时间手动完成)。 为了让我自己更轻松,因为我也有许多插件在插件管理器之前被管理,我还手动编辑了 jmp 文件,其中存储了所有信息(插件、名称、源文件夹等),所以我准备好了所有插件当我启动插件而不是通过该界面手动添加它们时去)。</P><P> </P><P>除了插件本身之外,我还更新了一些功能,以允许我的用户在新版本投入生产时收到通知并自动更新插件。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-385979" slang="en-US">回复:加载项管理器</LINGO-SUB><LINGO-BODY id="lingo-body-385979" slang="en-US"><P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2173" target="_blank">@tsl</A> ,当您手动压缩时,加载项的文件结构是什么样的?</P>
<P>我想,因为您的代码包含到 CommonFiles 目录的相对路径,所以您的加载项看起来像这样?<SPAN style="font-family: inherit;">插件文件中不包含Release文件夹吗?</SPAN></P>
<P> </P>
<PRE>Addin_1.jmpaddin
|_Addin
|_Source<BR /> |_Code.jsl<BR /> |_Release<BR /> |_Something?<BR /> |_CommonFiles</PRE>
<P>在上述结构中,“Addin”文件夹的存在只是为了保持文件夹结构与您的相对路径相同。 你是这种情况吗?</P>
<P>我想我可以添加一个新的可选目录路径,它可以作为构建过程的一部分复制到加载项文件中。 但是,我们仍然需要解决目录问题。 为了解决这个问题,我的想法是添加一个小片段来设置 CommonFiles 目录的位置,并将其用于所有常见文件包括。 或者,您可以创建一个“IncludeCommonFile()”函数,尝试从生产位置包含并故障转移到开发位置</P>
<P> </P>
<PRE><CODE class=" language-jsl">commonFilesDir = Directory Exists("../CommonFiles/",
"../CommonFiles/", // production location
"../../CommonFiles/" // development location
);
//or
IncludeCommonFile = Function({file},
Try(Include("../CommonFiles/" || file), Include("../../CommonFiles/" || file));
);
这将为您提供以下结构,如果我要添加共享文件夹功能,我*认为*会起作用。 我能想到的一个小问题是,如果您在 Source 中有其他文件夹,那么 Include 函数将不起作用,或者您需要使用 directory 变量在您的包含中添加额外的“../”。
Addin_1.jmpaddin
|_Source
|_Code.jsl
|_CommonFiles
回复:加载项管理器你好@贾斯汀_奇尔顿,
我刚刚发现了您的加载项管理器并且很感兴趣。 多年来,我一直在手动管理加载项,包括手动编辑 .jmpcust 文件。 我看到了使用您的插件管理器让我的生活更轻松的机会。 但是,我想知道如何让它支持我想做的事情。
我将参考建议的文件夹结构的附图。 想法是有一个包含 JMP 代码的文件夹,我们在这里将其称为 RepositoryRoot。 此文件夹位于 GIT 实验室存储库中,并在两个或多个 JSL 开发人员之间共享和同步。
每个开发人员在存储库中都拥有一个插件。 我们称它们为 Addin_1 和 Addin_2。 这些加载项位于存储库中各自的子文件夹中。
在存储库中还有一个我们将称为 CommonFiles 的文件夹,其中包含两个插件都使用的一些标准 JSL 库文件。
这些标准库文件包含在各个加载项中,例如 Addin_1\Source 中的 JSL 文件可能有如下行
包括(“..\..\CommonFiles\LibraryFile1.jsl”);

所以问题是我们如何通过 Add-in Manager 来利用这个结构? 我遇到了两个可能的选项的问题:
1) 如果在加载项管理器中我让“RepositoryRoot”作为源文件夹,那么它会在 RepositoryRoot 中创建 Addin.def 和 Addin.jmpcust。 这不起作用,因为我们在给定的源文件夹中只能有一个 addin.def,并且我们希望与不同的开发人员拥有单独的加载项,但共享代码。
2) 如果我让“RespositoryRoot\Addin_1\Source”作为源文件夹,那么 addin.def 和 addin.jmpcust 会在 Addin_1 的子文件夹的 Source 文件夹中创建。 这很好,因为它包含在自己的文件夹中。 但是,我看不到任何将 CommonFiles 文件夹从目录树中的两个级别添加到加载项的方法。 该代码需要该公共文件夹,但我们希望将其保持在更高级别以进行代码共享和同步。
我知道,在发布插件之前,最终“CommonFiles”文件夹确实必须复制到每个最终的 .jmpaddin 文件中。
希望我们能找到一个插件管理器功能来为我们管理它。 我们的替代方法是手动创建 .zip 文件并按照我们需要的方式设置文件夹结构,然后在发布之前将扩展名更改为 .jmaddin。
如果您有想法或考虑让加载项管理器支持此功能,那就太好了。
非常感谢
汤姆
回复:加载项管理器感谢你的回复@贾斯汀_奇尔顿! 我最终为 jmp 实施了一个浅色主题,以完全避免颜色问题。 我会尝试你的建议,点击退出键来解决延迟时间。
回复:加载项管理器你好@alavy ,
我不确定响应时间慢是怎么回事。 我将不得不做一些进一步的调查,看看是我的插件有问题还是 JMP 有问题。 但是,我确实找到了一个不错的解决方法。 第一次单击文本编辑框时,按住退出键直到文本不再处于焦点。 现在,所有编辑框在您单击它们后都应该可以正常工作了。
至于配色方案,我不确定是什么原因造成的。 2.5 之后的任何版本的加载项都应该具有适合深色主题的颜色。 我认为重现该问题的唯一方法是在 JMP 打开时从浅色主题切换到深色主题。 我总是得到灰色主题的下面的视图。

回复:加载项管理器嘿@贾斯汀_奇尔顿,
我在 MacOS 上运行的 JMP 15.1 上使用 v2.9 插件。 每当我需要在插件的任何文本框中输入文本时,都会遇到非常慢的响应时间。 这太慢了,以至于使加载项无法使用。
第二个较小的问题是,所有配色方案都不适用于在暗模式下设置的 JMP。 文本框中的文本颜色太浅,无法根据背景颜色阅读。

回复:加载项管理器@贾斯汀_奇尔顿我相信我确实具有写入权限,因为我可以看到旧插件已正确存档并且新插件已更新,但我仍然看到错误。 我不确定具体是哪一步失败了。 关于已安装的网络驱动器,不幸的是,我可能对此不太了解。 我不确定这个状态,但也许我可以询问周围的同事以了解更多信息。
回复:加载项管理器@Djtjhin ,听起来很可能与它是共享点位置有关。 您能否通过在文件资源管理器中创建文件来确认您对该位置具有写入权限? 即使您有权限,JMP 也可能没有作为应用程序的权限。 您是使用常规网络路径还是通过已安装的网络驱动器保存? 将 sharepoint 服务器挂载为网络驱动器可以解决权限问题,因为 JMP 可以只保存到挂载的驱动器。 对于常规网络路径,可能需要凭据,这是 JMP 不支持的。
回复:加载项管理器感谢您澄清贾斯汀!
跟进问题,我在尝试部署到生产环境时收到以下错误消息。 目标文件夹实际上是一个共享点。 我不确定这是否是原因,或者是否有解决方法。
错误信息:
{“文件未在写入模式下打开。 "(1, {1}, 2, "保存文本文件", 保存文本文件 /*###*/(filepath, str))}
错误:文件未在写入模式下打开。
1 次。
数据表索引:1
类型:错误
函数名称:保存文本文件
正在执行的函数:保存文本文件 /*###*/(filepath, str)
调用堆栈:
部署选定
回复:加载项管理器@Djtjhin ,
我建议将语句放在每个命令中,以便在使用插件时进行检查,而不是每次用户启动 JMP 时进行检查。 此外,在启动时更新加载项存在问题,因此当用户单击加载项命令时这样做是一种更安全的方法。
回复:加载项管理器@贾斯汀_奇尔顿我可以澄清一下您之前提供给 Sebastien 的回复吗? 那么,如果我将自动更新语句(如下)放在“启动脚本”(快照)中,它会起作用吗? 或者我们应该只在每个命令脚本下包含自动更新语句?
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();

谢谢
丹尼尔
回复:加载项管理器已确认,再次生效,谢谢!
回复:加载项管理器谢谢@pauldeen .我认为有几个不同的因素相互冲突。 一方面,该错误应该在最终的 JMP 16.0 版本中得到解决,但在 EA8 中存在。 此外,这个错误可能是因为您的语言环境不支持我使用的日期格式。 为了解决这个问题,并且对区域设置更加友好,我更新了一些我格式化日期的地方,以使用区域设置日期时间而不是特定格式。 这应该可以修复错误并以更友好的格式放置日期。
回复:加载项管理器感谢对文件夹的 2.8 修复!
我有一个新的给你:
打开加载项管理器,选择一个加载项:

运行 JMP 16EA8。
在 Windows 10 下的 JMP 15.2.0 上同样的事情没问题
回复:加载项管理器@贾斯汀_奇尔顿谢谢! 我会试试的。
回复:加载项管理器@pauldeen ,我刚刚上传了一个新版本 (v2.8),它修复了您看到的子文件夹问题。 我还添加了一个复选框选项来自动为您创建一个文件夹,就像您最初期望的那样。
回复:加载项管理器@Sburel , 您可以将该代码添加到您想要检查更新的任何位置,例如在菜单项命令的开头。 这可以使当用户单击命令时,它会在启动加载项之前检查新版本。
如果我没记错的话,在 addinLoad.jsl 文件中使用此代码存在问题,这将导致它在 JMP 启动时进行检查,但是在加载项时重新安装加载项存在问题仍在加载中。 这个问题可能仍然是问题,也可能不是问题。
-贾斯汀
回复:加载项管理器@贾斯汀_奇尔顿
真的很酷的插件。 工作得很好。但是,我一直在努力使用自动更新功能。 特别是,我对添加以下代码片段的适当文件/位置感到困惑
Include( "$ADDIN_HOME(com.jmp.myaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
最好的
塞巴斯蒂安
回复:加载项管理器@贾斯汀_奇尔顿啊,是的,创建一个空文件夹会让你通过这个屏幕。 文件夹的名称似乎并不重要,只有它是空的这一事实。
在测试中,我发现了另一个错误:
如果我使用您的加载项管理器 v2.7.jmpaddin 并创建空文件夹,然后像这样加载它,我会通过添加屏幕但出现一个大错误:其他包含子文件夹的加载项也会发生同样的情况.

回复:加载项管理器@pauldeen源文件夹也是 jmpaddin 文件将被解压缩的地方(我可能应该让它自动创建文件夹,但我想我没有)。 我建议在“Desktop”文件夹中创建一个名为“ASM Training Material”的文件夹并将其设置为源文件夹。 源文件夹中不能有任何内容,因为它最终都会压缩在加载项中。
回复:加载项管理器@贾斯汀_奇尔顿从现有的 .jmpaddin 文件添加加载项时,我们在此屏幕上有一个错误:

您不能将源文件夹留空,如果您将任何内容放在那里,您会收到警告,从 jmpaddin 文件开始时它需要为空。
回复:加载项管理器奇迹般有效。 谢谢海宁
回复:加载项管理器你好@vohwinkelh0 ,
感谢您报告此事。 几天前我看到了这个错误,你的评论提醒了我,所以我终于能够用其中一个文件/目录函数将问题追溯到一个错误。
我已更新此页面上的加载项以暂时解决此问题,但我也在 JMP 中指出了该问题,以便我们可以在 JMP 16 发布之前解决它。
谢谢,
贾斯汀
回复:加载项管理器贾斯汀,
作为 JMP16EA 程序的一部分,您的加载项出现错误。 你想让我在那里提交错误报告还是我应该在这里发布?
亨宁
回复:加载项管理器非常感谢分享……下周试试。
回复:加载项管理器@guillaumebugnon所以我在for循环中使用这个函数来加密脚本。
encryptScript = Function({filepath},
{defaultLocal},
errortxt = "";
winCount = N Items (Window ());
scriptWin = Open (filePath);
scriptWin << Bring Window to Front;
Wait (1);
Main Menu ("Encrypt Script");
windowList = Window ();
encryptedWin = windowList[nitems(windowList)]; // get reference to encrypted script window (i.e. the last window)
//TODO: Implement without Try
Try (
encryptedScript = encryptedWin[Script Box(1)] << Get Text;
save text file(filePath, encryptedScript);
ConsoleMsg("File Encrypted: "||filepath); // hoping this goes to stdout
,
errortxt ||= char(exception_msg) || "\!r\!n";
);
Try (scriptWin << Close WIndow());
Try (encryptedWin << Close WIndow());
Return (errortxt)
);
然后我还有一个自动脚本通过并输入密码并按回车键。
这绝对不是一个完美的解决方案,您的愿望清单项目会更好。
回复:加载项管理器@pauldeen ,
感谢您报告自定义菜单加载项的问题。 我刚刚上传了一个可以解决这个问题的新版本。
-贾斯汀
回复:加载项管理器@贾斯汀_奇尔顿感谢您的回答。
拥有一个可以加密其他 jsl 文件(或其他方式)的 jsl capabale 函数可能会很有用。
我看了@vince_faller今天上午(法国时间)的演讲。 好东西。
我们也有一些 Devops 流程,但需要更多的自动化。
纪尧姆
回复:加载项管理器
@guillaumebugnon ,
@vince_faller可能有一些关于加密脚本的提示。 但是,我需要向加载项管理器添加一项功能,以便能够在压缩过程之前修改要添加的文件。
我认为@vince_faller昨天还做了一个演示/网络广播,可能对你有用: https://www.brighttalk.com/webcast/18305/412912
- 贾斯汀
回复:加载项管理器大家好,
在将脚本压缩到 jmpaddin 文件之前,是否有人有加密脚本的提示或经验?
谢谢
问候,
纪尧姆
回复:加载项管理器
在 JMP15 Windows 10 上运行,插件管理器无法再从现有插件解析菜单结构。
重现:创建一个新插件并使用自定义重命名顶级菜单。 创建命令并保存插件定义。
关闭插件管理器,重新打开并尝试查看刚刚创建的插件的菜单项选项卡(确保在查看任何其他插件菜单结构之前先查看此选项卡)。
要使其正常工作,请创建第二个加载项,您不要更改顶部菜单项,而是将其保留为默认的“加载项”。 保存此插件。 关闭加载项管理器,再次打开,先查看默认顶层名称的菜单结构,然后再查看自定义的菜单结构。 这一切都再次起作用。
回复:加载项管理器#2 从 JMP15/OSX15 开始,但我还没有尝试过 2.4,我会回复你。
回复:加载项管理器谢谢,贾斯汀!!
回复:加载项管理器你好@john_madden ,
感谢您与我们联系并为延误道歉。
#1 应该在我刚刚上传到这里的 v2.4 中解决。
对于 #2,我无法在 Windows 上复制此问题,但我将在 Mac 上进一步调查。 您是否碰巧知道此问题是从特定的 JMP 版本号(即 JMP 14/15)还是从 macOS 版本(10.14/15)开始的,还是一直发生在您身上?
谢谢,
贾斯汀
回复:加载项管理器嗨贾斯汀,
我在 JMP 15/Mac OS 10.15 下的加载项管理器有几个问题。
(1)【trivial】最大/最小JMP版本选项需要包含15个
(2) [不那么琐碎] 在管理器内的多个窗格中的文本框中输入文本似乎(部分)损坏了。 我可以通过粘贴输入文本(例如加载项名称、版本等),但不能通过键入。
谢谢。
约翰·马登
回复:加载项管理器您好,在手动管理更改多年后,我开始使用加载项管理器。 但是,我最近遇到了菜单项不可见的问题,我最近更新到 JMP 14.3.0,不确定这是否相关。 我以前对此没有任何问题。
如您所见,标记的构建或部署中没有错误,因此我对正在发生的事情感到茫然。
感谢任何帮助或建议,因为我真的不想从头开始重建它。
问候,
德里克。

回复:加载项管理器嗨亚当,
对延迟回复表示歉意。 根据您在删除尝试时看到的错误消息,我认为 updateCheck 脚本能够找到 customMetadata 文件的假设是正确的。 我知道你在哪里有'
aa = 包括( “$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl” ) ;'脚本的一部分。 但是,您实际上并不需要在其中包含该文件。 相反,您想更改 updateCheck.jsl 脚本中的包含。 它应该如下所示(在第 11 行附近)。
customMetadata_aa = Include( "<SPAN>$ADDIN_HOME(com.jmpTest.myjmpaddin)\</SPAN>customMetadata.jsl" );
如果您有任何其他问题,请告诉我。
问候,
贾斯汀
回复:加载项管理器你好贾斯汀,
由于这是我的第一个加载项,而且我在 JMP 体验方面还是个婴儿(大约 11 个月的使用时间),我现在可能会在激活更新检查功能时开始问一些简单的问题。我创建了一个简单的测试插件,只关注更新功能,这样我就可以在将它应用到我更健壮的程序之前理解这个功能。
剧本:
aa = Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\customMetadata.jsl" );
Include( "$ADDIN_HOME(com.jmpTest.myjmpaddin)\updateCheck.jsl" );
com.jmp.juchil.addinmanager:checkForUpdate();
New Window ("Test 3",
Panel Box ("Test 3",
Text Box("Test 3")
)
);
回答您的问题:
- 我是否设置了“创建元数据文件”首选项?
- 我确实为“创建元数据文件”选中了复选框,但我的脚本中没有包含包含语句的自定义元数据代码。如上所示,我已将这行代码添加到更新检查代码之前的行中,但它并没有解决问题。
- 我的插件的目录结构是什么?
- 在 Add-In Manager 窗口的中间部分,在 Files 选项卡下,addin.def、addin.jmpcust、customMetadata.jsl 和 updateCheck.jsl 都存在于同一个文件夹中。该文件夹与插件文件本身 (.jmaddin) 位于同一父文件夹中。
- 此文件夹存在于我的 C 盘上,而不是服务器上。我应该也将这些文件保存到服务器吗?
- 在底部的 Prod 选项卡中,我将所有三个选项都保存到服务器位置。他们每个人都有自己的文件夹,并且所有三个文件夹都存在于同一个父文件夹中。
- ARCHIVE - 仅包含我部署时加载项的先前迭代。
- META – 仅包含文件 publishedAddins.jsl
- PROD – 仅包含加载项安装程序文件 .jmaddin
- 注释掉“Try()”时收到什么错误消息
- 我收到错误消息“文件错误:路径无效:\customMetadata.jsl”
- 我尝试将上述位置路径从 $ADDIN_HOME... 语言更改为我的 C 驱动器上的确切位置,因为它在文件选项卡(中间部分)中被调用。它没有帮助,我收到了同样的错误信息。
谢谢您的帮助!
-亚当
回复:加载项管理器你好@Adam_R ,
感谢您在细节方面所做的所有工作! 几个问题和要尝试的事情:
- 您是否在“自定义元数据”首选项组下设置了“创建元数据文件”首选项? 此文件是更新脚本通过所必需的。
- 您的插件的目录结构是什么样的? 脚本是否在较低级别的文件夹中调用“com.jmp.juchil.addinmanager:checkForUpdate”? 如果是这样,updateCheck.jsl 文件期望它位于从中调用该文件夹的同一文件夹中,从而使该函数不起作用。 解决方法是在插件的根级别添加另一个 JSL 文件(与 customMetadata.jsl 和 updateCheck.jsl 相同),该文件调用 updateCheck 函数并将该文件包含在较低级别的 JSL 脚本中。 另一种选择是编辑 updateCheck.jsl 脚本以使用 '$addin_home(com.jmp.myaddin)/customMetadata.jsl' 而不仅仅是相对文件名。 如果这是问题所在,我可以更新插件以使其更加灵活,而不那么依赖于调用函数的默认目录。
- 实现了 updateCheck.jsl 脚本,因此它使用 Try() 静默失败,以免干扰加载项的工作流程。 所以,如果前两个建议都没有解决它,您能否注释掉 updateCheck.jsl 文件中的 Try() 并让我知道您在尝试检查更新时收到什么错误消息?
如果您有任何问题,请告诉我。
问候,
贾斯汀
回复:加载项管理器你好贾斯汀,
加载项管理器 v2.3 对我来说在各个方面都运行良好,但其中之一是,我无法让 updateCheck 正确推送更新。一些事实:
- 我在更新检查之外的代码运行正确。
- 我的 PROD 文件夹“元数据”和“部署”都位于同一父文件夹下的服务器位置,并且我已验证用户可以访问它们。
- 在首选项部分中,我选择了“包含更新检查脚本”,并将本部分中提供的包含语句复制到我的代码中。我已从 (com.jmp.myaddin) 编辑此语句的加载项 ID 部分以匹配我的加载项。我没有在此语句中编辑任何其他内容,也没有在 updateCheck.jsl 脚本中编辑任何内容。
- 对加载项进行更改并部署到 PROD 时,我已验证元数据服务器文件中的 publishedAddins.jsl 文件中的“pubDate”已随每次部署而更改
- 我让用户下载了位于 PROD 文件夹中的文件的现有版本,关闭 JMP,重新打开 JMP,并成功运行加载项。
- 我已将更新的迭代部署到 PROD,验证 pubDate 已更改,并请求之前的用户重新打开 JMP 并运行现有的加载项。永远不会提示用户更新加载项。
- 我让同一个用户进入 PROD 文件夹并重新安装加载项,它已成功更新加载项。
回复:加载项管理器嗨奥布里,
updateCheck.jsl 脚本中的 Include 语句使用 customMetadata.jsl 文件的相对路径。 只要这两个文件都在同一个文件夹中,它应该可以正常工作。 您的加载项的文件夹结构是什么样的?
如果您需要在此公开帖子上发送您不想要的任何内容,请随时给我发送私信。
谢谢,
贾斯汀
回复:加载项管理器贾斯汀,
我遇到了自动更新功能的问题。我已将问题追溯到 updateCheck.jsl 脚本。
以下行失败,然后 try 语句退出。
customMetadata_aa = Include("customMetadata.jsl" );
如果我将以下内容添加到文件路径中,则没有问题,并且看起来事情像宣传的那样工作。
$ADDIN_HOME(my_addin_here)
我应该为每个插件都这样做还是应该是自动的?
谢谢,
奥布里
回复:加载项管理器贾斯汀,
2.3 版在我的 Mac 上就像一个魅力!谢谢!!!
约翰
回复:加载项管理器@贾斯汀_奇尔顿谢谢! 我会试试看。
回复:加载项管理器@john_madden ,
感谢您报告此事! 看起来您使用的是 Mac,并且您必须重命名或删除了您的源文件夹之一。 我现在添加了一个检查(v2.3)所以它不应该再失败了。
回复:加载项管理器@内森克拉克,
如果您仍有 1.3 版的加载项,您可以更改该版本的 ID 和菜单项名称,并将其与新版本一起使用。 版本 1 允许您使用复选框一次构建多个,并且应该能够与版本 2 使用的数据表挂钩。 v2.0 中有很多架构更改,所以不幸的是我不得不删除复选框。 我把它放在我的清单上,以便将来添加。
回复:加载项管理器嗨贾斯汀,
在 JMP 14.0.1 中,我不断收到此错误:
错误消息:{"argument should be list"(1, 2, "Concat Items", Concat Items /*###*/(errorList, " "))} 错误:参数应该是 list 1 次。 类型:错误函数名称:Concat Items 正在执行的函数:Concat Items /*###*/(errorList, " ") 调用堆栈:getLastModifiedDateOfNewestFile getStatusIcon refreshAddinTableBox initialize
有任何想法吗? 这是经理 2.2。
约翰
回复:加载项管理器@贾斯汀_奇尔顿
再次感谢这个插件。 我终于跟上了新版本的速度,并利用了你对我手动操作的一些改进:)我的一个问题是,我不确定这是否可能,是能够一次构建多个插件。 我知道信息和目录的底部面板是特定于插件的,但如果选择了多个插件,这些面板可能会消失。 然后所有选择的都可以是 DEVd/Deployed/etc。
我现在管理 40 多个插件,而且我经常批量更新,所以能够一次完成一堆所有插件会很棒!
回复:加载项管理器这次真是万分感谢! 现在创建和更新插件非常容易,以至于我开发和改进自己的插件比使用这个工具之前的黑暗时代更频繁。
回复:加载项管理器我想变得如此优秀和慈善,并感谢 JMP 开发人员提供了我喜欢教授的软件程序的第 13 版。 我从 5.0 版开始就拥有了它,它有很好的纸质手册,老实说,自从那个版本以来,没有任何东西对我有任何价值。 但是像我一样喜欢 5.0 版本,我每年都开心且心甘情愿地升级。 然后ROC-Curve & 部分曲线下面积分析出现了在 JMP12 中很漂亮的脚本。 我已经设置了一个教学课程来向我的学生展示 ROC 曲线……我升级到 v13……现在它不显示曲线了。嘘。
回复:加载项管理器你好@tejvishnu ,
是的,安装此插件需要 JMP 13。 不幸的是,我无法使这个插件与 JMP 12 兼容。 我已更新帖子以包含此信息。
谢谢,
贾斯汀
回复:加载项管理器我的插件似乎没有安装计算机。 这似乎是一些最近上传的加载项的问题。 此插件是否需要 JMP-13?
我的电脑上有 JMP 12.2。
回复:加载项管理器@贾斯汀_奇尔顿: 很棒的工具,非常感谢!
- 命令的“insert_after”。
在 .jmpcust 文件中有一个“entry before”的占位符(在下面的示例中:Graph Builder),可以手动输入以将新命令放置在正确的位置。
GUI中是否有隐藏功能可以将命令放置在特定位置 - 就像菜单一样?

- 我也可以使用该工具来开发插件吗工具栏?
回复:加载项管理器@vohwinkelh0我不确定我明白你想做什么。 在插件管理器中,我将在构建插件后部署 TEST,该插件在 .jmpaddin 中创建元数据文件
根据您如何使用插件管理器文件中的功能,如果使用的版本是 PROD,它可能只会检查更新。 您是否也希望对测试版本进行自动更新?
我想知道问题是否是“publishedaddins”文件只在 PROD 版本上更新,而不是在 TEST 版本上更新?
回复:加载项管理器@hogi如果您单击“菜单项”选项卡,您应该能够单击“菜单项树”旁边的热点并添加一个“顶级菜单命令”,这应该允许您将插件放入现有的顶级菜单或创建您自己的。 此外,您可以手动更新 .jmpcust 文件以创建自定义菜单函数。
回复:加载项管理器@nathan-clark你能具体说明我的两个问题中的哪一个是指这个答案吗?
回复:加载项管理器@hogi哦,是的,抱歉……主要是菜单问题。 我第一次阅读时,我认为它们很相似,但我发现工具栏有点不同。
由于您可以编辑工具栏,我相信会有一种方法可以自动创建自定义工具栏(如果我没记错的话,工具栏自定义项仅存在于某个文件中)。 根据您的基础架构,我可以将其视为一个独立的插件,或者可能是使用 addinload.jsl 和 addinunload.jsl 文件集成到其他插件中的东西。
回复:加载项管理器@hogi好吧,我知道我们在哪里缺少彼此,至少是部分缺少。
工具栏和菜单是不同的东西。 菜单是用于导航和单击的文本选项,并且始终从“文件”“编辑”...等开始。工具栏是您可以添加/删除的快捷图像栏。
我不能具体说你所看到的。 尽管。 我在编辑 .jmpcust 文件时从未遇到过任何问题,除非我犯了一个错误。 我没有使用 Addin Manager 对 .jmpcust 文件进行过多编辑,因此我无法说明在您的场景中应该发生什么。
绝大多数 .jmpcust 编辑是我在文本编辑器中手动完成的,如果该文件中有错误,JMP 将无法正确显示菜单项。
@贾斯汀奇尔顿你见过像上面这样的东西吗?
回复:加载项管理器@nathan-clark
抱歉,我也不明白你上次的帖子。
我可以添加一个工具栏到.jmpcust 文件,在 JMP 中或通过编辑文件手动进行。
但是一旦我编辑了相应的加载项加载项管理器(例如,向加载项菜单添加另一个命令),加载项管理器将从工具栏中删除工具栏和工具栏中的所有条目.jmpcust 文件。
这是一个非常出乎意料的行为,对吧?
另外:我不明白为什么我必须手动添加工具栏设置 - 为什么不通过加载项管理器?
关于另一个问题:
你能指出我必须做什么吗加载项管理器放置一个加载项,例如正好在Graph 菜单中GraphBuilder 的下方?
(对应于手册中的代码片段https://community.jmp.com/t5/JMP-Add-Ins/Add-In-Manager/tac-p/567196/highlight/true#M1646 )
回复:加载项管理器@nathan-clark是的,这正是文件。 每次将新版本推送到测试时,我都需要手动更新 publishedAddins.jsl 文件。 自动化将是巨大的帮助
回复:加载项管理器@vohwinkelh0啊...这是一个更难解决的问题。据我了解,该文件更多是为了跟踪最新的生产版本,这样就不会混淆生产和测试版本。
我不确定需要多少代码跟踪,但我会找到发布的插件文件的创建位置,并基本上将其复制为新方法。 我基本上会制作一个包含所有 testpublishedaddins 的附加文件。 然后我会在测试部署完成后运行这个新方法。
在您的更新代码中,可以设置它,以便对于 PROD 插件,它将检查 publishedaddin 文件中的更新...如果它是 TEST 插件,它将检查 testpublishedaddin 文件。
我不确定为此所需的实际代码工作量,但这是我的方向。
回复:加载项管理器我现在的处理方式是文件名实际上是一样的,文件夹结构也是一样的。 在我添加的 updateCheck.jsl 中:
If( customMetadata_aa["state"] == "TEST",
addinLoc = "\\xxx\JMP_Addin\TEST\xxx_META\";
);所以基本上不依赖于插件的状态,它会在任一文件夹中查找。 我希望它就像将不同的位置传递给写出 publishedAddins.jsl 的函数一样简单。
希望这会激发一个想法......
回复:加载项管理器我相信该位置是通过为每个插件设置的表格传递的。 因此,无论“状态”如何,给定的插件都会在给定的位置发布插件位置。 而且我不确定该位置是如何传递的,或者在代码进行中的时间。 如果是测试部署,我认为不会调用编写文件的代码,因此您也需要更新它。
回复:加载项管理器@nathan-clark写道:我不能具体说你所看到的。 尽管。 我在编辑 .jmpcust 文件时从未遇到过任何问题,除非我犯了一个错误。
嗯,奇怪。 在我的系统上情况更糟——实际上是这样的:
导入代码后加载项管理器,一切看起来都很好。
但是一旦我通过加载项管理器功能,整体工具栏设置将从 .jmpcust 文件中删除(菜单设置仍将存在)。
我很惊讶这种行为只能在我的 PC 上观察到 - 怎么了?
下面是一个示例 .jmpcust 代码,用于在您的 PC 上进行测试。
通过加载项管理器添加命令后,带有显示/隐藏图例按钮将消失:(
<!-- JMP Add-In Builder created --><MENU_AND_TOOLBAR_CUSTOMIZATIONS jm="http://www.jmp.com/ns/menu" version="3">
<INSERT_IN_MAIN_MENU>
<INSERT_IN_MENU>
<NAME>ADD-INS</NAME>
<INSERT_AFTER>
<NAME></NAME>
<COMMAND>
<NAME>TEST</NAME>
test
<ACTION type="text">print(1);</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</INSERT_AFTER>
</INSERT_IN_MENU>
</INSERT_IN_MAIN_MENU>
<TOOLBAR>
<NAME>TEST.TEST: ADD-IN TOOLBAR</NAME>
test.test: Add-In Toolbar
<COMMAND>
<NAME>SHOW/HIDE LEGEND</NAME>
show/hide legend
<ACTION type="text">local({first_gb},
Try(
first_gb = (Current Report() << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1] << Get Scriptable Object;
first_gb << show legend (!(Report(first_gb)[LegendBox( 1 )] << get width));
)
);</ACTION>
<ICON type="none"></ICON>
</COMMAND>
</TOOLBAR>
</MENU_AND_TOOLBAR_CUSTOMIZATIONS>回复:加载项管理器谢谢!@hogi
你能发送一个屏幕截图来说明应该是什么样子吗? 我以前从未见过或使用过工具栏键。
回复:加载项管理器这是添加工具栏的方式:

可以在此处找到有关什么是工具栏及其工作方式的一般说明:
https://community.jmp.com/t5/JMP-Add-Ins/Add-In-Manager/tac-p/574113/highlight/true#M1661
回复:加载项管理器@hogi好的...我想我看到发生了什么事。虽然我不确定我有一个很好的答案。查看插件管理器,它没有任何工具栏选项(在“菜单项”选项卡中,热点菜单),这让我相信它可能没有与 .jmpcust 文本的重建集成以包含工具栏,这就是为什么你的文本迷路。
除了手动编辑您的 .jmpcust 文件外,我没有真正的解决方法。 我将我的代码保存在存储库中,并使用主要用于部署系统的插件管理器手动编辑我的 addin.def 和 addin.jmpcust 文件,因此我没有遇到您在这里看到的问题。
回复:加载项管理器你好,
我刚刚开始构建一个加载项,在将其部署给我的同事之前,我想了解如何管理它并使用此实用程序加载项部署加载项。我在以自动更新的方式设置加载项时遇到了一些困难。
- 选中首选项中的“包括更新检查脚本”选项。
- 包含检查更新的代码片段。
- “my.jmp.addin”针对我尝试的每个插件版本尝试进行了修改。 “加载项 ID”
- 使用此实用程序可以轻松创建和安装插件。 遵循插件管理器用户指南第 5-8 页上的步骤。 这是我将用于“升级”的基本版本加载项。
- PROD 中安装的插件
- 使用与步骤 1 相同的方法创建一个新的加载项,但代码片段已针对新的“加载项 ID”进行了更新,“常规信息”>“定义”中的版本也已更新。这个版本的“更新”脚本有自己的文件夹树。
- 在 PROD 中部署的加载项
- 从第 1 步运行加载项
- 没有弹出窗口要求更新加载项。 通过对文本框的文本进行少量更改来验证
如果所有内容都在自己单独的文件夹中,我不认为我理解第 1 步和第 2 步中的脚本将如何比较它们的版本的链接。 源文件夹中的所有元数据和其他文件都已成功创建。任何指导将不胜感激!
回复:加载项管理器@贾斯汀奇尔顿或其他任何人,对我上面的帖子有任何指导吗?
编辑:我无法为更新设置相同的加载项 ID。 加载项管理器似乎需要相同的加载项 ID 才能使日期功能正常工作。 在我尝试为其分配一个加载项 ID 之前,加载项更新的每个测试都有自己的文件夹。

回复:加载项管理器@StarfruitBob
我不确定我是否完全理解你在做什么。 但是插件 ID 必须是完全唯一的,并且任何两个插件都不能具有相同的 addinID——即使它们只是不同的版本。
当我执行插件更新时,我在一个包含更新代码的文件夹中进行版本控制。 然后我将该代码复制到插件管理器的“源”文件夹中。 然后我可以使用相同的 addinID 和插件名称打包插件(或更新名称以反映版本)。
也许我对您要为“更新”做什么感到困惑?
回复:加载项管理器@nathan-clark
我想为我的插件推出错误修复、更新和新功能。我想我发现了其中一个问题。 当我查看 customMetadata.jsl 时,“state”是“DEV”,而不是 updateCheck.jsl 所要求的“PROD”。这听起来可能很愚蠢,但我不知道如何在不手动更新 jsl 的情况下将其发布到 PROD,我希望避免这种情况。对于我的插件,我已经构建,然后部署 (PROD) 并最终安装 (PROD)。 我不知道我还能做些什么来用插件管理器改变它。
阅读插件的帮助文档后,似乎没有列出您用来更新插件的方法。当你说版本控制时,你是指一个文件夹,它不仅包含更新的代码,还包含更新的 customMetadata.jsl 和其他由插件管理器生成的文件?
更奇怪的是,当我查看我的 PROD 文件夹时,在我的 Source 文件夹中,publishedAddins.jsl 确实包含我一直试图更新的插件。 我的 Archive 文件夹也有存档的插件,但是当我转到 JMP 的插件菜单并单击我的插件时,没有弹出新版本插件可用的消息。 它停留在我发布的第一个版本。我显然对整个过程有很多误解。
回复:加载项管理器@StarfruitBob
部署 PROD 就像部署插件时的下拉菜单一样简单。 您可以构建插件,将其作为 DEV .. 然后您可以将插件部署为 TEST 或 PROD,为您更新自定义元数据文件。
PROD 部署还将更新已发布的插件文件...在您设置 DEV、TEST 和 PROD 文件夹位置时在表中设置。
updatecheck 脚本应使用 PROD、加载的自定义元数据文件(本地插件)的插件日期,并将其与具有插件最新构建日期的已发布插件文件进行比较。 如果插件的最新构建日期比安装插件的日期更新,则应提示用户进行更新。
我知道我的基础设施需要一些额外的工作来确保所有的点都对齐(文件位置访问等),但我认为 PROD depolyment 可以为您解决大部分问题。
回复:加载项管理器我认为部署到 PROD 是我们都怀疑的问题之一。我只是尝试构建我的插件的另一个版本,在构建它之后,我注意到 customMetadata.jsl 确实有“state”=“DEV”,然后我退出了那个窗口。当我从插件管理器的主开发窗口中选择这个新版本的插件,然后将其部署到 PROD 时,customMetadata.jsl 仍然声明插件在 DEV 中。
为了对此进行更多测试,我手动将新版本插件的状态从 DEV 更改为 PROD,保存,然后从 JMP 的插件菜单中单击我的插件。插件没有提示我更新。 这向我表明我还缺少其他东西。
我检查了我的加载项代码以确保要添加的代码的更新检查部分已过时并使用旧的加载项 ID。 我更新了它,然后检查 customMetadata.jsl 以查看是否进行了任何更改。 state = DEV 再次,即使我部署到 PROD。好的..
新版本测试:更新了唯一 ID 和次要文本,但在插件中很容易看到。 确保代码的更新检查部分已插入并更新以匹配唯一的插件 ID。 内置插件。 部署到 PROD。 元数据文件仍然说已部署到 DEV…。
回顾:
- 发现我的一些插件版本没有更新更新检查代码 --> 更新所有版本以匹配每个插件的唯一 ID
- 发现 customMetadata.jsl 没有被更新 "state" = DEV --> PROD
- 我的插件的重建、重新部署和重新安装(到 PROD)v1
- 重建和重新部署(到 PROD)我的插件的其他版本
- 手动设置所有 customMetadata.jsl "state" = PROD
- JMP 无法识别此插件的更新
- PROD 文件夹:Source,publishedAddins.jsl 确实记录了我部署的所有版本
- PROD 文件夹:存档,由于我完成的所有测试,插件的多个备份
回复:加载项管理器嗯....
使用插件管理器重新开始并更新到没有部署痕迹的新文件夹可能是值得的。
通常,我单击“构建”按钮,在 DEV 中创建所有内容...然后我可以单击“部署”按钮并单击“生产”,它将在我的“生产”文件夹中创建插件,.jmpaddin 中的元数据表示生产以及已发布的插件文件使用该部署的构建日期进行更新。
回复:加载项管理器这是我所做的@nathan-clark @贾斯汀奇尔顿
- 我已经注销并删除了插件管理器中的所有插件(我正在测试)
- 未注册插件管理器以将其作为插件从 JMP 中删除
- 删除了我所有包含我一直在做的插件测试的 DEV 和 PROD 文件
- 重新下载插件管理器并安装
- 创建了新的加载项
- 构建 --> 部署的 PROD --> 安装的 PROD
- 检查此 v1 的 customMetadata.jsl --> "state" = DEV
有小费吗?:做鬼脸:
回复:加载项管理器@StarfruitBob
嗯... 我没主意了。 我得把它传给@贾斯汀奇尔顿
回复:加载项管理器@Justin_Chilton插件管理器如何存储设置?
我可以导出它们并发送给同事吗?
是否保存安装更新版本的插件管理器 - 或者这会重置设置?
回复:加载项管理器@Justin_Chilton我是加载项管理器的粉丝! 在过去的三年里,我一直在用它构建加载项和菜单结构。 最近,我遇到了 JMP 17+ 的问题 - 简而言之:如果我在插件管理器中创建一个新的空白插件和一个自定义顶级菜单,然后在保存时创建一个或多个子菜单并单击“保存”除顶级菜单项外,所有子菜单都会消失。 这曾经在 JMP 14、15 和 16 中完美运行。 我是否做错了什么或者与 JMP 17 存在兼容性问题 - 日志没有显示错误。
我使用的是 AIM v3.1、Windows 10 Enterprise 和 JMP Pro 17.1.0
回复:加载项管理器这里同样的问题
插件管理器描述
插件管理器使您能够轻松构建和重新构建加载项文件、随着时间的推移管理加载项的版本、直接访问源文件以及为您的加载项进行额外的自定义。 现在有了 2.0 版本插件管理器,您现在可以控制整个 JSL 应用程序开发生命周期,因为您可以直接从插件管理器!
快速构建插件
的基本特征是插件管理器是直接从源文件构建 JMP 插件文件的能力。 这个功能最初包含在我的自定义插件生成器插件和插件管理器采用了该插件的基础知识并对其进行了改进。

为用户部署加载项
随着2.0版本的插件管理器,您现在可以直接从插件管理器。 您可以部署到测试位置以供用户测试您的加载项,也可以部署到生产位置。

部署到 PROD 时,带有关联数组的 JSL 脚本会自动更新为最新的发布日期/时间。 自动生成的“updateCheck.jsl”脚本可以使用此关联数组,该脚本可以将用户加载项的构建日期与根据关联数组的构建日期进行比较。 如果有更新版本的加载项可用,用户将看到以下窗口,可以在其中选择更新到最新版本。 这个使用关联数组来检查更新的概念改编自@brady_brady的使用带有发布日期的表格的方法。 该方法描述于@杰夫·珀金森的帖子如何编写自更新 JMP 插件。

管理加载项的版本
插件管理器能够在每次构建新的加载项文件时自动保留加载项文件的版本历史记录。 它允许您安装、恢复或删除以前版本的加载项。 您可以选择为每个版本添加注释,以便您可以跟踪每个版本中进行了哪些更改。

进行额外的插件自定义
插件管理器允许您对加载项进行一些自定义,而以前需要手动更改 XML。 以下是可用的额外自定义插件管理器。
- 最大 JMP 版本
- 菜单项的内置 JMP 图标
- 在位置之前插入以指定菜单项的位置
- 自定义菜单栏 – 创建您自己的菜单或使用“加载项”以外的现有菜单
- 新在插件管理器2.0:单个插件内的多个主菜单

直接从 JMP 访问源文件
在“文件”选项卡上插件管理器,您可以通过双击表中所需的文件直接从 JMP 打开源文件夹中的文件。

自定义元数据的自动管理
和插件管理器2.0 版本中,除了自动包含和管理的元数据之外,您还可以创建自己的自定义元数据插件管理器。

管理以前安装的加载项
在“已安装”选项卡中,您可以启用、禁用或注册已安装的加载项,也可以注册未安装的加载项。

系统要求
此插件受装有 JMP 13 或更高版本的 Windows 和 Mac 操作系统支持。
博客系列
插件管理器,第 1 部分:定义和构建 JMP 插件
加载项管理器,第 2 部分:向用户部署自动更新加载项
加载项管理器,第 3 部分:高级自定义
变更日志
版本1.1-1.3(2017年10月16日)
- 修复了一些导致加载项抛出错误的情况
- 添加了新的首选项来控制是否显示菜单和工具栏
2.0 版(2017 年 11 月 22 日)
- 添加了对将加载项部署到测试和生产位置的支持。
- 通过可包含在脚本中的关联数组添加了对自定义元数据的支持。
- 添加了在单个加载项中拥有多个主菜单的功能。
- 添加了在菜单项树中复制和粘贴菜单项的功能。
- 添加了对从现有“jmpaddin”文件建立源文件夹的支持。
- 添加了检查直接从 JMP 社区获取的新版本的功能。
- 添加了构建后自动安装加载项的首选项。
- 由于各种原因,删除了对一次构建多个加载项的支持。
- 消除了其他各种错误。
2.1 版(2018 年 2 月 26 日)
- 添加了排除不可见文件和文件夹(即以句点开头的文件/文件夹)的首选项。 如果您使用版本控制系统(例如 Git),这非常有用。
- 现在,在确定您是否安装了最新版本时,将忽略 customMetadata.jsl 文件。
版本 2.2(2018 年 3 月 8 日)
- 修复了添加两个以上顶级主菜单时的问题。
- 在选择屏幕中添加了新图标。 删除了仅在一种操作系统上可用的图标。
版本 2.3(2018 年 4 月 6 日)
- 修复了 Mac 上重命名或删除源文件夹时导致的错误
- 现在,即使您的计算机上没有安装 Consolas 字体,首选项窗口也可以正常工作。
版本 2.4(2020 年 1 月 9 日)
- 允许在其他项目之前或之后插入菜单项,而不是只允许在之后插入。
- 添加 15 和 16 作为最小/最大 JMP 版本号。
2.5 版(2020 年 2 月 5 日)
- 提高了在 JMP 15 中使用 macOS 深色模式和 Windows 高对比度模式时的可读性。
- 修复在 Mac 上打开偏好设置时显示的警报。
版本 2.6(2020 年 6 月 4 日)
- 修复了使用自定义菜单解析加载项的错误。
- 添加了解析错误的诊断信息,以帮助解决未来的问题。
版本 2.7(2020 年 6 月 10 日)
版本 2.8(2020 年 9 月 24 日)
- 修复了使用子文件夹解压缩加载项的问题
- 添加了使用加载项模板时自动创建文件夹的选项(默认情况下打开)。
版本 2.9(2021 年 2 月 4 日)
- 将一些日期格式更改为区域设置格式
- 修复了检查更新功能
3.0 版本(2022 年 1 月 18 日)
- XML 特殊字符(例如“&”)不应再破坏 addin.jmpcust 文件。
版本 3.1(2022 年 3 月 4 日)
版本 3.2(2023 年 9 月 25 日)
如果您发现任何问题,请告诉我!
当前版本=3.2
2.9
加载项管理器使您能够轻松构建和重新构建加载项文件、随着时间的推移管理加载项的版本、直接访问源文件、对加载项进行额外的自定义以及将加载项部署到您的用户。

公用事业回复:加载项管理器@ajniskan @保罗丁,请尝试最新的 v3.2,并告诉我是否可以解决此问题。
回复:加载项管理器@hogi ,加载项管理器的首选项文件位于这些位置。
在 Windows 上:
%APPDATA%\SAS\JMP Add-In Manager\AM.PFS
在苹果机上:
~/Library/Application Support/JMP Add-In Manager/AM.PFS
回复:加载项管理器谢谢@Justin_Chilton用于文件路径 - 以及修复 V3.2 的问题:)
是否计划在未来版本中支持工具栏?
回复:加载项管理器@Justin_Chilton感谢 v3.2 - 它解决了我遇到的问题并且像以前一样工作:)
回复:加载项管理器谢谢!
回复:加载项管理器你好@Justin_Chilton ,
非常感谢您的插件,它挽救了生命!不过,我只是有一个问题:
我有一个加载项,在拥有数十个用户的客户站点上部署和维护。 这个客户有谷歌套件,所以我每次都将新版本放在谷歌驱动器上,用户每次更新都必须检索这个新版本。 我们都同意,这是非常耗时的,没有优化,并且如果用户忘记的话,就会产生错误。 我看到了“加载项管理器”加载项,我想使用它,但我必须指定一个所有用户都必须有权访问的 PROD 文件夹。 通常是共享文件夹... 但我询问过 IT 人员,不可能为所有这些用户创建共享文件夹。 PROD 文件夹必须对应于我传统上存储版本的 google 驱动器目录的网址。 是否可以调整加载项管理器以在共享文件夹的基础上添加网址?