3

前段时间,我们通过 MATLAB App Packager 向用户分发了一个工具箱,以便更轻松地提供未来的更新,而无需用户处理搜索路径。现在,我们希望发布更新版本。通常,重新打包工具箱应该会创建一个新的 .mlappinstall 文件,该文件要求用户进行升级。相反,MATLAB 现在将新版本的应用程序视为独特的新应用程序,并重新安装而不是升级。因此,用户将在“应用程序”窗格中拥有该应用程序两次,一次在过时版本中,一次在新版本中。

我们无法在 MATLAB 文档中或在线找到对此的解释。当我们安装更新的应用程序时(以便两个版本都出现在应用程序窗格中),进一步更改它将按预期升级它,因此很遗憾,我们无法提供最小的工作示例,因为我们无法重现该问题。

问题是: MATLAB 如何建立应用程序的唯一性?应用程序名称和作者字段与原始值相同,并且版本号递增,那么为什么 MATLAB 可能无法识别该应用程序已安装?

4

1 回答 1

1

当您遇到这种不连续性时,您是通过在 Matlab 的文件浏览器中单击原始 .prj 文件重新打包,还是再次运行“Package App”并填写相同的属性?

我认为决定应用程序唯一身份的东西是由“打包应用程序”向导在幕后生成的 GUID。如果您在 Matlab GUI 中打开现有的 .prj,它会重新使用该 GUID。如果您再次运行“Package App”,无论您为各种开发人员可见的应用程序属性输入了什么,您都将获得一个新的 GUID。

您可以在 .prj 和 .mlappinstall 文件中进行挖掘以自己查看。(我也无法在任何地方找到它的文档;我只是浏览了这些文件并进行了一些试验和错误。) .prj 只是 XML,而 .mlappinstall 文件是具有“开放打包约定”布局的 zip 文件。在 .prj 中有一个param.guid包含 GUID 的元素。在 .mlappinstall 中,它位于 metadata/appProperties.xml 中的一个GUID元素中。

如果您再次遇到同样的问题,请确保使用现有的 .prj 文件重新打包。或者,如果您没有它,则在创建新的 .prj 文件后,从旧的 .mlappinstall 文件中从 metadata/appProperties.xml 中挖掘旧的 GUID 并将其复制到新的 .prj 文件中,我认为它'将表现为“相同”的应用程序。这甚至可以让您更改应用程序的名称和联系信息,并且它仍会安装在旧版本之上。

于 2014-05-05T16:46:11.630 回答